refactor: getstreamurl

This commit is contained in:
sarendsen
2025-05-02 19:02:14 +02:00
parent 0b574cc047
commit f4750e781d

View File

@@ -44,111 +44,65 @@ export const getStreamUrl = async ({
let mediaSource: MediaSourceInfo | undefined; let mediaSource: MediaSourceInfo | undefined;
let sessionId: string | null | undefined; let sessionId: string | null | undefined;
if (item.Type === "Program") { const res = await getMediaInfoApi(api).getPlaybackInfo(
console.log("Item is of type program...");
const res0 = await getMediaInfoApi(api).getPlaybackInfo(
{
userId,
itemId: item.ChannelId!,
},
{
method: "POST",
params: {
startTimeTicks: 0,
isPlayback: true,
autoOpenLiveStream: true,
maxStreamingBitrate,
audioStreamIndex,
},
data: {
deviceProfile,
},
},
);
const transcodeUrl = res0.data.MediaSources?.[0].TranscodingUrl;
sessionId = res0.data.PlaySessionId || null;
if (transcodeUrl) {
return {
url: `${api.basePath}${transcodeUrl}`,
sessionId,
mediaSource: res0.data.MediaSources?.[0],
};
}
}
const itemId = item.Id;
const res2 = await getMediaInfoApi(api).getPlaybackInfo(
{ {
itemId: item.Id!, itemId: item.Id!,
}, },
{ {
method: "POST", method: "POST",
data: { data: {
deviceProfile,
userId, userId,
maxStreamingBitrate, deviceProfile,
startTimeTicks,
autoOpenLiveStream: true,
mediaSourceId,
audioStreamIndex,
subtitleStreamIndex, subtitleStreamIndex,
startTimeTicks,
isPlayback: true,
autoOpenLiveStream: true,
maxStreamingBitrate,
audioStreamIndex,
mediaSourceId,
}, },
}, },
); );
if (res2.status !== 200) { if (res.status !== 200) {
console.error("Error getting playback info:", res2.status, res2.statusText); console.error("Error getting playback info:", res.status, res.statusText);
} }
sessionId = res2.data.PlaySessionId || null; sessionId = res.data.PlaySessionId || null;
mediaSource = res.data.MediaSources[0];
mediaSource = res2.data.MediaSources?.find( const transcodeUrl = mediaSource.TranscodingUrl;
(source: MediaSourceInfo) => source.Id === mediaSourceId,
);
if (item.MediaType === "Video") {
if (mediaSource?.TranscodingUrl) {
const urlObj = new URL(api.basePath + mediaSource?.TranscodingUrl); // Create a URL object
// Get the updated URL
const transcodeUrl = urlObj.toString();
console.log("Video has transcoding URL:", `${transcodeUrl}`);
return {
url: transcodeUrl,
sessionId: sessionId,
mediaSource,
};
}
const searchParams = new URLSearchParams({
playSessionId: sessionData?.PlaySessionId || "",
mediaSourceId: mediaSource?.Id || "",
static: "true",
subtitleStreamIndex: subtitleStreamIndex?.toString() || "",
audioStreamIndex: audioStreamIndex?.toString() || "",
deviceId: api.deviceInfo.id,
api_key: api.accessToken,
startTimeTicks: startTimeTicks.toString(),
maxStreamingBitrate: maxStreamingBitrate?.toString() || "",
userId: userId || "",
});
const directPlayUrl = `${
api.basePath
}/Videos/${itemId}/stream.mp4?${searchParams.toString()}`;
console.log("Video is being direct played:", directPlayUrl);
if (transcodeUrl) {
console.log("Video is being transcoded:", transcodeUrl);
return { return {
url: directPlayUrl, url: `${api.basePath}${transcodeUrl}`,
sessionId: sessionId, sessionId,
mediaSource, mediaSource,
}; };
} }
Alert.alert("Error", "Could not play this item"); const searchParams = new URLSearchParams({
playSessionId: sessionData?.PlaySessionId || "",
mediaSourceId: mediaSource?.Id || "",
static: "true",
subtitleStreamIndex: subtitleStreamIndex?.toString() || "",
audioStreamIndex: audioStreamIndex?.toString() || "",
deviceId: api.deviceInfo.id,
api_key: api.accessToken,
startTimeTicks: startTimeTicks.toString(),
maxStreamingBitrate: maxStreamingBitrate?.toString() || "",
userId: userId || "",
});
return null; const directPlayUrl = `${
api.basePath
}/Videos/${item.Id}/stream.mp4?${searchParams.toString()}`;
console.log("Video is being direct played:", directPlayUrl);
return {
url: directPlayUrl,
sessionId: sessionId,
mediaSource,
};
}; };