From 5da013ad153097cb8ce195fd59bffec9c46626b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Van=C3=AD=C4=8Dek?= Date: Thu, 12 Dec 2024 00:18:52 +0100 Subject: [PATCH] Recent videos works. Fixed Details metadata call. Fix JSON missing date crash. --- CinemaJellyfin/CinemaLibraryManager.cs | 2 +- CinemaLib/API/Metadata.cs | 9 +++++---- CinemaLib/Program.cs | 9 ++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CinemaJellyfin/CinemaLibraryManager.cs b/CinemaJellyfin/CinemaLibraryManager.cs index f0ab392..65fa5a3 100644 --- a/CinemaJellyfin/CinemaLibraryManager.cs +++ b/CinemaJellyfin/CinemaLibraryManager.cs @@ -274,7 +274,7 @@ sealed class CinemaLibraryManager : ILibraryManager List resultL = new List(result.Items); - if (query.OrderBy.FirstOrDefault().OrderBy == ItemSortBy.DatePlayed && query.User != null) + if (query.OrderBy.FirstOrDefault().OrderBy == ItemSortBy.DatePlayed && query.User != null && query.MediaTypes.Contains(MediaType.Video)) { // Get Resume play items // PERF: This may quickly become very slow diff --git a/CinemaLib/API/Metadata.cs b/CinemaLib/API/Metadata.cs index a49b862..701524a 100644 --- a/CinemaLib/API/Metadata.cs +++ b/CinemaLib/API/Metadata.cs @@ -10,7 +10,6 @@ namespace CinemaLib.API; public class Metadata { - private const string UserAgent = "User-Agent: XBMC/19 (Linux 6.1; http://www.xbmc.org)"; private const string AccessToken = "9ajdu4xyn1ig8nxsodr3"; private const int MaxPageLimit = 100; // thousand is too much for some search types @@ -97,8 +96,9 @@ public class Metadata if (id == null || id.Length == 0) throw new ArgumentNullException(); - Uri uri = new Uri(new Uri(ApiRoot, "media/"), id); - MediaSource? result = await Program._http.GetFromJsonAsync(uri, CreateFilterJsonOptions(), cancel); + UriBuilder uri = new UriBuilder(new Uri(new Uri(ApiRoot, "media/"), id)); + uri.Query = $"?access_token={AccessToken}"; + MediaSource? result = await Program._http.GetFromJsonAsync(uri.Uri, CreateFilterJsonOptions(), cancel); if (result != null) result = FixDetailResponse(result); return result; @@ -279,7 +279,8 @@ public class Metadata { public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - return DateTime.Parse(reader.GetString()); + string? a = reader.GetString(); + return a == null || a.Length == 0 ? default : DateTime.Parse(a); } public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) diff --git a/CinemaLib/Program.cs b/CinemaLib/Program.cs index 6773b85..6d4c37d 100644 --- a/CinemaLib/Program.cs +++ b/CinemaLib/Program.cs @@ -3,7 +3,14 @@ using Cinema.Webshare; class Program { - public static HttpClient _http = new HttpClient(); + private const string UserAgent = "XBMC/19 (Linux 6.1; http://www.xbmc.org)"; + public static HttpClient _http = InitHttpClient(); + + private static HttpClient InitHttpClient() { + HttpClient result = new HttpClient(); + result.DefaultRequestHeaders.Add("User-Agent", UserAgent); + return result; + } private static async Task Main(string[] args) {