// 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 queriesForEpisodes(show *store.Show) []queryJob { episodes := show.PendingEpisodes() sort.Sort(store.ByAirDate(episodes)) min := math.Min(float64(len(episodes)), float64(batchSize)) queries := []queryJob{} for _, episode := range episodes[0:int(min)] { snippet := selectEpisodeSnippet(show) query := episodeQueryAlternatives[snippet.FormatSnippet](snippet.TitleSnippet, episode) queries = append(queries, queryJob{ snippet: snippet, query: query, media: episode, }) } return queries }
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.") } }