public async Task <MetadataResult <Episode> > GetMetadata(EpisodeInfo info, CancellationToken cancellationToken) { var result = new MetadataResult <Episode>(); var id = info.ProviderIds.GetValueOrDefault("Kitsu"); if (string.IsNullOrWhiteSpace(id)) { return(result); } var episodeInfo = await KitsuIoApi.Get_Episode(id, _httpClientFactory); result.HasMetadata = true; result.Item = new Episode { IndexNumber = info.IndexNumber, ParentIndexNumber = info.ParentIndexNumber, Name = episodeInfo.Data.Attributes.Titles.GetTitle, }; if (episodeInfo.Data.Attributes.Length != null) { result.Item.RunTimeTicks = TimeSpan.FromMinutes(episodeInfo.Data.Attributes.Length.Value).Ticks; } return(result); }
public async Task <MetadataResult <MediaBrowser.Controller.Entities.TV.Series> > GetMetadata(SeriesInfo info, CancellationToken cancellationToken) { var result = new MetadataResult <MediaBrowser.Controller.Entities.TV.Series>(); var kitsuId = info.ProviderIds.GetOrDefault(ProviderNames.KitsuIo); if (string.IsNullOrEmpty(kitsuId)) { _log.LogInformation("Start KitsuIo... Searching({Name})", info.Name); var filters = GetFiltersFromSeriesInfo(info); var apiResponse = await KitsuIoApi.Search_Series(filters); kitsuId = apiResponse.Data.FirstOrDefault(x => x.Attributes.Titles.Equal(info.Name))?.Id.ToString(); } if (!string.IsNullOrEmpty(kitsuId)) { var seriesInfo = await KitsuIoApi.Get_Series(kitsuId); result.HasMetadata = true; result.Item = new MediaBrowser.Controller.Entities.TV.Series { Overview = seriesInfo.Data.Attributes.Synopsis, // KitsuIO has a max rating of 100 CommunityRating = string.IsNullOrWhiteSpace(seriesInfo.Data.Attributes.AverageRating) ? null : (float?)float.Parse(seriesInfo.Data.Attributes.AverageRating, System.Globalization.CultureInfo.InvariantCulture) / 10, ProviderIds = new Dictionary <string, string>() { { ProviderNames.KitsuIo, kitsuId } }, Genres = seriesInfo.Included?.Select(x => x.Attributes.Name).ToArray() ?? Array.Empty <string>() }; GenreHelper.CleanupGenres(result.Item); StoreImageUrl(kitsuId, seriesInfo.Data.Attributes.PosterImage.Original.ToString(), "image"); } return(result); }
public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken) { var filters = GetFiltersFromSeriesInfo(searchInfo); var searchResults = await KitsuIoApi.Search_Series(filters); var results = new List <RemoteSearchResult>(); foreach (var series in searchResults.Data) { var parsedSeries = new RemoteSearchResult { Name = series.Attributes.Titles.GetTitle, SearchProviderName = Name, ImageUrl = series.Attributes.PosterImage.Medium.ToString(), Overview = series.Attributes.Synopsis, ProductionYear = series.Attributes.StartDate?.Year, PremiereDate = series.Attributes.StartDate?.DateTime, }; parsedSeries.SetProviderId(ProviderNames.KitsuIo, series.Id.ToString()); results.Add(parsedSeries); } return(results); }
public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(EpisodeInfo searchInfo, CancellationToken cancellationToken) { var id = searchInfo.ProviderIds.GetValueOrDefault("Kitsu"); if (string.IsNullOrWhiteSpace(id)) { return(new List <RemoteSearchResult>());; } var apiResponse = await KitsuIoApi.Get_Episodes(id, _httpClientFactory); return(apiResponse.Data.Select(x => new RemoteSearchResult { IndexNumber = x.Attributes.Number, Name = x.Attributes.Titles.GetTitle, ParentIndexNumber = x.Attributes.SeasonNumber, PremiereDate = x.Attributes.AirDate, ProviderIds = new Dictionary <string, string> { { "Kitsu", x.Id.ToString() } }, SearchProviderName = Name, Overview = x.Attributes.Synopsis, })); }