Fix VidGuard's proguard

This commit is contained in:
Cuong-Tran
2026-05-26 12:11:00 +07:00
parent e26c465875
commit 5f72f578e7
3 changed files with 17 additions and 7 deletions

View File

@@ -2,6 +2,12 @@ plugins {
alias(kei.plugins.library)
}
android {
defaultConfig {
consumerProguardFiles("proguard-rules.pro")
}
}
dependencies {
implementation(project(":lib:playlistutils"))
implementation("org.mozilla:rhino:1.7.14")

View File

@@ -0,0 +1,7 @@
# Keep Rhino (Mozilla JavaScript engine) classes used by VidGuardExtractor
-keep class org.mozilla.javascript.Context { *; }
-keep class org.mozilla.javascript.NativeJSON { *; }
-keep class org.mozilla.javascript.NativeObject { *; }
-keep class org.mozilla.javascript.Scriptable { *; }
-keep class org.mozilla.javascript.** { *; }
-dontwarn org.mozilla.javascript.**

View File

@@ -5,30 +5,27 @@ import android.util.Log
import aniyomi.lib.playlistutils.PlaylistUtils
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import keiyoushi.utils.parseAs
import keiyoushi.utils.useAsJsoup
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import okhttp3.OkHttpClient
import org.mozilla.javascript.Context
import org.mozilla.javascript.NativeJSON
import org.mozilla.javascript.NativeObject
import org.mozilla.javascript.Scriptable
import uy.kohesive.injekt.injectLazy
class VidGuardExtractor(private val client: OkHttpClient) {
private val playlistUtils by lazy { PlaylistUtils(client) }
private val json: Json by injectLazy()
fun videosFromUrl(url: String, prefix: String) = videosFromUrl(url) { "${prefix}VidGuard:$it" }
fun videosFromUrl(url: String, videoNameGen: (String) -> String = { quality -> "VidGuard:$quality" }): List<Video> {
try {
val res = client.newCall(GET(url)).execute().asJsoup()
val res = client.newCall(GET(url)).execute().useAsJsoup()
val scriptData = res.selectFirst("script:containsData(eval)")?.data() ?: return emptyList()
val jsonStr2 = json.decodeFromString<SvgObject>(runJS2(scriptData))
val jsonStr2 = runJS2(scriptData).parseAs<SvgObject>()
val playlistUrl = sigDecode(jsonStr2.stream)
return playlistUtils.extractFromHls(playlistUrl, videoNameGen = videoNameGen)