drpy support local

pull/137/head
FongMi 2 years ago
parent ba25fcd6ab
commit 459bf1b8d8
  1. 5
      app/src/main/AndroidManifest.xml
  2. 7
      app/src/main/java/com/fongmi/android/tv/api/JsLoader.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  4. 1
      drpy/build.gradle
  5. 48
      drpy/src/main/java/com/hiker/drpy/Loader.java
  6. 49
      drpy/src/main/java/com/hiker/drpy/Prefers.java
  7. 18
      drpy/src/main/java/com/hiker/drpy/method/Local.java

@ -39,6 +39,11 @@
</provider> </provider>
<provider
android:name="com.hiker.drpy.Loader"
android:authorities="com.hiker.drpy.provider"
android:exported="false" />
<activity <activity
android:name=".ui.activity.CrashActivity" android:name=".ui.activity.CrashActivity"
android:process=":error_activity" /> android:process=":error_activity" />

@ -3,7 +3,6 @@ package com.fongmi.android.tv.api;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull; import com.github.catvod.crawler.SpiderNull;
import com.hiker.drpy.Loader;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -28,11 +27,7 @@ public class JsLoader {
} }
private void init() { private void init() {
try {
Loader.init(App.get());
} catch (Throwable e) {
e.printStackTrace();
}
} }
public Spider getSpider(String key, String api, String ext) { public Spider getSpider(String key, String api, String ext) {

@ -14,7 +14,7 @@ import java.util.regex.Pattern;
public class Sniffer { public class Sniffer {
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"; public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
public static final Pattern RULE = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*"); public static final Pattern RULE = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*");
public static boolean isVideoFormat(String url) { public static boolean isVideoFormat(String url) {

@ -15,6 +15,7 @@ dependencies {
implementation project(':catvod') implementation project(':catvod')
implementation project(':media-lib-common') implementation project(':media-lib-common')
implementation 'androidx.annotation:annotation:1.5.0' implementation 'androidx.annotation:annotation:1.5.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'wang.harlon.quickjs:wrapper-android:0.20.2' implementation 'wang.harlon.quickjs:wrapper-android:0.20.2'
api 'com.google.code.gson:gson:' + gsonVersion api 'com.google.code.gson:gson:' + gsonVersion
api 'com.squareup.okhttp3:okhttp:' + okhttpVersion api 'com.squareup.okhttp3:okhttp:' + okhttpVersion

@ -1,13 +1,18 @@
package com.hiker.drpy; package com.hiker.drpy;
import android.content.Context; import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.util.UriUtil; import androidx.media3.common.util.UriUtil;
import com.whl.quickjs.android.QuickJSLoader; import com.whl.quickjs.android.QuickJSLoader;
import com.whl.quickjs.wrapper.JSModule; import com.whl.quickjs.wrapper.JSModule;
public class Loader { public class Loader extends ContentProvider {
static { static {
try { try {
@ -16,7 +21,7 @@ public class Loader {
} }
} }
public static void init(Context context) { private void setModuleLoader() {
JSModule.setModuleLoader(new JSModule.ModuleLoader() { JSModule.setModuleLoader(new JSModule.ModuleLoader() {
@Override @Override
public String convertModuleName(String moduleBaseName, String moduleName) { public String convertModuleName(String moduleBaseName, String moduleName) {
@ -25,8 +30,43 @@ public class Loader {
@Override @Override
public String getModuleScript(String moduleName) { public String getModuleScript(String moduleName) {
return Module.get().load(context, moduleName); return Module.get().load(getContext(), moduleName);
} }
}); });
} }
@Override
public boolean onCreate() {
Prefers.setContext(getContext());
setModuleLoader();
return true;
}
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
return null;
}
@Nullable
@Override
public String getType(@NonNull Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
return null;
}
@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
return 0;
}
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
return 0;
}
} }

@ -0,0 +1,49 @@
package com.hiker.drpy;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import java.lang.ref.WeakReference;
public class Prefers {
private WeakReference<Context> context;
private static class Loader {
static volatile Prefers INSTANCE = new Prefers();
}
private static Prefers get() {
return Loader.INSTANCE;
}
private Context getContext() {
return context.get();
}
public static void setContext(Context context) {
get().context = new WeakReference<>(context);
}
private static SharedPreferences getPrefers() {
return PreferenceManager.getDefaultSharedPreferences(get().getContext());
}
public static String get(String key, String defaultValue) {
return getPrefers().getString(key, defaultValue);
}
public static String get(String key) {
return get(key, "");
}
public static void put(String key, String value) {
getPrefers().edit().putString(key, value).apply();
}
public static void remove(String key) {
getPrefers().edit().remove(key).apply();
}
}

@ -2,30 +2,26 @@ package com.hiker.drpy.method;
import androidx.annotation.Keep; import androidx.annotation.Keep;
import com.hiker.drpy.Prefers;
import com.whl.quickjs.wrapper.JSMethod; import com.whl.quickjs.wrapper.JSMethod;
import java.util.HashMap;
import java.util.Map;
public class Local { public class Local {
private final Map<String, String> maps = new HashMap<>();
@Keep @Keep
@JSMethod @JSMethod
public String get(String R_KEY, String k) { public String get(String rule, String key) {
return maps.get("js_engine_" + R_KEY + "_" + k); return Prefers.get("js_engine_" + rule + "_" + key);
} }
@Keep @Keep
@JSMethod @JSMethod
public void set(String R_KEY, String k, String v) { public void set(String rule, String key, String value) {
maps.put("js_engine_" + R_KEY + "_" + k, v); Prefers.put("js_engine_" + rule + "_" + key, value);
} }
@Keep @Keep
@JSMethod @JSMethod
public void delete(String R_KEY, String k) { public void delete(String rule, String key) {
maps.remove("js_engine_" + R_KEY + "_" + k); Prefers.remove("js_engine_" + rule + "_" + key);
} }
} }

Loading…
Cancel
Save