From 4d5a8337894a4037c9bba59f4b9e5551646f5394 Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Wed, 31 Dec 2025 13:40:46 -0600 Subject: [PATCH] add configurable jellyfin page size --- CHANGELOG.md | 1 + ErsatzTV.Core/SystemEnvironment.cs | 13 +++++++++++-- .../Jellyfin/JellyfinApiClient.cs | 12 +++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ec231abb..81b787f7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - e.g. if this is set to `1000`, queries taking longer than 1 second will be logged - `ETV_SLOW_API_MS` - milliseconds threshold for logging slow API calls (at DEBUG level) - This is currently limited to *Jellyfin* + - `ETV_JF_PAGE_SIZE` - page size for library scan API calls to Jellyfin; default value is 10 ### Fixed - Fix startup on systems unsupported by NvEncSharp diff --git a/ErsatzTV.Core/SystemEnvironment.cs b/ErsatzTV.Core/SystemEnvironment.cs index 08d3132ba..f441601fe 100644 --- a/ErsatzTV.Core/SystemEnvironment.cs +++ b/ErsatzTV.Core/SystemEnvironment.cs @@ -38,16 +38,24 @@ public class SystemEnvironment MaximumUploadMb = maximumUploadMb; string slowDbMsVariable = Environment.GetEnvironmentVariable("ETV_SLOW_DB_MS"); - if (int.TryParse(slowDbMsVariable, out int slowDbMs)) + if (int.TryParse(slowDbMsVariable, out int slowDbMs) && slowDbMs > 0) { SlowDbMs = slowDbMs; } string slowApiMsVariable = Environment.GetEnvironmentVariable("ETV_SLOW_API_MS"); - if (int.TryParse(slowApiMsVariable, out int slowApiMs)) + if (int.TryParse(slowApiMsVariable, out int slowApiMs) && slowApiMs > 0) { SlowApiMs = slowApiMs; } + + string jellyfinPageSizeVariable = Environment.GetEnvironmentVariable("ETV_JF_PAGE_SIZE"); + if (!int.TryParse(jellyfinPageSizeVariable, out int jellyfinPageSize)) + { + jellyfinPageSize = 10; + } + + JellyfinPageSize = jellyfinPageSize; } public static string BaseUrl { get; } @@ -59,4 +67,5 @@ public class SystemEnvironment public static int MaximumUploadMb { get; } public static int? SlowDbMs { get; } public static int? SlowApiMs { get; } + public static int JellyfinPageSize { get; set; } } diff --git a/ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs b/ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs index 62b136ba5..a71be3484 100644 --- a/ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs +++ b/ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs @@ -294,17 +294,19 @@ public class JellyfinApiClient : IJellyfinApiClient { IJellyfinApi service = ServiceForAddress(address); - const int PAGE_SIZE = 10; - int pages = int.MaxValue; for (var i = 0; i < pages; i++) { - int skip = i * PAGE_SIZE; + int skip = i * SystemEnvironment.JellyfinPageSize; - JellyfinLibraryItemsResponse result = await getItems(service, parentId, skip, PAGE_SIZE); + JellyfinLibraryItemsResponse result = await getItems( + service, + parentId, + skip, + SystemEnvironment.JellyfinPageSize); // update page count - pages = Math.Min(pages, (result.TotalRecordCount - 1) / PAGE_SIZE + 1); + pages = Math.Min(pages, (result.TotalRecordCount - 1) / SystemEnvironment.JellyfinPageSize + 1); foreach (TItem item in result.Items.Map(item => mapper(maybeLibrary, item)).Somes()) {