diff --git a/helpers/mappings.ts b/helpers/mappings.ts index 6e8b1f0c..c932fa62 100644 --- a/helpers/mappings.ts +++ b/helpers/mappings.ts @@ -2,27 +2,31 @@ import { BaseItemDto, ImageType } from "@jellyfin/sdk/lib/generated-client/model import { JellifyTrack } from "../types/JellifyTrack"; import { RatingType, TrackType } from "react-native-track-player"; import { QueuingType } from "../enums/queuing-type"; -import { getImageApi, getMediaInfoApi } from "@jellyfin/sdk/lib/utils/api"; +import { getImageApi } from "@jellyfin/sdk/lib/utils/api"; import Client from "../api/client"; import { isUndefined } from "lodash"; +import { runOnRuntime } from "react-native-reanimated"; +import { backgroundRuntime } from "../App"; -export async function mapDtoToTrack(item: BaseItemDto, queuingType?: QueuingType) : Promise { - - const mediaInfoApi = getMediaInfoApi(Client.api!) +// TODO: Make this configurable +const transcodingContainer = "ts"; - const url = await mediaInfoApi.getPlaybackInfo({ - itemId: item.Id!, - }) - .then(({ data }) => { - - console.debug(data) - return data.MediaSources![0].TranscodingUrl! - }) +export function mapDtoToTrack(item: BaseItemDto, queuingType?: QueuingType) : JellifyTrack { + const urlParams = { + "Container": item.Container!, + "TranscodingContainer": transcodingContainer, + "TranscodingProtocol": TrackType.HLS, + "EnableRemoteMedia": "true", + "EnableRedirection": "true", + "api_key": Client.api!.accessToken, + "StartTimeTicks": "0", + "PlaySessionId": Client.sessionId, + } const isFavorite = !isUndefined(item.UserData) && (item.UserData.IsFavorite ?? false); return { - url, + url: `${Client.api!.basePath}/Audio/${item.Id!}/universal?${new URLSearchParams(urlParams)}`, type: TrackType.HLS, headers: { "X-Emby-Token": Client.api!.accessToken