public void GetGenres_TagWeightUnder400_IgnoresTags() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 100, Name = "Tag1" }, new TagData { Id = 46, Weight = 399, Name = "Tag2" } }; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, false); genres.Should().BeEmpty(); }
public void GetPeople_HasCharacters_ReturnsPersonInfo() { var series = new AniDbSeriesData { Characters = new[] { new CharacterData { Name = "CharacterName", Seiyuu = new SeiyuuData { PictureFileName = "Picture.jpg", Name = "Reverse Name" } } } }; var aniDbParser = new AniDbParser(); var person = aniDbParser.GetPeople(series).Single(); person.ImageUrl.Should().Be("http://img7.anidb.net/pics/anime/Picture.jpg"); person.Type.Should().Be(PersonType.Actor); person.Role.Should().Be("CharacterName"); }
public void GetGenres_HasTags_ReturnsTagNames() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 400, Name = "Tag1" }, new TagData { Id = 46, Weight = 400, Name = "Tag2" } }; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, false); genres.Should().BeEquivalentTo("Tag1", "Tag2"); }
public void GetGenres_MoreTagsThanMaxGenres_TakesHighestWeighted() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 400, Name = "Tag1" }, new TagData { Id = 46, Weight = 500, Name = "Tag2" } }; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 1, false); genres.Should().BeEquivalentTo("Tag2"); }
public IEnumerable <PersonInfo> GetPeople(AniDbSeriesData aniDbSeriesData) { var characters = aniDbSeriesData.Characters?.Where(c => c.Seiyuu != null) .Select( c => new PersonInfo { Name = ReverseName(c.Seiyuu.Name), ImageUrl = c.Seiyuu?.PictureUrl, Type = PersonType.Actor, Role = c.Name }) .ToList() ?? new List <PersonInfo>(); var creators = aniDbSeriesData.Creators?.Where(c => this.creatorTypeMappings.ContainsKey(c.Type)) .Select( c => new PersonInfo { Name = ReverseName(c.Name), Type = this.creatorTypeMappings[c.Type] }) ?? new List <PersonInfo>(); return(characters.Concat(creators)); }
public void Setup() { _sources = Substitute.For <ISources>(); _embyItemData = Substitute.For <IEmbyItemData>(); _embyItemData.Identifier.Returns(new ItemIdentifier(67, 1, "Name")); _embyItemData.Language.Returns("en"); var aniDbSource = Substitute.For <IAniDbSource>(); _sources.AniDb.Returns(aniDbSource); _mediaItem = Substitute.For <IMediaItem>(); _mediaItem.EmbyData.Returns(_embyItemData); _mediaItem.ItemType.Returns(MediaItemTypes.Episode); _aniDbEpisodeMatcher = Substitute.For <IAniDbEpisodeMatcher>(); _aniDbSeriesData = new AniDbSeriesData().WithStandardData(); _aniDbEpisodeData = new AniDbEpisodeData { RawEpisodeNumber = new EpisodeNumberData { RawNumber = "67", RawType = 1 }, Titles = new[] { new EpisodeTitleData { Title = "Title" } } }; }
private string[] AddGenres(AniDbSeriesData s, string[] genres, int maxGenres, bool addAnimeGenre) { var genresList = genres.ToList(); genresList.AddRange(this.aniDbParser.GetGenres(s, maxGenres, addAnimeGenre)); return(genresList.ToArray()); }
public void SeriesMappings_DontMapEmptyFields() { var source = new AniDbSeriesData { StartDate = null, EndDate = null, Description = null, Ratings = new PermanentRatingData[] { } }; var aniDbParser = Substitute.For <IAniDbParser>(); var target = new MetadataResult <Series> { Item = new Series() }; var aniDbSourceMappingConfiguration = new AniDbSourceMappingConfiguration(aniDbParser, _titleSelector); aniDbSourceMappingConfiguration.GetSeriesMappings(1, true, true, TitleType.Localized, "en") .Where(m => !m.CanApply(source, target)) .Select(m => m.TargetPropertyName) .Should() .BeEquivalentTo(nameof(target.Item.PremiereDate), nameof(target.Item.EndDate), nameof(target.Item.Overview), nameof(target.Item.CommunityRating)); }
public void GetTags_ConfiguredForExtraGenresToTags_ReturnsExcessGenres() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 400, Name = "Tag1" }, new TagData { Id = 46, Weight = 500, Name = "Tag2" } }; var aniDbParser = new AniDbParser(); var tags = aniDbParser.GetTags(series, 2, true); tags.Should().BeEquivalentTo("Tag1"); }
public void GetGenres_TooManyTags_IncludesAnimeGenre() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 500, Name = "Tag1" }, new TagData { Id = 46, Weight = 400, Name = "Tag2" } }; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, true); genres.Should().BeEquivalentTo("Anime", "Tag1"); }
public void GetGenres_HasTags_ReturnsTagNamesProperCased() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = 55, Weight = 400, Name = "tag name A" }, new TagData { Id = 46, Weight = 400, Name = "aNotheR tag name" } }; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, false); genres.Should().BeEquivalentTo("Tag Name A", "Another Tag Name"); }
public static AniDbSeriesData WithoutTags(this AniDbSeriesData aniDbSeriesData) { aniDbSeriesData = aniDbSeriesData.WithStandardData(); aniDbSeriesData.Tags = null; return(aniDbSeriesData); }
private Either <ProcessFailedResult, AniDbEpisodeData> GetAniDbEpisodeData(AniDbSeriesData aniDbSeriesData, IEmbyItemData embyItemData, ProcessResultContext resultContext) { return(this.aniDbEpisodeMatcher.FindEpisode(aniDbSeriesData.Episodes, embyItemData.Identifier.ParentIndex, embyItemData.Identifier.Index, embyItemData.Identifier.Name) .ToEither(resultContext.Failed("Failed to find episode in AniDb"))); }
public IEnumerable <string> GetStudios(AniDbSeriesData aniDbSeriesData) { if (aniDbSeriesData.Creators == null) { return(new List <string>()); } return(aniDbSeriesData.Creators.Where(c => c.Type == "Animation Work").Select(c => c.Name)); }
public void GetGenres_NoTags_ReturnsEmpty() { var series = new AniDbSeriesData().WithoutTags(); var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 1, false); genres.Should().BeNullOrEmpty(); }
public void SeasonMappings_MapsAllFields() { var source = new AniDbSeriesData { StartDate = new DateTime(2017, 1, 2, 3, 4, 5), EndDate = new DateTime(2017, 5, 4, 3, 2, 1), Description = "Description", Ratings = new[] { new PermanentRatingData { Value = 45 } } }; var aniDbParser = Substitute.For <IAniDbParser>(); aniDbParser.FormatDescription("Description").Returns("FormattedDescription"); aniDbParser.GetGenres(source, 1, true).Returns(new List <string> { "Genre" }); aniDbParser.GetTags(source, 1, true).Returns(new List <string> { "Tags" }); aniDbParser.GetStudios(source).Returns(new List <string> { "Studio" }); var target = new MetadataResult <Season> { Item = new Season() }; var aniDbSourceMappingConfiguration = new AniDbSourceMappingConfiguration(aniDbParser, _titleSelector); aniDbSourceMappingConfiguration.GetSeasonMappings(1, true, TitleType.Localized, "en") .Select(m => m.CanApply(source, target)) .Count(v => v) .Should() .Be(7); aniDbSourceMappingConfiguration.GetSeasonMappings(1, true, TitleType.Localized, "en") .Iter(m => m.Apply(source, target)); target.Item.PremiereDate.Should().Be(new DateTime(2017, 1, 2, 3, 4, 5)); target.Item.EndDate.Should().Be(new DateTime(2017, 5, 4, 3, 2, 1)); target.Item.Overview.Should().Be("FormattedDescription"); target.Item.Genres.Should().BeEquivalentTo("Genre"); target.Item.Studios.Should().BeEquivalentTo("Studio"); target.Item.Tags.Should().BeEquivalentTo("Tags"); target.Item.CommunityRating.Should().Be(45); }
private AniDbSeriesData SetUpAniDbSeriesData(int id) { var seriesData = new AniDbSeriesData().WithStandardData(); seriesData.Id = id; _embyData.GetParentId(MediaItemTypes.Series, _aniDbSource).Returns(id); _aniDbSource.GetSeriesData(_mediaItem.EmbyData, Arg.Any <ProcessResultContext>()).Returns(seriesData); return(seriesData); }
public void GetPeople_NullCreators_ReturnsEmpty() { var series = new AniDbSeriesData { Characters = new CharacterData[0] }; var aniDbParser = new AniDbParser(); aniDbParser.GetPeople(series).Should().BeEmpty(); }
public void GetGenres_AddAnimeGenreIsTrue_AddsAnimeGenre() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new TagData[0]; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, true); genres.Should().BeEquivalentTo("Anime"); }
public void GetGenres_AddAnimeGenreIsFalse_DoesNotAddAnimeGenre() { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new TagData[0]; var aniDbParser = new AniDbParser(); var genres = aniDbParser.GetGenres(series, 2, false); genres.Should().BeEmpty(); }
public void FormatDescription_NoDescription_DoesNotThrow() { var series = new AniDbSeriesData().WithStandardData(); series.Description = null; var aniDbParser = new AniDbParser(); Action action = () => aniDbParser.FormatDescription(series.Description); action.Should().NotThrow(); }
public async Task GetSeriesData_ReturnsSeries() { var embyItemData = EmbyItemData("Name", 56); var seriesData = new AniDbSeriesData(); _aniDbClient.GetSeriesAsync(56).Returns(Option <AniDbSeriesData> .Some(seriesData)); var result = await _aniDbSource.GetSeriesData(embyItemData, new ProcessResultContext("", "", null)); result.IsRight.Should().BeTrue(); result.IfRight(r => r.Should().BeSameAs(seriesData)); }
public void GetPeople_CharactersWithoutSeiyuu_ReturnsEmpty() { var series = new AniDbSeriesData { Characters = new[] { new CharacterData() } }; var aniDbParser = new AniDbParser(); aniDbParser.GetPeople(series).Should().BeEmpty(); }
public void GetPeople_HasCreatorsAndCharacters_ReturnsBoth() { var series = new AniDbSeriesData { Characters = new[] { new CharacterData { Name = "CharacterName1", Seiyuu = new SeiyuuData { PictureFileName = "Picture1.jpg", Name = "NameA" } }, new CharacterData { Name = "CharacterName2", Seiyuu = new SeiyuuData { PictureFileName = "Picture2.jpg", Name = "NameB" } } }, Creators = new[] { new CreatorData { Name = "Name1", Type = "Music" }, new CreatorData { Name = "Name2", Type = "Direction" } } }; var aniDbParser = new AniDbParser(); var people = aniDbParser.GetPeople(series); people.Select(p => p.Name).Should().BeEquivalentTo("NameA", "NameB", "Name1", "Name2"); }
public void GetPeople_HasCreators_ReturnsReversedNames() { var series = new AniDbSeriesData { Creators = new[] { new CreatorData { Name = "Reverse Name" } } }; var aniDbParser = new AniDbParser(); aniDbParser.GetPeople(series).Single().Name.Should().Be("Name Reverse"); }
public void Setup() { _aniDbSource = Substitute.For <IAniDbSource>(); _aniDbSource.GetSeriesData(_embyItemData, Arg.Any <ProcessResultContext>()) .Returns(x => _aniDbSeriesData); _sources = Substitute.For <ISources>(); _sources.AniDb.Returns(_aniDbSource); _aniDbClient = Substitute.For <IAniDbClient>(); _embyItemData = Substitute.For <IEmbyItemData>(); _embyItemData.Identifier.Returns(new ItemIdentifier(67, 1, "Name")); _embyItemData.Language.Returns("en"); _aniDbSeriesData = new AniDbSeriesData().WithStandardData(); }
private AniDbSeriesData CreateAniDbSeries(int id, string name) { var seriesData = new AniDbSeriesData { Id = id, Titles = new[] { new ItemTitleData { Title = name } } }; this.aniDbSourceData.Id.Returns(id); this.aniDbSourceData.Data.Returns(seriesData); return(seriesData); }
public void Setup() { _aniDbSource = Substitute.For <IAniDbSource>(); _sources = Substitute.For <ISources>(); _sources.AniDb.Returns(_aniDbSource); _embyItemData = Substitute.For <IEmbyItemData>(); _embyItemData.Language.Returns("en"); _aniDbSeriesTitles = new ItemTitleData[] { }; var aniDbSeriesData = new AniDbSeriesData { Titles = _aniDbSeriesTitles }; _embyItemData.Identifier.Returns(new ItemIdentifier(67, Option <int> .None, "Name")); _aniDbSource.GetSeriesData(_embyItemData, Arg.Any <ProcessResultContext>()) .Returns(aniDbSeriesData); }
public void GetPeople_MusicType_MapsTypeToComposer() { var series = new AniDbSeriesData { Creators = new[] { new CreatorData { Name = "Reverse Name", Type = "Music" } } }; var aniDbParser = new AniDbParser(); var person = aniDbParser.GetPeople(series).Single(); person.Type.Should().Be(PersonType.Composer); }
public void GetTags_IgnoresSpecificTags(int id) { var series = new AniDbSeriesData().WithStandardData(); series.Tags = new[] { new TagData { Id = id, Weight = 600, Name = "Tag1" } }; var aniDbParser = new AniDbParser(); var tags = aniDbParser.GetTags(series, 0, false); tags.Should().BeEmpty(); }