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);
            }
        }
Exemple #2
0
        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);
            }
        }