public override void Run(IProgress <ICommand> progress = null) { logger.Info("Processing CommandRequest_TvDBUpdateEpisode: {0} ({1})", InfoString, TvDBEpisodeID); try { ReportInit(progress); var ep = TvDBApiHelper.UpdateEpisode(TvDBEpisodeID, DownloadImages, ForceRefresh); if (ep == null) { ReportFinish(progress); return; } ReportUpdate(progress, 25); var xref = Repo.Instance.CrossRef_AniDB_Provider.GetByProvider(CrossRefType.TvDB, ep.SeriesID.ToString()).DistinctBy(a => a.AnimeID); if (xref == null) { ReportFinish(progress); return; } ReportUpdate(progress, 50); foreach (var crossRefAniDbTvDbv2 in xref) { var anime = Repo.Instance.AnimeSeries.GetByAnimeID(crossRefAniDbTvDbv2.AnimeID); if (anime == null) { continue; } var episodes = Repo.Instance.AnimeEpisode.GetBySeriesID(anime.AnimeSeriesID); foreach (SVR_AnimeEpisode episode in episodes) { // Save if ((episode.TvDBEpisode?.Id ?? TvDBEpisodeID) != TvDBEpisodeID) { continue; } Repo.Instance.AnimeEpisode.Touch(episode); } anime.QueueUpdateStats(); } ReportFinish(progress); } catch (Exception ex) { ReportError(progress, $"Error Processing CommandRequest_TvDBUpdateEpisode: {InfoString} ({TvDBEpisodeID})", ex); } }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_TvDBUpdateEpisode: {0} ({1})", InfoString, TvDBEpisodeID); try { var ep = TvDBApiHelper.UpdateEpisode(TvDBEpisodeID, DownloadImages, ForceRefresh); if (ep == null) { return; } var xref = RepoFactory.CrossRef_AniDB_TvDBV2.GetByTvDBID(ep.SeriesID).DistinctBy(a => a.AnimeID); if (xref == null) { return; } foreach (var crossRefAniDbTvDbv2 in xref) { var anime = RepoFactory.AnimeSeries.GetByAnimeID(crossRefAniDbTvDbv2.AnimeID); if (anime == null) { continue; } var episodes = RepoFactory.AnimeEpisode.GetBySeriesID(anime.AnimeSeriesID); foreach (SVR_AnimeEpisode episode in episodes) { // Save if ((episode.TvDBEpisode?.Id ?? TvDBEpisodeID) != TvDBEpisodeID) { continue; } episode.TvDBEpisode = null; RepoFactory.AnimeEpisode.Save(episode); } anime.QueueUpdateStats(); } } catch (Exception ex) { logger.Error(ex, "Error Processing CommandRequest_TvDBUpdateEpisode: {0} ({1})", InfoString, TvDBEpisodeID); } }