diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index ee4f9965c..cbf0f3338 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -28,9 +28,10 @@ # CatVod -keep class com.github.catvod.crawler.** { *; } +-keep class * extends com.github.catvod.crawler.Spider -# Pyramid --keep class com.undcover.freedom.pyramid.** { *; } +# QuickJS +-keep class com.whl.quickjs.wrapper.** { *; } # IJK -keep class tv.danmaku.ijk.media.player.** { *; } diff --git a/drpy/build.gradle b/drpy/build.gradle index 342baa446..b8d4da6ed 100644 --- a/drpy/build.gradle +++ b/drpy/build.gradle @@ -13,8 +13,9 @@ android { dependencies { implementation project(':catvod') - implementation 'wang.harlon.quickjs:wrapper-android:0.11.0' - implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10' + implementation 'androidx.annotation:annotation:1.5.0' implementation 'com.google.code.gson:gson:2.10' + implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10' implementation 'org.jsoup:jsoup:1.15.3' + implementation 'wang.harlon.quickjs:wrapper-android:0.11.0' } \ No newline at end of file diff --git a/drpy/src/main/java/com/hiker/drpy/Loader.java b/drpy/src/main/java/com/hiker/drpy/Loader.java index ac4189513..d08078f65 100644 --- a/drpy/src/main/java/com/hiker/drpy/Loader.java +++ b/drpy/src/main/java/com/hiker/drpy/Loader.java @@ -2,6 +2,8 @@ package com.hiker.drpy; import android.content.Context; +import androidx.annotation.Keep; + import com.hiker.drpy.method.Console; import com.hiker.drpy.method.Global; import com.hiker.drpy.method.Local; @@ -17,11 +19,22 @@ public class Loader { QuickJSLoader.init(); } + @Keep public void init(Context context) { setModuleLoader(context); Worker.submit(this::initJS); } + @Keep + public Spider spider(String key, String api, String ext) { + return new Spider(ctx, key, api, ext); + } + + @Keep + public void destroy() { + Worker.submit(() -> ctx.destroy()); + } + private void setModuleLoader(Context context) { JSModule.setModuleLoader(new JSModule.ModuleLoader() { @Override @@ -43,7 +56,4 @@ public class Loader { Global.create(ctx).setProperty(); } - public Spider spider(String key, String api, String ext) { - return new Spider(ctx, key, api, ext); - } } diff --git a/drpy/src/main/java/com/hiker/drpy/Spider.java b/drpy/src/main/java/com/hiker/drpy/Spider.java index 525067173..32fedca84 100644 --- a/drpy/src/main/java/com/hiker/drpy/Spider.java +++ b/drpy/src/main/java/com/hiker/drpy/Spider.java @@ -12,11 +12,11 @@ import java.util.concurrent.ExecutionException; public class Spider extends com.github.catvod.crawler.Spider { - private QuickJSContext ctx; + private final QuickJSContext ctx; private JSObject jsObject; - private String ext; - private String key; - private String api; + private final String ext; + private final String key; + private final String api; public Spider(QuickJSContext ctx, String key, String api, String ext) { this.ctx = ctx; diff --git a/drpy/src/main/java/com/hiker/drpy/method/Console.java b/drpy/src/main/java/com/hiker/drpy/method/Console.java index 4ad69eba2..3fea185b6 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Console.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Console.java @@ -2,12 +2,15 @@ package com.hiker.drpy.method; import android.util.Log; +import androidx.annotation.Keep; + import com.whl.quickjs.wrapper.JSMethod; public class Console { private final String TAG = Console.class.getSimpleName(); + @Keep @JSMethod public void log(Object msg) { Log.d(TAG, String.valueOf(msg)); diff --git a/drpy/src/main/java/com/hiker/drpy/method/Global.java b/drpy/src/main/java/com/hiker/drpy/method/Global.java index 8cde8754e..5c73170e0 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Global.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Global.java @@ -3,6 +3,8 @@ package com.hiker.drpy.method; import android.text.TextUtils; import android.util.Base64; +import androidx.annotation.Keep; + import com.google.gson.Gson; import com.hiker.drpy.Parser; import com.hiker.drpy.net.OkHttp; @@ -45,6 +47,7 @@ public class Global { } } + @Keep @JSMethod public JSObject req(String url, JSObject object) { try { @@ -61,6 +64,7 @@ public class Global { } } + @Keep @JSMethod public String pd(String html, String rule, String urlKey) { try { @@ -71,6 +75,7 @@ public class Global { } } + @Keep @JSMethod public JSObject pdfa(String html, String rule) { try { @@ -81,6 +86,7 @@ public class Global { } } + @Keep @JSMethod public String pdfh(String html, String rule) { try { @@ -91,6 +97,7 @@ public class Global { } } + @Keep @JSMethod public JSObject pdfl(String html, String rule, String texts, String urls, String urlKey) { try { @@ -101,6 +108,7 @@ public class Global { } } + @Keep @JSMethod public String joinUrl(String parent, String child) { try { diff --git a/drpy/src/main/java/com/hiker/drpy/method/Local.java b/drpy/src/main/java/com/hiker/drpy/method/Local.java index a8ee975f1..2de1e5c8c 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Local.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Local.java @@ -1,5 +1,7 @@ package com.hiker.drpy.method; +import androidx.annotation.Keep; + import com.whl.quickjs.wrapper.JSMethod; import java.util.HashMap; @@ -9,16 +11,19 @@ public class Local { private final Map maps = new HashMap<>(); + @Keep @JSMethod public String get(String R_KEY, String k) { return maps.get("js_engine_" + R_KEY + "_" + k); } + @Keep @JSMethod public void set(String R_KEY, String k, String v) { maps.put("js_engine_" + R_KEY + "_" + k, v); } + @Keep @JSMethod public void delete(String R_KEY, String k) { maps.remove("js_engine_" + R_KEY + "_" + k); diff --git a/pyramid/build.gradle b/pyramid/build.gradle index ea3eb2678..b34e74b11 100644 --- a/pyramid/build.gradle +++ b/pyramid/build.gradle @@ -30,5 +30,6 @@ android { dependencies { implementation project(':catvod') + implementation 'androidx.annotation:annotation:1.5.0' implementation 'com.google.code.gson:gson:2.10' } \ No newline at end of file diff --git a/pyramid/src/main/java/com/undcover/freedom/pyramid/Loader.java b/pyramid/src/main/java/com/undcover/freedom/pyramid/Loader.java index 77a2eacf3..47a7272a7 100644 --- a/pyramid/src/main/java/com/undcover/freedom/pyramid/Loader.java +++ b/pyramid/src/main/java/com/undcover/freedom/pyramid/Loader.java @@ -2,6 +2,8 @@ package com.undcover.freedom.pyramid; import android.content.Context; +import androidx.annotation.Keep; + import com.chaquo.python.PyObject; import com.chaquo.python.Python; import com.chaquo.python.android.AndroidPlatform; @@ -11,12 +13,14 @@ public class Loader { private PyObject app; private String cache; + @Keep private void init(Context context) { if (!Python.isStarted()) Python.start(new AndroidPlatform(context)); cache = context.getCacheDir().getAbsolutePath() + "/plugin/"; app = Python.getInstance().getModule("app"); } + @Keep public Spider spider(Context context, String name, String ext) { if (app == null) init(context); PyObject obj = app.callAttr("init_py", cache, name, ext);