Mus 10 issue playing music from jellyfin (#11)

* fix: proxy Jellyfin audio streams through backend to fix Docker playback

* fix: supportsShuffle on Jellyfin
This commit is contained in:
Harvey
2026-04-04 17:03:17 +01:00
committed by GitHub
parent d2893b93f2
commit 687a925545
12 changed files with 328 additions and 104 deletions
+2 -5
View File
@@ -19,7 +19,6 @@ const MAX_HISTORY_LENGTH = 3;
const SESSION_PERSIST_INTERVAL_MS = 5000;
const JELLYFIN_REPORT_INTERVAL_MS = 10_000;
const MAX_JELLYFIN_REPORT_FAILURES = 3;
type JellyfinPlaybackUrlResponse = { url: string; seekable: boolean; playSessionId: string };
function createPlayerStore() {
let currentSource = $state<PlaybackSource | null>(null);
@@ -106,10 +105,8 @@ function createPlayerStore() {
void reportNavidromeNowPlaying(item.trackSourceId);
return { source: createPlaybackSource('navidrome', { url: url!, seekable: true }), loadUrl: url };
}
const payload = await api.global.get<JellyfinPlaybackUrlResponse>(API.stream.jellyfin(item.trackSourceId));
const uq = [...queue]; uq[index] = { ...item, playSessionId: payload.playSessionId }; queue = uq;
isSeekable = payload.seekable;
return { source: createPlaybackSource('jellyfin', { url: payload.url, seekable: payload.seekable }), loadUrl: payload.url };
isSeekable = true;
return { source: createPlaybackSource('jellyfin', { url: url!, seekable: true }), loadUrl: url };
}
async function startJellyfinPlayback(index: number): Promise<void> {
@@ -10,7 +10,7 @@ export function resolveSourceUrl(item: QueueItem): string | undefined {
case 'navidrome':
return item.streamUrl ?? API.stream.navidrome(item.trackSourceId);
case 'jellyfin':
return undefined;
return API.stream.jellyfin(item.trackSourceId);
}
}
@@ -139,7 +139,7 @@
getDefaultSortOrder: (field) => (field === 'SortName' ? 'Ascending' : 'Descending'),
supportsGenres: true,
supportsFavorites: true,
supportsShuffle: false,
supportsShuffle: true,
errorMessage: "Couldn't reach Jellyfin"
};