mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 13:37:24 +00:00
accept stremio subtitle download urls
This commit is contained in:
parent
11ed364094
commit
11b9c6a12a
7 changed files with 540 additions and 1 deletions
|
|
@ -169,12 +169,25 @@ final class DreamioWebViewController: UIViewController {
|
|||
}
|
||||
};
|
||||
|
||||
const isStremioSubtitleDownloadURL = (url) => {
|
||||
try {
|
||||
const parsed = new URL(url, window.location.href);
|
||||
const host = parsed.hostname.toLowerCase();
|
||||
const path = parsed.pathname.toLowerCase();
|
||||
return host === "strem.io" || host.endsWith(".strem.io")
|
||||
? /\/[a-z]{2,3}\/download(?:\/|$)/i.test(path) || /\/download(?:\/|$)/i.test(path)
|
||||
: false;
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const isSubtitleURL = (url) => {
|
||||
if (!url || isOpenSubtitlesManifestID(url)) {
|
||||
return false;
|
||||
}
|
||||
return !isProbablyNonSubtitleAssetURL(url)
|
||||
&& (isDirectSubtitleFileURL(url) || isOpenSubtitlesDownloadURL(url));
|
||||
&& (isDirectSubtitleFileURL(url) || isOpenSubtitlesDownloadURL(url) || isStremioSubtitleDownloadURL(url));
|
||||
};
|
||||
|
||||
const findResolverURL = () => {
|
||||
|
|
|
|||
|
|
@ -256,6 +256,7 @@ enum SubtitleCandidateParser {
|
|||
}
|
||||
guard isDirectSubtitleFile(url)
|
||||
|| isOpenSubtitlesDownloadURL(url)
|
||||
|| isStremioSubtitleDownloadURL(url)
|
||||
else {
|
||||
return nil
|
||||
}
|
||||
|
|
@ -282,6 +283,18 @@ enum SubtitleCandidateParser {
|
|||
|| path.range(of: #"(^|/)subtitles?(/|$)"#, options: .regularExpression) != nil
|
||||
}
|
||||
|
||||
private static func isStremioSubtitleDownloadURL(_ url: URL) -> Bool {
|
||||
guard let host = url.host?.lowercased(),
|
||||
host == "strem.io" || host.hasSuffix(".strem.io")
|
||||
else {
|
||||
return false
|
||||
}
|
||||
|
||||
let path = url.path.lowercased()
|
||||
return path.range(of: #"^/[a-z]{2,3}/download(/|$)"#, options: .regularExpression) != nil
|
||||
|| path.range(of: #"(^|/)download(/|$)"#, options: .regularExpression) != nil
|
||||
}
|
||||
|
||||
private static func isOpenSubtitlesManifestIdentifier(_ url: URL) -> Bool {
|
||||
guard url.host?.localizedCaseInsensitiveContains("opensubtitles") == true else {
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ final class SubtitleResolver: SubtitleResolving {
|
|||
let lowercased = url.absoluteString.lowercased()
|
||||
return ["srt", "vtt", "ass", "ssa", "sub"].contains(url.pathExtension.lowercased())
|
||||
|| [".srt?", ".vtt?", ".ass?", ".ssa?", ".sub?", ".srt&", ".vtt&", ".ass&", ".ssa&", ".sub&"].contains(where: lowercased.contains)
|
||||
|| isStremioSubtitleDownloadURL(url)
|
||||
}
|
||||
|
||||
private static func shouldResolve(_ url: URL) -> Bool {
|
||||
|
|
@ -138,6 +139,19 @@ final class SubtitleResolver: SubtitleResolving {
|
|||
return lowercased.contains("opensubtitles")
|
||||
|| lowercased.contains("/subtitle")
|
||||
|| lowercased.contains("subtitle")
|
||||
|| isStremioSubtitleDownloadURL(url)
|
||||
}
|
||||
|
||||
private static func isStremioSubtitleDownloadURL(_ url: URL) -> Bool {
|
||||
guard let host = url.host?.lowercased(),
|
||||
host == "strem.io" || host.hasSuffix(".strem.io")
|
||||
else {
|
||||
return false
|
||||
}
|
||||
|
||||
let path = url.path.lowercased()
|
||||
return path.range(of: #"^/[a-z]{2,3}/download(/|$)"#, options: .regularExpression) != nil
|
||||
|| path.range(of: #"(^|/)download(/|$)"#, options: .regularExpression) != nil
|
||||
}
|
||||
|
||||
private static func logRejected(_ candidate: SubtitleCandidate, responseURL: URL?, data: Data) -> SubtitleCandidate? {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue