fix subsonic transcoding stream url to return raw string instead of fetch

This commit is contained in:
jeffvli
2026-04-04 23:03:46 -07:00
parent e21515f7fb
commit a8d990db23
@@ -237,6 +237,27 @@ function appendTranscodeParams(url: string, format?: string, bitrate?: number) {
return streamUrl; return streamUrl;
} }
function buildGetTranscodeStreamUrl(
server: null | undefined | { credential?: string; url?: string },
args: {
mediaId: string;
mediaType: 'podcast' | 'song';
offset: number;
transcodeParams: string;
},
): string {
const params = new URLSearchParams({
c: 'Feishin',
mediaId: args.mediaId,
mediaType: args.mediaType,
offset: String(args.offset),
transcodeParams: args.transcodeParams,
v: '1.13.0',
});
return `${server?.url}/rest/getTranscodeStream.view?${params.toString()}&${server?.credential}`;
}
function sortAndPaginate<T>( function sortAndPaginate<T>(
items: T[], items: T[],
options: { options: {
@@ -2013,20 +2034,14 @@ export const SubsonicController: InternalControllerEndpoint = {
return appendTranscodeParams(streamUrl, format, bitrate); return appendTranscodeParams(streamUrl, format, bitrate);
} }
const transcodeStreamUrl = await ssApiClient(apiClientProps).getTranscodeStream({ const transcodeStreamUrl = buildGetTranscodeStreamUrl(server, {
query: { mediaId: String(id),
mediaId: id, mediaType: (mediaType ?? 'song') as 'podcast' | 'song',
mediaType,
offset: 0, offset: 0,
transcodeParams: td.transcodeParams, transcodeParams: td.transcodeParams,
},
}); });
if (transcodeStreamUrl.status !== 200) { return transcodeStreamUrl;
throw new Error('Failed to get transcode stream');
}
return transcodeStreamUrl.body;
} }
return streamUrl; return streamUrl;