forked from AlmightyHak/extensions-source
* fix(pt/vizer): Fixed pt/Vizer videos empty (fix #256) * feat: Added new lib extractor: fireplayer-extractor
This commit is contained in:
parent
53856f9275
commit
8f7d9267d4
8 changed files with 177 additions and 72 deletions
10
lib/fireplayer-extractor/build.gradle.kts
Normal file
10
lib/fireplayer-extractor/build.gradle.kts
Normal file
|
@ -0,0 +1,10 @@
|
|||
plugins {
|
||||
id("lib-android")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1") {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8")
|
||||
}
|
||||
implementation(project(":lib:playlist-utils"))
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package eu.kanade.tachiyomi.lib.fireplayerextractor
|
||||
|
||||
import dev.datlag.jsunpacker.JsUnpacker
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.FormBody
|
||||
import okhttp3.Headers
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class FireplayerExtractor(
|
||||
private val client: OkHttpClient,
|
||||
private val defaultHost: String? = null,
|
||||
) {
|
||||
fun videosFromUrl(
|
||||
url: String,
|
||||
videoNameGen: (String) -> String = { quality -> quality },
|
||||
videoHost: String? = null,
|
||||
): List<Video> {
|
||||
val host = videoHost ?: defaultHost ?: "https://${url.toHttpUrl().host}"
|
||||
|
||||
val headers = Headers.Builder()
|
||||
.set("X-Requested-With", "XMLHttpRequest")
|
||||
.set("Referer", host)
|
||||
.set("Origin", "https://${host.toHttpUrl().host}")
|
||||
.set("X-Requested-With", "XMLHttpRequest")
|
||||
.build()
|
||||
|
||||
var id = url.substringAfterLast("/")
|
||||
|
||||
if (id.length < 32) {
|
||||
val doc = client.newCall(GET(url, headers)).execute().asJsoup()
|
||||
|
||||
val script =
|
||||
doc.selectFirst("script:containsData(eval):containsData(p,a,c,k,e,d)")?.data()
|
||||
?.let(JsUnpacker::unpackAndCombine)
|
||||
?: doc.selectFirst("script:containsData(FirePlayer)")?.data()
|
||||
|
||||
if (script?.contains("FirePlayer(") == true) {
|
||||
id = script.substringAfter("FirePlayer(\"").substringBefore('"')
|
||||
}
|
||||
}
|
||||
|
||||
val postUrl = "$host/player/index.php?data=$id&do=getVideo"
|
||||
val body = FormBody.Builder()
|
||||
.add("hash", id)
|
||||
.add("r", "")
|
||||
.build()
|
||||
|
||||
val masterUrl = client.newCall(POST(postUrl, headers, body = body)).execute()
|
||||
.body.string()
|
||||
.substringAfter("securedLink\":\"")
|
||||
.substringBefore('"')
|
||||
.replace("\\", "")
|
||||
|
||||
val playlistUtils = PlaylistUtils(client, headers)
|
||||
|
||||
return playlistUtils.extractFromHls(masterUrl, videoNameGen = videoNameGen)
|
||||
}
|
||||
}
|
|
@ -17,7 +17,12 @@ class MixDropExtractor(private val client: OkHttpClient) {
|
|||
externalSubs: List<Track> = emptyList(),
|
||||
referer: String = DEFAULT_REFERER,
|
||||
): List<Video> {
|
||||
val headers = Headers.headersOf("Referer", referer)
|
||||
val headers = Headers.headersOf(
|
||||
"Referer",
|
||||
referer,
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
|
||||
)
|
||||
val doc = client.newCall(GET(url, headers)).execute().asJsoup()
|
||||
val unpacked = doc.selectFirst("script:containsData(eval):containsData(MDCore)")
|
||||
?.data()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue