Example #1
0
        private async Task RefreshEpisode(TMDbClient client, EpisodeSql episodeSql, int showId)
        {
            TvEpisode tvEpisode = await client.GetTvEpisodeAsync(showId, episodeSql.Season.SeasonNumber, episodeSql.EpisodeNumber, TvEpisodeMethods.ExternalIds, "fr-FR").ConfigureAwait(false);

            if (tvEpisode != null)
            {
                episodeSql.Update(client.Config, tvEpisode);
            }
        }
Example #2
0
        public static void Update(this EpisodeSql episodeBdd, TMDbConfig config, TvEpisode item)
        {
            episodeBdd.PosterUrl = config.Images.SecureBaseUrl + "w300" + item.StillPath;
            episodeBdd.Name      = item.Name;
            episodeBdd.AirDate   = item.AirDate;

            if (item.ExternalIds != null)
            {
                episodeBdd.Providers[ProviderSql.Imdb] = item.ExternalIds.ImdbId;
            }
        }
Example #3
0
        public static Shared.Remote.Episode Convert(this EpisodeSql ep)
        {
            Shared.Remote.Episode episode = new Shared.Remote.Episode(ep.Id)
            {
                EpisodeNumber = ep.EpisodeNumber,
                //Providers = ep.Providers.ToDictionary(
                //    pair => (Provider)Enum.Parse(typeof(Provider), Enum.GetName(typeof(ProviderSql), pair.Key)),
                //    pair => pair.Value),
                PosterUrl = ep.PosterUrl,
                Status    = (EpisodeStatus)Enum.Parse(typeof(EpisodeStatus),
                                                      Enum.GetName(typeof(EpisodeStatusSql), ep.Status)),
                SeasonNumber = ep.Season.SeasonNumber,
                AirDate      = ep.AirDate?.ToString("dd/MM/yyyy"),
                Name         = ep.Name,
            };

            return(episode);
        }
Example #4
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);
        }
Example #5
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());
            }
        }