diff --git a/Sora/Utils/Extensions/JavaScriptCore+Extensions.swift b/Sora/Utils/JSLoader/JavaScriptCore-Extensions.swift similarity index 100% rename from Sora/Utils/Extensions/JavaScriptCore+Extensions.swift rename to Sora/Utils/JSLoader/JavaScriptCore-Extensions.swift diff --git a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift index d6737d8..a873c75 100644 --- a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift +++ b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift @@ -1872,7 +1872,7 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele if let heightStr = resolutionPart.components(separatedBy: "x").last, let height = Int(heightStr) { - let nextLine = lines[index + 1].trimmingCharacters(in: .whitespacesAndNewlines) + let nextLine = lines[index + 1].trimmingCharacters(in: .whitespacesAndNewline) let qualityName = getQualityName(for: height) var qualityURL = nextLine diff --git a/Sora/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift index 19f32c1..6483e29 100644 --- a/Sora/Views/MediaInfoView/MediaInfoView.swift +++ b/Sora/Views/MediaInfoView/MediaInfoView.swift @@ -702,25 +702,28 @@ struct MediaInfoView: View { index += 1 } } - else if let streams = streams as? [[String: Any]] - { - if let currTitle = streams[index]["title"] as? String - { + else if let streams = streams as? [[String: Any]] { + if let currTitle = streams[index]["title"] as? String { title = currTitle streamUrl = (streams[index]["streamUrl"] as? String) ?? "" - } - else - { + } else { title = "Stream \(streamIndex)" streamUrl = (streams[index]["streamUrl"] as? String)! } - headers = streams[index]["headers"] as? [String:String] ?? [:] + + if let rawHeaders = streams[index]["headers"] { + if let headerDict = rawHeaders as? [String: String] { + headers = headerDict + } else { + Logger.shared.log("Headers found but not in expected format", type: "Warning") + } + } index += 1 } alert.addAction(UIAlertAction(title: title, style: .default) { _ in - self.playStream(url: streamUrl, fullURL: fullURL, subtitles: subtitles,headers: headers) + self.playStream(url: streamUrl, fullURL: fullURL, subtitles: subtitles, headers: headers) }) streamIndex += 1 @@ -805,6 +808,7 @@ struct MediaInfoView: View { DropManager.shared.showDrop(title: "Error", subtitle: "Invalid stream URL", duration: 2.0, icon: UIImage(systemName: "xmark.circle")) return } + let safeHeaders: [String: String]? = headers let customMediaPlayer = CustomMediaPlayerViewController( module: module, @@ -818,7 +822,7 @@ struct MediaInfoView: View { subtitlesURL: subtitles, aniListID: itemID ?? 0, episodeImageUrl: selectedEpisodeImage, - headers: headers ?? nil + headers: safeHeaders ) customMediaPlayer.modalPresentationStyle = .fullScreen Logger.shared.log("Opening custom media player with url: \(url)") diff --git a/Sulfur.xcodeproj/project.pbxproj b/Sulfur.xcodeproj/project.pbxproj index 6021fd8..4cc1c0d 100644 --- a/Sulfur.xcodeproj/project.pbxproj +++ b/Sulfur.xcodeproj/project.pbxproj @@ -67,7 +67,7 @@ 1E9FF1D32D403E49008AC100 /* SettingsViewLoggerFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9FF1D22D403E42008AC100 /* SettingsViewLoggerFilter.swift */; }; 1EAC7A322D888BC50083984D /* MusicProgressSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAC7A312D888BC50083984D /* MusicProgressSlider.swift */; }; 1EF5C3A92DB988E40032BF07 /* CommunityLib.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EF5C3A82DB988D70032BF07 /* CommunityLib.swift */; }; - 73D164D52D8B5B470011A360 /* JavaScriptCore+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73D164D42D8B5B340011A360 /* JavaScriptCore+Extensions.swift */; }; + 73D164D52D8B5B470011A360 /* JavaScriptCore-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73D164D42D8B5B340011A360 /* JavaScriptCore-Extensions.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -131,7 +131,7 @@ 1E9FF1D22D403E42008AC100 /* SettingsViewLoggerFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewLoggerFilter.swift; sourceTree = ""; }; 1EAC7A312D888BC50083984D /* MusicProgressSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicProgressSlider.swift; sourceTree = ""; }; 1EF5C3A82DB988D70032BF07 /* CommunityLib.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommunityLib.swift; sourceTree = ""; }; - 73D164D42D8B5B340011A360 /* JavaScriptCore+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JavaScriptCore+Extensions.swift"; sourceTree = ""; }; + 73D164D42D8B5B340011A360 /* JavaScriptCore-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JavaScriptCore-Extensions.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -286,7 +286,6 @@ 133D7C862D2BE2640075467E /* Extensions */ = { isa = PBXGroup; children = ( - 73D164D42D8B5B340011A360 /* JavaScriptCore+Extensions.swift */, 136BBE7F2DB1038000906B5E /* Notification+Name.swift */, 1327FBA82D758DEA00FC6689 /* UIDevice+Model.swift */, 1314D0AD2DD0F4BB00759A3F /* UserDefaults.swift */, @@ -314,6 +313,7 @@ isa = PBXGroup; children = ( 133D7C8B2D2BE2640075467E /* JSController.swift */, + 73D164D42D8B5B340011A360 /* JavaScriptCore-Extensions.swift */, 132AF1202D99951700A0140B /* JSController-Streams.swift */, 132AF1222D9995C300A0140B /* JSController-Details.swift */, 132AF1242D9995F900A0140B /* JSController-Search.swift */, @@ -583,7 +583,7 @@ 133D7C6E2D2BE2500075467E /* SoraApp.swift in Sources */, 138AA1B92D2D66FD0021F9DF /* CircularProgressBar.swift in Sources */, 13DB468D2D90093A008CBC03 /* Anilist-Login.swift in Sources */, - 73D164D52D8B5B470011A360 /* JavaScriptCore+Extensions.swift in Sources */, + 73D164D52D8B5B470011A360 /* JavaScriptCore-Extensions.swift in Sources */, 132AF1232D9995C300A0140B /* JSController-Details.swift in Sources */, 13B77E202DA457AA00126FDF /* AniListPushUpdates.swift in Sources */, 13EA2BD52D32D97400C1EBD7 /* CustomPlayer.swift in Sources */,