Добавил еще провайдер TVMaze
This commit is contained in:
@@ -39,16 +39,31 @@ func (r *Recognizer) matchMetadata(ctx context.Context, plan Plan) *Match {
|
||||
continue
|
||||
}
|
||||
c := strong[0]
|
||||
match := &Match{Provider: c.Provider, ProviderID: c.ID, Title: c.Title, Year: c.Year}
|
||||
|
||||
// Число серий тянем по нативному id провайдера.
|
||||
var counts map[int]int
|
||||
if mt == metadata.Series {
|
||||
if counts, cerr := p.SeasonEpisodeCounts(ctx, c.ID); cerr == nil {
|
||||
match.SeasonEpisodeCounts = counts
|
||||
if got, cerr := p.SeasonEpisodeCounts(ctx, c.ID); cerr == nil {
|
||||
counts = got
|
||||
} else {
|
||||
r.log.Warn("recognize: episode counts failed",
|
||||
"provider", p.Name(), "id", c.ID, "err", cerr)
|
||||
}
|
||||
}
|
||||
return match
|
||||
|
||||
// Провенанс и тег папки — по внешнему id, если провайдер его дал
|
||||
// (TVMaze отдаёт TVDB/IMDb-id); иначе по самому провайдеру.
|
||||
prov, pid := c.Provider, c.ID
|
||||
if c.TagProvider != "" {
|
||||
prov, pid = c.TagProvider, c.TagID
|
||||
}
|
||||
return &Match{
|
||||
Provider: prov,
|
||||
ProviderID: pid,
|
||||
Title: c.Title,
|
||||
Year: c.Year,
|
||||
SeasonEpisodeCounts: counts,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -88,6 +88,30 @@ func TestMatchMetadata_OriginalTitle(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchMetadata_TagFromExternal(t *testing.T) {
|
||||
// TVMaze-стиль: нативный id для счёта серий, внешний TVDB-id для тега.
|
||||
p := &fakeProvider{
|
||||
name: "tvmaze",
|
||||
candidates: []metadata.Candidate{
|
||||
{Provider: "tvmaze", ID: "1", Title: "Fargo", Year: 2014, TagProvider: "tvdb", TagID: "269613"},
|
||||
},
|
||||
counts: map[int]int{1: 10},
|
||||
}
|
||||
r := recognizerWith(p)
|
||||
m := r.matchMetadata(context.Background(),
|
||||
Plan{Type: MediaSeries, Title: "Fargo", Year: 2014})
|
||||
if m == nil {
|
||||
t.Fatal("expected match")
|
||||
}
|
||||
// Провенанс/тег — внешний TVDB-id, а не нативный tvmaze.
|
||||
if m.Provider != "tvdb" || m.ProviderID != "269613" {
|
||||
t.Errorf("match provider = %s/%s, want tvdb/269613", m.Provider, m.ProviderID)
|
||||
}
|
||||
if m.SeasonEpisodeCounts[1] != 10 {
|
||||
t.Errorf("counts not fetched by native id: %+v", m.SeasonEpisodeCounts)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchMetadata_SeriesFetchesCounts(t *testing.T) {
|
||||
p := &fakeProvider{
|
||||
candidates: []metadata.Candidate{{ID: "60622", Title: "Fargo", Year: 2014}},
|
||||
|
||||
Reference in New Issue
Block a user