From 1515fcb1582bb5ad895615e16b4ac0f25c66c053 Mon Sep 17 00:00:00 2001 From: Andrei Nistor Date: Mon, 17 Jan 2022 17:31:11 +0200 Subject: [PATCH] Fix Base URL handling --- .../BaseItemDto+VideoPlayerViewModel.swift | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Shared/Extensions/JellyfinAPIExtensions/BaseItemDto+VideoPlayerViewModel.swift b/Shared/Extensions/JellyfinAPIExtensions/BaseItemDto+VideoPlayerViewModel.swift index b877197e..8b743846 100644 --- a/Shared/Extensions/JellyfinAPIExtensions/BaseItemDto+VideoPlayerViewModel.swift +++ b/Shared/Extensions/JellyfinAPIExtensions/BaseItemDto+VideoPlayerViewModel.swift @@ -48,8 +48,9 @@ extension BaseItemDto { let defaultSubtitleStream = subtitleStreams .first(where: { $0.index! == currentMediaSource.defaultSubtitleStreamIndex ?? -1 }) - var directStreamURL: URLComponents + var directStreamURL: URL let transcodedStreamURL: URLComponents? + let mediaSourceID: String let streamType: ServerStreamType if let transcodeURL = currentMediaSource.transcodingUrl { @@ -61,17 +62,19 @@ extension BaseItemDto { transcodedStreamURL = nil } - directStreamURL = URLComponents(string: SessionManager.main.currentLogin.server.currentURI)! - directStreamURL.path = "/Videos/\(self.id!)/stream" - directStreamURL.addQueryItem(name: "Static", value: "true") - directStreamURL.addQueryItem(name: "MediaSourceId", value: self.id!) - directStreamURL.addQueryItem(name: "Tag", value: self.etag) - directStreamURL.addQueryItem(name: "MinSegments", value: "6") - if mediaSources.count > 1 { - directStreamURL.addQueryItem(name: "MediaSourceId", value: currentMediaSource.id) + mediaSourceID = currentMediaSource.id! + } else { + mediaSourceID = self.id! } + let requestBuilder = VideosAPI.getVideoStreamWithRequestBuilder(itemId: self.id!, + _static: true, + tag: self.etag, + minSegments: 6, + mediaSourceId: mediaSourceID) + directStreamURL = URL(string: requestBuilder.URLString)! + // MARK: VidoPlayerViewModel Creation var subtitle: String? @@ -106,7 +109,7 @@ extension BaseItemDto { let videoPlayerViewModel = VideoPlayerViewModel(item: modifiedSelfItem, title: modifiedSelfItem.name ?? "", subtitle: subtitle, - directStreamURL: directStreamURL.url!, + directStreamURL: directStreamURL, transcodedStreamURL: transcodedStreamURL?.url, streamType: streamType, response: response,