Ejemplo n.º 1
0
 private OptionAsync <TvDbEpisodeData> GetTvDbEpisodeAsync(int tvDbSeriesId, int seasonIndex,
                                                           int episodeIndex)
 {
     return(_tvDbClient.GetEpisodesAsync(tvDbSeriesId)
            .MapAsync(episodes =>
                      episodes.Find(e => e.AiredSeason == seasonIndex && e.AiredEpisodeNumber == episodeIndex)));
 }
        public async Task LoadFrom_NoMatchingEpisode_Fails()
        {
            _embyItemData.Identifier.Returns(new ItemIdentifier(4, 1, "Name"));

            _tvDbClient.GetEpisodesAsync(22)
            .Returns(new[]
            {
                TvDbTestData.Episode(1, 1, 1, name: "NonMatch1"),
                TvDbTestData.Episode(1, 4, 2, name: "NonMatch2")
            }.ToList());

            var loader = new TvDbEpisodeFromEmbyData(_sources, _tvDbClient, _titleNormaliser);

            var result = await loader.LoadFrom(_embyItemData);

            result.IsLeft.Should().BeTrue();
            result.IfLeft(f => f.Reason.Should().Be("Failed to find TvDb episode"));
        }
Ejemplo n.º 3
0
        public Task <Either <ProcessFailedResult, ISourceData> > LoadFrom(IEmbyItemData embyItemData)
        {
            var resultContext = new ProcessResultContext(nameof(TvDbEpisodeFromEmbyData), embyItemData.Identifier.Name,
                                                         embyItemData.ItemType);

            var seriesId = embyItemData.GetParentId(MediaItemTypes.Series, _sources.TvDb);

            return(seriesId.ToEitherAsync(resultContext.Failed("No TvDb Id found on parent series"))
                   .BindAsync(id => _tvDbClient.GetEpisodesAsync(id)
                              .ToEitherAsync(resultContext.Failed($"Failed to load parent series with TvDb Id '{id}'")))
                   .BindAsync(episodes => FindEpisode(episodes, embyItemData.Identifier.Name,
                                                      embyItemData.Identifier.Index, embyItemData.Identifier.ParentIndex, resultContext))
                   .MapAsync(CreateSourceData));
        }
        public void Setup()
        {
            _tvDbClient  = Substitute.For <ITvDbClient>();
            _aniDbClient = Substitute.For <IAniDbClient>();

            _tvDbEpisodeA  = TestData.TvDbTestData.Episode(12, 48, 2);
            _tvDbEpisodeB  = TestData.TvDbTestData.Episode(45, 7, 2);
            _aniDbEpisodeA = new AniDbEpisodeData
            {
                RawEpisodeNumber = new EpisodeNumberData
                {
                    RawNumber = "44",
                    RawType   = 1
                }
            };
            _aniDbEpisodeB = new AniDbEpisodeData
            {
                RawEpisodeNumber = new EpisodeNumberData
                {
                    RawNumber = "23",
                    RawType   = 1
                }
            };

            _tvDbClient.GetEpisodesAsync(123)
            .Returns(Option <List <TvDbEpisodeData> > .Some(new List <TvDbEpisodeData> {
                _tvDbEpisodeA, _tvDbEpisodeB
            }));
            _aniDbClient.GetSeriesAsync(77)
            .Returns(Option <AniDbSeriesData> .Some(new AniDbSeriesData
            {
                Episodes = new[] { _aniDbEpisodeA, _aniDbEpisodeB }
            }));

            _mapper = new GroupMappingEpisodeMapper(_tvDbClient, _aniDbClient, new ConsoleLogManager());
        }