Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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());
            }
        }
Exemplo n.º 7
0
 public static void Update(this SeasonSql seasonBdd, ITraktUserHiddenItem item)
 {
     seasonBdd.Blacklisted = true;
 }