fix(ar/Anime4Up): last update issues with Regex (#1853)

This commit is contained in:
adly98
2023-07-07 12:06:28 +03:00
committed by GitHub
parent ba50a7b604
commit 39cf2a8704
3 changed files with 20 additions and 14 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Anime4up'
pkgNameSuffix = 'ar.anime4up'
extClass = '.Anime4Up'
extVersionCode = 46
extVersionCode = 47
libVersion = '13'
}

View File

@ -156,20 +156,25 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
VoeExtractor(client).videoFromUrl(url)?.let(::listOf)
}
DOOD_REGEX.containsMatchIn(url) -> {
val finalUrl = DOOD_REGEX.find(url)!!.groupValues[0]
DoodExtractor(client).videoFromUrl("https://www.$finalUrl", "Dood mirror")?.let(::listOf)
DoodExtractor(client).videoFromUrl(url, "Dood mirror")?.let(::listOf)
}
VIDBOM_REGEX.containsMatchIn(url) -> {
val finalUrl = VIDBOM_REGEX.find(url)!!.groupValues[0]
VidBomExtractor(client).videosFromUrl("https://www.$finalUrl.html")
}
STREAMWISH_REGEX.containsMatchIn(url) -> {
val headers = headers.newBuilder()
.set("Referer", url)
.set("Accept-Encoding", "gzip, deflate, br")
.set("Accept-Language", "en-US,en;q=0.5")
.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0")
.build()
val finalUrl = STREAMWISH_REGEX.find(url)!!.groupValues[0]
StreamWishExtractor(client).videosFromUrl("https://www.$finalUrl", headers)
}
STREAMSB_REGEX.containsMatchIn(url) -> {
StreamSBExtractor(client).videosFromUrl(url, headers)
}
STREAMWISH_REGEX.containsMatchIn(url) -> {
val finalUrl = STREAMWISH_REGEX.find(url)!!.groupValues[0]
StreamWishExtractor(client).videosFromUrl("https://www.$finalUrl")
}
else -> null
} ?: emptyList()
}
@ -375,7 +380,7 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
Type("Special", "special1"),
Type("TV", "tv2"),
)
)
private fun getStatusList() = listOf(
Status("أختر", ""),
@ -383,11 +388,11 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
Status("مكتمل", "complete"),
Status("يعرض الان", "%d9%8a%d8%b9%d8%b1%d8%b6-%d8%a7%d9%84%d8%a7%d9%86-1"),
)
)
companion object {
private val VIDBOM_REGEX = Regex("(?:v[aie]d[bp][aoe]?m|myvii?d|segavid|v[aei]{1,2}dshar[er]?)\\.(?:com|net|org|xyz)(?::\\d+)?/(?:embed[/-])?([A-Za-z0-9]+)")
private val STREAMSB_REGEX = Regex("(?:view|watch|embed(?:tv)?|tube|player|cloudemb|japopav|javplaya|p1ayerjavseen|gomovizplay|stream(?:ovies)?|vidmovie|javside|aintahalu|finaltayibin|yahlusubh|taeyabathuna|)?s{0,2}b?(?:embed\\d?|play\\d?|video|fast|full|streams{0,3}|the|speed|l?anh|tvmshow|longvu|arslanrocky|chill|rity|hight|brisk|face|lvturbo|net|one|asian|ani|rapid|sonic|lona)?\\.(?:com|net|org|one|tv|xyz|fun|pro|sbs)")
private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|la|w[sf]|pm|re|yt|stream))/(?:d|e)/([0-9a-zA-Z]+)")
private val DOOD_REGEX = Regex("(do*d(?:stream)?\\.(?:com?|watch|to|s[ho]|cx|la|w[sf]|pm|re|yt|stream))/[de]/([0-9a-zA-Z]+)")
private val STREAMWISH_REGEX = Regex("((?:streamwish|anime7u|animezd|ajmidyad|khadhnayad|yadmalik|hayaatieadhab)\\.(?:com|to|sbs))/(?:e/|v/|f/)?([0-9a-zA-Z]+)")
}
}

View File

@ -4,22 +4,23 @@ import dev.datlag.jsunpacker.JsUnpacker
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Headers
import okhttp3.OkHttpClient
class StreamWishExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
fun videosFromUrl(url: String, headers: Headers): List<Video> {
val doc = client.newCall(GET(url)).execute().asJsoup()
val script = doc.selectFirst("script:containsData(sources)")!!.data()
val scriptData = if("eval" in script) JsUnpacker.unpackAndCombine(script)!! else script
val scriptData = if(script.contains("eval")) JsUnpacker.unpackAndCombine(script)!! else script
val m3u8 = Regex("sources:\\s*\\[\\{\\s*\\t*file:\\s*[\"']([^\"']+)").find(scriptData)!!.groupValues[1]
val streamLink = Regex("(.*)_,(.*),\\.urlset/master(.*)").find(m3u8)!!
val streamQuality = streamLink.groupValues[2].split(",").reversed()
val qualities = scriptData.substringAfter("'qualityLabels':").substringBefore("},")
val qualities = scriptData.substringAfter("qualityLabels").substringBefore("}")
val qRegex = Regex("\".*?\":\\s*\"(.*?)\"").findAll(qualities)
return qRegex.mapIndexed { index, matchResult ->
val src = streamLink.groupValues[1] + "_" + streamQuality[index] + "/index-v1-a1" + streamLink.groupValues[3]
val quality = "Mirror: " + matchResult.groupValues[1]
Video(src, quality, src)
Video(src, quality, src, headers)
}.toList()
}
}