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); } }
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; } }
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); }
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()); } }