Пример #1
0
        private Task <Either <ProcessFailedResult, AniDbEpisodeData> > MapEpisodeDataAsync(int aniDbSeriesId,
                                                                                           TvDbSeriesData tvDbSeriesData, TvDbEpisodeData tvDbEpisodeData, ProcessResultContext resultContext)
        {
            var seriesMapping = _mappingList.GetSeriesMappingsFromTvDb(tvDbSeriesData.Id, resultContext)
                                .BindAsync(sm => sm.Where(m => m.Ids.AniDbSeriesId == aniDbSeriesId)
                                           .Match(
                                               () => resultContext.Failed(
                                                   $"No series mapping between TvDb series Id '{tvDbSeriesData.Id}' and AniDb series id '{aniDbSeriesId}'"),
                                               Prelude.Right <ProcessFailedResult, ISeriesMapping>,
                                               (head, tail) =>
                                               resultContext.Failed(
                                                   $"Multiple series mappings found between TvDb series Id '{tvDbSeriesData.Id}' and AniDb series Id '{aniDbSeriesId}'")));

            return(seriesMapping.BindAsync(sm =>
            {
                var episodeGroupMapping = sm.GetEpisodeGroupMapping(tvDbEpisodeData.AiredEpisodeNumber,
                                                                    tvDbEpisodeData.AiredSeason);

                var aniDbEpisodeData = _episodeMapper.MapTvDbEpisodeAsync(tvDbEpisodeData.AiredEpisodeNumber,
                                                                          sm, episodeGroupMapping);

                return aniDbEpisodeData.ToEither(resultContext.Failed(
                                                     $"Failed to find a corresponding AniDb episode in AniDb series id '{aniDbSeriesId}'"));
            }));
        }
Пример #2
0
        private AniDbEpisodeData SetUpEpisodeMapping(int tvDbEpisodeIndex, int aniDbEpisodeIndex, ISeriesMapping seriesMapping, string title)
        {
            var aniDbEpisodeData = new AniDbEpisodeData
            {
                RawEpisodeNumber = new EpisodeNumberData
                {
                    RawNumber = aniDbEpisodeIndex.ToString(),
                    RawType   = 1
                },
                Titles = new []
                {
                    new EpisodeTitleData
                    {
                        Title = title
                    }
                }
            };

            _sources.AniDb.SelectTitle(aniDbEpisodeData.Titles, "en", Arg.Any <ProcessResultContext>())
            .Returns(title);

            _episodeMapper.MapTvDbEpisodeAsync(tvDbEpisodeIndex, seriesMapping, Option <EpisodeGroupMapping> .None)
            .Returns(aniDbEpisodeData);

            return(aniDbEpisodeData);
        }