public bool RefreshMissingEpisodes(IDatabase database) { List <ShowSql> result = new List <ShowSql>(); var show = new ShowSql(true) { Id = 99718, Name = "Westworld", Providers = new Dictionary <ProviderSql, string> { { ProviderSql.Imdb, "tt0475784" }, { ProviderSql.Tmdb, "63247" } }, }; var season = new SeasonSql() { SeasonNumber = 2, }; season.Episodes = new List <EpisodeSql> { new EpisodeSql() { EpisodeNumber = 3, Status = EpisodeStatusSql.Missing }, new EpisodeSql() { EpisodeNumber = 4, Status = EpisodeStatusSql.Missing }, new EpisodeSql() { EpisodeNumber = 5, Status = EpisodeStatusSql.Collected } }; show.Seasons = new List <SeasonSql> { season }; result.Add(show); result.Add(new ShowSql(true) { Id = 123, Name = "z fake", }); result.Add(new ShowSql(true) { Id = 456, Name = "9 fake", }); database.AddOrUpdateShows(result); return(true); }
public static Shared.Remote.Season Convert(this SeasonSql sea) { Shared.Remote.Season season = new Shared.Remote.Season(sea.Id) { SeasonNumber = sea.SeasonNumber, Blacklisted = sea.Blacklisted, Episodes = sea.Episodes.Select(s => s.Convert()).ToList(), }; return(season); }
private SeasonSql GetSeason(ShowSql show, int seasonNumber) { SeasonSql localSeason = null; lock (ShowLock()) { localSeason = show.Seasons.SingleOrDefault(s => s.SeasonNumber == seasonNumber); if (localSeason == null) { localSeason = new SeasonSql(show) { SeasonNumber = seasonNumber, }; show.Seasons.Add(localSeason); } } return(localSeason); }
private async Task <List <ShowSql> > RefreshSeasonHiddenItem(IDatabase database, List <ShowSql> shows) { Dictionary <uint, ShowSql> res = shows.ToDictionary(s => s.Id); TraktPagedResponse <ITraktUserHiddenItem> hiddenSeason = await Client.Users.GetHiddenItemsAsync(TraktHiddenItemsSection.ProgressCollected, TraktHiddenItemType.Season).ConfigureAwait(false); TraktPagedResponse <ITraktUserHiddenItem> hiddenSeasonRes = hiddenSeason; foreach (ITraktUserHiddenItem traktUserHiddenItem in hiddenSeasonRes) { ShowSql localShow = res.ContainsKey(traktUserHiddenItem.Show.Ids.Trakt) ? res[traktUserHiddenItem.Show.Ids.Trakt] : GetShow(database, traktUserHiddenItem.Show.Ids.Trakt); SeasonSql localSeason = GetSeason(localShow, traktUserHiddenItem.Season.Number.Value); localSeason.Update(traktUserHiddenItem); res[localShow.Id] = localShow; } return(res.Values.ToList()); }
private EpisodeSql GetEpisode(SeasonSql season, int episodeNumber) { EpisodeSql localEpisode = null; lock (ShowLock()) { localEpisode = season.Episodes.SingleOrDefault(s => s.EpisodeNumber == episodeNumber); if (localEpisode == null) { localEpisode = new EpisodeSql(season) { EpisodeNumber = episodeNumber, Status = EpisodeStatusSql.Unknown, }; season.Episodes.Add(localEpisode); } } return(localEpisode); }
private async Task HandleProgress(TraktShow traktShow, ShowSql bddShow) { // Remove Season blacklist traktShow.Seasons.RemoveAll(s => bddShow.Seasons.Any(b => b.SeasonNumber == s.Season && b.Blacklisted)); if (traktShow.Seasons.Any()) { TraktResponse <TraktNet.Objects.Get.Shows.ITraktShowCollectionProgress> collectionProgress = await Client.Shows.GetShowCollectionProgressAsync(traktShow.Id.ToString(), false, false, false).ConfigureAwait(false); TraktResponse <TraktNet.Objects.Get.Shows.ITraktShowCollectionProgress> collectionProgressRes = collectionProgress; foreach (ITraktSeasonCollectionProgress season in collectionProgressRes.Value.Seasons) { TraktSeason misSeason = traktShow.Seasons.SingleOrDefault(e => e.Season == season.Number); if (misSeason == null) { misSeason = new TraktSeason { Season = season.Number.Value }; traktShow.Seasons.Add(misSeason); } foreach (ITraktEpisodeCollectionProgress episode in season.Episodes) { // Already existing in missing if (misSeason.MissingEpisodes.All(m => m.Episode != episode.Number)) { misSeason.MissingEpisodes.Add(new TraktEpisode { Episode = episode.Number.Value, Collected = episode.Completed.HasValue && episode.Completed.Value }); } } } foreach (TraktSeason showSeason in traktShow.Seasons) { SeasonSql season = GetSeason(bddShow, showSeason.Season); // BlackList Ended series if complete if ((traktShow.Status == TraktShowStatus.Ended || traktShow.Status == TraktShowStatus.Canceled) && !showSeason.MissingEpisodes.Any()) { season.Blacklisted = true; } if (!season.Blacklisted) { // Save missing episode foreach (TraktEpisode missingEpisode in showSeason.MissingEpisodes) { EpisodeSql ep = GetEpisode(season, missingEpisode.Episode); ep.Status = missingEpisode.Collected || missingEpisode.Watched ? EpisodeStatusSql.Collected : EpisodeStatusSql.Missing; } } // Remove watched from missing showSeason.MissingEpisodes.RemoveAll(m => m.Watched); // Remove collected from missing showSeason.MissingEpisodes.RemoveAll(m => m.Collected); } traktShow.Seasons.RemoveAll(s => !s.MissingEpisodes.Any()); } }
public static void Update(this SeasonSql seasonBdd, ITraktUserHiddenItem item) { seasonBdd.Blacklisted = true; }