public Either <ProcessFailedResult, string> SelectTitle(AniListTitleData titleData, string metadataLanguage, ProcessResultContext resultContext) { return(_aniListNameSelector .SelectTitle(titleData, _titlePreferenceConfiguration.TitlePreference, metadataLanguage) .ToEither(resultContext.Failed("Failed to find a title"))); }
public IEnumerable <IPropertyMapping> GetSeriesMappings(int maxGenres, bool addAnimeGenre, bool moveExcessGenresToTags, TitleType preferredTitleType, string metadataLanguage) { return(new IPropertyMapping[] { MapSeries("Name", t => t.Item.Name, (s, t) => _nameSelector.SelectTitle(s.Title, preferredTitleType, metadataLanguage) .Map(title => t.Item.Name = title), (s, t) => _nameSelector.SelectTitle(s.Title, preferredTitleType, metadataLanguage).IsSome), MapSeries("Release date", t => t.Item.PremiereDate, (s, t) => AniListFuzzyDate.ToDate(s.StartDate).Map(d => t.Item.PremiereDate = d), (s, t) => AniListFuzzyDate.ToDate(s.StartDate).IsSome), MapSeries("End date", t => t.Item.EndDate, (s, t) => AniListFuzzyDate.ToDate(s.EndDate).Map(d => t.Item.EndDate = d), (s, t) => AniListFuzzyDate.ToDate(s.EndDate).IsSome), MapSeries("Community rating", t => t.Item.CommunityRating, (s, t) => t.Item.CommunityRating = (float?)s.AverageScore, (s, t) => s.AverageScore > 0), MapSeries("Overview", t => t.Item.Overview, (s, t) => t.Item.Overview = s.Description, (s, t) => !string.IsNullOrWhiteSpace(s.Description)), MapSeries("Studios", t => t.Item.Studios, (s, t) => t.Item.Studios = s.Studios.Edges.Map(studio => studio.Name).ToArray(), (s, t) => s.Studios.Edges.Any()), MapSeries("Genres", t => t.Item.Genres, (s, t) => t.Item.Genres.AddRange(s.Genres.Take(maxGenres)), (s, t) => s.Genres.Any()), MapSeries("Tags", t => t.Item.Tags, (s, t) => t.Item.Tags = moveExcessGenresToTags ? s.Genres.Skip(maxGenres).ToArray() : new string[] { }, (s, t) => s.Genres.Skip(maxGenres).Any()), MapSeries("People", t => t.People, (s, t) => t.People = s.Staff.Edges .Map(staff => ToPersonInfo(_nameSelector, preferredTitleType, metadataLanguage, staff)) .Concat(s.Characters.Edges.Map(c => ToPersonInfo(_nameSelector, preferredTitleType, metadataLanguage, c))) .Somes() .ToList(), (s, t) => s.Staff.Edges.Any() || s.Characters.Edges.Any()) }); }