diff --git a/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt b/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt index a9c3293ad..398dc0cf4 100644 --- a/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt +++ b/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt @@ -16,6 +16,10 @@ class VoeExtractor(private val client: OkHttpClient) { private val playlistUtils by lazy { PlaylistUtils(client) } + private val linkRegex = "(http|https)://([\\w_-]+(?:\\.[\\w_-]+)+)([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])".toRegex() + + private val base64Regex = Regex("'.*'") + @Serializable data class VideoLinkDTO(val file: String) @@ -27,11 +31,12 @@ class VoeExtractor(private val client: OkHttpClient) { val playlistUrl = when { // Layout 1 script.contains("sources") -> { - script.substringAfter("hls': '").substringBefore("'") + val link = script.substringAfter("hls': '").substringBefore("'") + if (linkRegex.matches(link)) link else String(Base64.decode(link, Base64.DEFAULT)) } // Layout 2 script.contains("wc0") -> { - val base64 = Regex("'.*'").find(script)!!.value + val base64 = base64Regex.find(script)!!.value val decoded = Base64.decode(base64, Base64.DEFAULT).let(::String) json.decodeFromString(decoded).file }