func TestPendingItems(t *testing.T) { show := store.Show{} episodes := []*store.Episode{ {Pending: true}, {Pending: true}, {Pending: true}, } season1 := store.Season{Season: 1, Episodes: episodes} show.Seasons = append(show.Seasons, &season1) if len(show.PendingSeasons()) != 0 { t.Error("All episodes are pending but it's from the last seasons thus no seasons should be returned, got:", len(show.PendingSeasons())) } if len(show.PendingEpisodes()) != 3 { t.Error("All episodes are pending, got:", len(show.PendingEpisodes())) } episodes = []*store.Episode{ {Pending: true}, {Pending: true}, } season2 := store.Season{Season: 2, Episodes: episodes} show.Seasons = append(show.Seasons, &season2) if len(show.PendingSeasons()) != 1 { t.Error("Expected 2 items representing the episodes of the last season and 1 item representing the first season.") } if len(show.PendingEpisodes()) != 2 { t.Error("Expected 2 items representing the episodes of the last season and 1 item representing the first season.") } }
// SearchTorrents provides some feedback to the user and searches for torrents // for the pending items. func SearchTorrents(show *store.Show) ([]torrents.Torrent, error) { fmt.Printf( "Searching for %d torrents", len(show.PendingSeasons())+len(show.PendingEpisodes()), ) c := startProgressBar() defer stopProgressBar(c) return torrents.Search(show) }
// DisplayPendingEpisodes shows, on stdout, the episodes pending for a // particular show. func DisplayPendingEpisodes(show *store.Show) { xs := show.PendingSeasons() for _, x := range xs { fmt.Printf("Pending: %s season %d\n", show.Title, x.Season) } ys := show.PendingEpisodes() if len(ys) > 10 { fmt.Println("<snip>") ys = ys[len(ys)-10:] } for _, y := range ys { fmt.Printf("Pending: %s season %d episode %d\n", show.Title, y.Season(), y.Episode) } }
func queriesForSeasons(show *store.Show) []queryJob { queries := []queryJob{} for _, season := range show.PendingSeasons() { // ignore Season 0, which are specials and are rarely found and/or // interesting. if season.Season == 0 { continue } snippet := selectSeasonSnippet(show) query := seasonQueryAlternatives[snippet.FormatSnippet](snippet.TitleSnippet, season) queries = append(queries, queryJob{ snippet: snippet, query: query, media: season, season: season.Season, }) } return queries }