diff options
| author | RblSb <msrblsb@gmail.com> | 2023-06-21 20:15:52 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2023-06-21 20:51:11 +0300 |
| commit | 452ac109e0a1309ff0e7212de271b2b6d3641353 (patch) | |
| tree | 492f0afbc1f025fc73607374fc897f2f96074c67 /src/client | |
| parent | c476a16ad982e778580d74b8e4120ed29118129a (diff) | |
Skip proxy for local subs
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/players/Raw.hx | 25 | ||||
| -rw-r--r-- | src/client/players/RawSubs.hx | 8 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/client/players/Raw.hx b/src/client/players/Raw.hx index dc3aed5..08025eb 100644 --- a/src/client/players/Raw.hx +++ b/src/client/players/Raw.hx @@ -6,9 +6,11 @@ import Types.VideoItem; import client.Main.ge; import haxe.Timer; import js.Browser.document; +import js.Browser; import js.hlsjs.Hls; import js.html.Element; import js.html.InputElement; +import js.html.URL; import js.html.VideoElement; using StringTools; @@ -119,7 +121,28 @@ class Raw implements IPlayer { } if (isHls) initHlsSource(video, url); restartControlsHider(); - RawSubs.loadSubs(item, video); + + var subsUrl = item.subs ?? return; + if (subsUrl.length == 0) return; + if (subsUrl.startsWith("/")) { + RawSubs.loadSubs(subsUrl, video); + return; + } + if (!subsUrl.startsWith("http")) { + final protocol = Browser.location.protocol; + subsUrl = '$protocol//$subsUrl'; + } + final subsUri = try { + new URL(subsUrl); + } catch (e) { + Main.serverMessage('Failed to add subs: bad url ($subsUrl)'); + return; + } + // make local url as relative path to skip proxy + if (subsUri.hostname == main.host || subsUri.hostname == main.globalIp) { + subsUrl = subsUri.pathname; + } + RawSubs.loadSubs(subsUrl, video); } function restartControlsHider():Void { diff --git a/src/client/players/RawSubs.hx b/src/client/players/RawSubs.hx index 09b21d1..d7e32e2 100644 --- a/src/client/players/RawSubs.hx +++ b/src/client/players/RawSubs.hx @@ -18,12 +18,12 @@ private typedef Duration = { } class RawSubs { - public static function loadSubs(item:VideoItem, video:VideoElement):Void { - if (item.subs == null || item.subs.length == 0) return; - final ext = PathTools.urlExtension(item.subs); + public static function loadSubs(subsUrl:String, video:VideoElement):Void { + if (subsUrl == null || subsUrl.length == 0) return; + final ext = PathTools.urlExtension(subsUrl); // do not load subs if there is custom plugin if (JsApi.hasSubtitleSupport(ext)) return; - var url = encodeURI(item.subs); + var url = encodeURI(subsUrl); if (!url.startsWith("/")) { final protocol = Browser.location.protocol; if (!url.startsWith("http")) url = '$protocol//$url'; |
