Add support for minimum item count for Studio discovery sections and replaced Showtime with Paramount+ with Showtime in browse by studios section

This commit is contained in:
HighImKevin
2026-10-05 18:15:10 -04:00
parent 08a25e948a
commit ceeb46bb3c
4 changed files with 14 additions and 2 deletions
+5 -1
View File
@@ -704,7 +704,7 @@
{ name: 'New Line Cinema', file: 'New_Line_Cinema.svg' },
{ name: 'Paramount Pictures', file: 'Paramount_Pictures.svg' },
{ name: 'Pixar', file: 'Pixar.svg' },
{ name: 'Showtime', file: 'Showtime.svg' },
{ name: 'Paramount+ with Showtime', file: 'Paramount+_with_Showtime.svg' },
{ name: 'Universal Pictures', file: 'Universal_Pictures.svg' },
{ name: 'Walt Disney Pictures', file: 'Walt_Disney_Pictures.svg' },
{ name: 'Warner Bros.', file: 'Warner_Bros..svg' },
@@ -2573,6 +2573,8 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
${buildTextInput('discovery-spotlightDiscoveryChance', discovery.spotlightDiscoveryChance ?? 0.5, 'Spotlight Discovery Chance (0-1)', 'number')}
${buildTextInput('discovery-minGenreMovieCount', discovery.minGenreMovieCount || 50, 'Genre Movie Count', 'number')}
${buildTextInput('discovery-minGenreSeriesCount', discovery.minGenreSeriesCount || 10, 'Genre Series Count', 'number')}
${buildTextInput('discovery-minStudioMovieCount', discovery.minStudioMovieCount || 25, 'Studio Movie Count', 'number')}
${buildTextInput('discovery-minStudioSeriesCount', discovery.minStudioSeriesCount || 5, 'Studio Series Count', 'number')}
</div>
</div>
`;
@@ -2904,6 +2906,8 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
infiniteScroll: root.querySelector('#discovery-infiniteScroll')?.checked !== false,
minGenreMovieCount: parseInt(root.querySelector('#discovery-minGenreMovieCount')?.value || '50', 10),
minGenreSeriesCount: parseInt(root.querySelector('#discovery-minGenreSeriesCount')?.value || '10', 10),
minStudioMovieCount: parseInt(root.querySelector('#discovery-minStudioMovieCount')?.value || '25', 10),
minStudioSeriesCount: parseInt(root.querySelector('#discovery-minStudioSeriesCount')?.value || '5', 10),
spotlightDiscoveryChance: parseFloat(root.querySelector('#discovery-spotlightDiscoveryChance')?.value || '0.5'),
renderSpotlightAboveMatching: root.querySelector('#discovery-renderSpotlightAboveMatching')?.checked === true,
randomizeOrder: root.querySelector('#discovery-randomizeOrder')?.checked === true,
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

+2
View File
@@ -2686,6 +2686,8 @@
infiniteScroll: false,
minGenreMovieCount: 50,
minGenreSeriesCount: 10,
minStudioMovieCount: 50,
minStudioSeriesCount: 10,
defaultItemLimit: 16,
defaultSortOrder: "Random",
defaultCardFormat: "Poster",
+6 -1
View File
@@ -856,8 +856,13 @@
}
if (discoveryType === 'Studio') {
const settings = getDiscoverySettings();
const minCount = itemType === 'Series'
? (settings.minStudioSeriesCount ?? settings.minStudioMovieCount ?? 25)
: (settings.minStudioMovieCount ?? 25);
const countField = itemType === 'Series' ? 'SeriesCount' : 'MovieCount';
const dedupe = getStudioDedupeSet(config);
const eligible = pool.filter((s) => s?.Id && !dedupe.has(s.Id));
const eligible = pool.filter((s) => s?.Id && !dedupe.has(s.Id) && (s[countField] || 0) > minCount);
if (!eligible.length) return null;
const selected = eligible[Math.floor(Math.random() * eligible.length)];
dedupe.add(selected.Id);