feat(music): add music data layer for plex and jellyfin

Backend-neutral fetchArtistAlbums/fetchAlbumTracks/fetchInstantMix/
fetchLyrics, lyrics model + LRC parser, audio quality presets, music
transcode (plex /music universal, jellyfin audio PlaybackInfo profile),
station/InstantMix radio, music search, playlist type derivation, and
audio download resolution.
This commit is contained in:
edde746
2026-07-05 15:55:52 +02:00
parent c87a9060f9
commit fff559da06
27 changed files with 1487 additions and 125 deletions
+14 -2
View File
@@ -2155,6 +2155,15 @@ class TranslationsDiscoverEn {
/// en: 'Recently Added in ${library}'
String recentlyAddedIn({required Object library}) => 'Recently Added in ${library}';
/// en: 'Latest Albums in ${library}'
String latestAlbumsIn({required Object library}) => 'Latest Albums in ${library}';
/// en: 'Recently Played in ${library}'
String recentlyPlayedIn({required Object library}) => 'Recently Played in ${library}';
/// en: 'Most Played in ${library}'
String mostPlayedIn({required Object library}) => 'Most Played in ${library}';
/// en: 'S${season}E${episode}'
String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}';
@@ -5265,6 +5274,9 @@ extension on Translations {
'discover.nextUpIn' => ({required Object library}) => 'Next Up in ${library}',
'discover.recentlyAdded' => 'Recently Added',
'discover.recentlyAddedIn' => ({required Object library}) => 'Recently Added in ${library}',
'discover.latestAlbumsIn' => ({required Object library}) => 'Latest Albums in ${library}',
'discover.recentlyPlayedIn' => ({required Object library}) => 'Recently Played in ${library}',
'discover.mostPlayedIn' => ({required Object library}) => 'Most Played in ${library}',
'discover.playEpisode' => ({required Object season, required Object episode}) => 'S${season}E${episode}',
'discover.overview' => 'Overview',
'discover.cast' => 'Cast',
@@ -5632,11 +5644,11 @@ extension on Translations {
'shaders.title' => 'Shaders',
'shaders.noShaderDescription' => 'No video enhancement',
'shaders.nvscalerDescription' => 'NVIDIA image scaling for sharper video',
_ => null,
} ?? switch (path) {
'shaders.artcnnVariantNeutral' => 'Neutral',
'shaders.artcnnVariantDenoise' => 'Denoise',
'shaders.artcnnVariantDenoiseSharpen' => 'Denoise + Sharpen',
_ => null,
} ?? switch (path) {
'shaders.qualityFast' => 'Fast',
'shaders.qualityHQ' => 'High Quality',
'shaders.mode' => 'Mode',