From 7a03cbcc4450ba6244839fd04c5fe63b5f3c11e4 Mon Sep 17 00:00:00 2001 From: r0adkll Date: Thu, 6 Feb 2025 13:14:58 -0500 Subject: [PATCH 1/3] Adding support for 'minified' parameter when fetching a library's items --- server/models/LibraryItem.js | 39 +++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/server/models/LibraryItem.js b/server/models/LibraryItem.js index 16a521615..accb76a86 100644 --- a/server/models/LibraryItem.js +++ b/server/models/LibraryItem.js @@ -293,11 +293,13 @@ class LibraryItem extends Model { */ static async getByFilterAndSort(library, user, options) { let start = Date.now() + const { minified } = options const { libraryItems, count } = await libraryFilters.getFilteredLibraryItems(library.id, user, options) Logger.debug(`Loaded ${libraryItems.length} of ${count} items for libary page in ${((Date.now() - start) / 1000).toFixed(2)}s`) - return { - libraryItems: libraryItems.map((li) => { + let items = [] + if (minified) { + items = libraryItems.map((li) => { const oldLibraryItem = li.toOldJSONMinified() if (li.collapsedSeries) { oldLibraryItem.collapsedSeries = li.collapsedSeries @@ -322,7 +324,38 @@ class LibraryItem extends Model { } return oldLibraryItem - }), + }) + } else { + items = libraryItems.map((li) => { + const oldLibraryItem = li.toOldJSONExpanded() + if (li.collapsedSeries) { + oldLibraryItem.collapsedSeries = li.collapsedSeries + } + if (li.series) { + oldLibraryItem.media.metadata.series = li.series + } + if (li.rssFeed) { + oldLibraryItem.rssFeed = li.rssFeed.toOldJSON() + } + if (li.media.numEpisodes) { + oldLibraryItem.media.numEpisodes = li.media.numEpisodes + } + if (li.size && !oldLibraryItem.media.size) { + oldLibraryItem.media.size = li.size + } + if (li.numEpisodesIncomplete) { + oldLibraryItem.numEpisodesIncomplete = li.numEpisodesIncomplete + } + if (li.mediaItemShare) { + oldLibraryItem.mediaItemShare = li.mediaItemShare + } + + return oldLibraryItem + }) + } + + return { + libraryItems: items, count } } From 78384e57bf014868e2fed5151db66581197e702a Mon Sep 17 00:00:00 2001 From: r0adkll Date: Thu, 6 Feb 2025 13:27:05 -0500 Subject: [PATCH 2/3] Made fix less verbose --- server/models/LibraryItem.js | 94 ++++++++++++++---------------------- 1 file changed, 36 insertions(+), 58 deletions(-) diff --git a/server/models/LibraryItem.js b/server/models/LibraryItem.js index accb76a86..01851e248 100644 --- a/server/models/LibraryItem.js +++ b/server/models/LibraryItem.js @@ -297,65 +297,43 @@ class LibraryItem extends Model { const { libraryItems, count } = await libraryFilters.getFilteredLibraryItems(library.id, user, options) Logger.debug(`Loaded ${libraryItems.length} of ${count} items for libary page in ${((Date.now() - start) / 1000).toFixed(2)}s`) - let items = [] - if (minified) { - items = libraryItems.map((li) => { - const oldLibraryItem = li.toOldJSONMinified() - if (li.collapsedSeries) { - oldLibraryItem.collapsedSeries = li.collapsedSeries - } - if (li.series) { - oldLibraryItem.media.metadata.series = li.series - } - if (li.rssFeed) { - oldLibraryItem.rssFeed = li.rssFeed.toOldJSONMinified() - } - if (li.media.numEpisodes) { - oldLibraryItem.media.numEpisodes = li.media.numEpisodes - } - if (li.size && !oldLibraryItem.media.size) { - oldLibraryItem.media.size = li.size - } - if (li.numEpisodesIncomplete) { - oldLibraryItem.numEpisodesIncomplete = li.numEpisodesIncomplete - } - if (li.mediaItemShare) { - oldLibraryItem.mediaItemShare = li.mediaItemShare - } - - return oldLibraryItem - }) - } else { - items = libraryItems.map((li) => { - const oldLibraryItem = li.toOldJSONExpanded() - if (li.collapsedSeries) { - oldLibraryItem.collapsedSeries = li.collapsedSeries - } - if (li.series) { - oldLibraryItem.media.metadata.series = li.series - } - if (li.rssFeed) { - oldLibraryItem.rssFeed = li.rssFeed.toOldJSON() - } - if (li.media.numEpisodes) { - oldLibraryItem.media.numEpisodes = li.media.numEpisodes - } - if (li.size && !oldLibraryItem.media.size) { - oldLibraryItem.media.size = li.size - } - if (li.numEpisodesIncomplete) { - oldLibraryItem.numEpisodesIncomplete = li.numEpisodesIncomplete - } - if (li.mediaItemShare) { - oldLibraryItem.mediaItemShare = li.mediaItemShare - } - - return oldLibraryItem - }) - } - return { - libraryItems: items, + libraryItems: libraryItems.map((li) => { + let oldLibraryItem = {} + if (minified) { + oldLibraryItem = li.toOldJSONMinified() + } else { + oldLibraryItem = li.toOldJSONExpanded() + } + + if (li.collapsedSeries) { + oldLibraryItem.collapsedSeries = li.collapsedSeries + } + if (li.series) { + oldLibraryItem.media.metadata.series = li.series + } + if (li.rssFeed) { + if (minified) { + oldLibraryItem.rssFeed = li.rssFeed.toOldJSONMinified() + } else { + oldLibraryItem.rssFeed = li.rssFeed.toOldJSON() + } + } + if (li.media.numEpisodes) { + oldLibraryItem.media.numEpisodes = li.media.numEpisodes + } + if (li.size && !oldLibraryItem.media.size) { + oldLibraryItem.media.size = li.size + } + if (li.numEpisodesIncomplete) { + oldLibraryItem.numEpisodesIncomplete = li.numEpisodesIncomplete + } + if (li.mediaItemShare) { + oldLibraryItem.mediaItemShare = li.mediaItemShare + } + + return oldLibraryItem + }), count } } From 0fc3b40b8eedf645de964b7b1feb944db5dedef8 Mon Sep 17 00:00:00 2001 From: r0adkll Date: Mon, 8 Sep 2025 09:33:35 -0400 Subject: [PATCH 3/3] Made 'expanded' details an explicit parameter --- server/controllers/LibraryController.js | 1 + server/models/LibraryItem.js | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/server/controllers/LibraryController.js b/server/controllers/LibraryController.js index e63441f0b..beb4aad98 100644 --- a/server/controllers/LibraryController.js +++ b/server/controllers/LibraryController.js @@ -619,6 +619,7 @@ class LibraryController { filterBy: req.query.filter, mediaType: req.library.mediaType, minified: req.query.minified === '1', + expanded: req.query.expanded === '1', collapseseries: req.query.collapseseries === '1', include: include.join(',') } diff --git a/server/models/LibraryItem.js b/server/models/LibraryItem.js index 01851e248..7c2548555 100644 --- a/server/models/LibraryItem.js +++ b/server/models/LibraryItem.js @@ -293,19 +293,19 @@ class LibraryItem extends Model { */ static async getByFilterAndSort(library, user, options) { let start = Date.now() - const { minified } = options + const { expanded } = options const { libraryItems, count } = await libraryFilters.getFilteredLibraryItems(library.id, user, options) Logger.debug(`Loaded ${libraryItems.length} of ${count} items for libary page in ${((Date.now() - start) / 1000).toFixed(2)}s`) return { libraryItems: libraryItems.map((li) => { let oldLibraryItem = {} - if (minified) { - oldLibraryItem = li.toOldJSONMinified() - } else { + if (expanded) { oldLibraryItem = li.toOldJSONExpanded() + } else { + oldLibraryItem = li.toOldJSONMinified() } - + if (li.collapsedSeries) { oldLibraryItem.collapsedSeries = li.collapsedSeries } @@ -313,10 +313,10 @@ class LibraryItem extends Model { oldLibraryItem.media.metadata.series = li.series } if (li.rssFeed) { - if (minified) { - oldLibraryItem.rssFeed = li.rssFeed.toOldJSONMinified() + if (expanded) { + oldLibraryItem.rssFeed = li.rssFeed.toOldJSONExpanded() } else { - oldLibraryItem.rssFeed = li.rssFeed.toOldJSON() + oldLibraryItem.rssFeed = li.rssFeed.toOldJSONMinified() } } if (li.media.numEpisodes) { @@ -331,7 +331,7 @@ class LibraryItem extends Model { if (li.mediaItemShare) { oldLibraryItem.mediaItemShare = li.mediaItemShare } - + return oldLibraryItem }), count