From 9a06e4e555fe10edc9df4693e63b07aa6b568ddf Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Tue, 10 Dec 2024 00:56:16 +0100 Subject: feat: Add downloader --- SeriesImageProvider.cs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'SeriesImageProvider.cs') diff --git a/SeriesImageProvider.cs b/SeriesImageProvider.cs index 7f48223..dd0f3b3 100644 --- a/SeriesImageProvider.cs +++ b/SeriesImageProvider.cs @@ -1,14 +1,18 @@ -using Microsoft.Extensions.Logging; +using System.Linq; namespace Jellyfin.Plugin.JCoverXtremePro; using System.Collections.Generic; using System.Net.Http; +using System.Text.Json; +using System.Text.Json.Nodes; using System.Threading; using System.Threading.Tasks; +using Jellyfin.Plugin.JCoverXtremePro.Api; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; @@ -26,13 +30,14 @@ public class SeriesImageProvider { return [ + // Note: update JCoverSharedController if more image types are supported ImageType.Primary ]; } public async Task> GetImages(BaseItem item, CancellationToken cancellationToken) { - // TODO: hadnle episodes + // TODO: handle specific episodes directly if (item is Series series) { return await HandleSeries(series, cancellationToken); @@ -51,8 +56,20 @@ public class SeriesImageProvider var metadata = await MediuxDownloader.instance.GetMediuxMetadata("https://mediux.pro/shows/" + tmdbId) .ConfigureAwait(false); - Plugin.Logger.LogInformation("JSON: " + metadata); - return []; + var show = JsonSerializer.Deserialize(metadata as JsonObject)!; + + return from set in show.sets + let representativeImage = set.files.Find(it => it.fileType is "poster" or "title_card")! + let enrichedUrl = JCoverSharedController.PackSetInfo(representativeImage.downloadUrl, series, set) + select new RemoteImageInfo + { + Url = enrichedUrl, + ProviderName = set.user_created.username + " (via Mediux)", + ThumbnailUrl = enrichedUrl, // TODO: use generated thumbnails from /_next/image?url= + Language = "en", + RatingType = RatingType.Likes, + Type = representativeImage.JellyFinFileType().Value + }; } public Task GetImageResponse(string url, CancellationToken cancellationToken) -- cgit