pull/144/head
jun 1 year ago
parent d80c5102c3
commit 5bd37020e6
  1. 17
      app/src/python/java/com/github/catvod/crawler/pyLoader.java
  2. 5
      app/src/python/java/com/undcover/freedom/pyramid/PythonLoader.java
  3. 22
      app/src/python/java/com/undcover/freedom/pyramid/PythonSpider.java
  4. 2
      gradle.properties
  5. 4
      pyramid/build.gradle
  6. 1
      settings.gradle

@ -1,20 +1,19 @@
// 文件: app/src/python/java/com/github/catvod/crawler/python/PyLoader.java // 文件: app/src/python/java/com/github/catvod/crawler/python/PyLoader.java
package com.github.catvod.crawler; package com.github.catvod.crawler;
import android.Manifest;
import android.content.pm.PackageManager;
import android.util.Log; import android.util.Log;
import com.chaquo.python.PyObject;
import androidx.core.content.ContextCompat;
import com.github.catvod.crawler.python.IPyLoader; import com.github.catvod.crawler.python.IPyLoader;
import com.github.tvbox.osc.base.App; import com.github.tvbox.osc.base.App;
import com.github.tvbox.osc.util.LOG; import com.github.tvbox.osc.util.LOG;
import com.github.tvbox.osc.util.MD5; import com.github.tvbox.osc.util.MD5;
import com.undcover.freedom.pyramid.PythonLoader; import com.undcover.freedom.pyramid.PythonLoader;
import com.undcover.freedom.pyramid.PythonSpider; import com.undcover.freedom.pyramid.PythonSpider;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -50,12 +49,16 @@ public class pyLoader implements IPyLoader {
return spiders.get(key); return spiders.get(key);
} }
try { try {
if (ContextCompat.checkSelfPermission(App.getInstance(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
Log.i("PyLoader", "无存储权限,终止执行");
return new SpiderNull();
}
Log.i("PyLoader", "echo-getSpider url: " + getPyUrl(cls, ext)); Log.i("PyLoader", "echo-getSpider url: " + getPyUrl(cls, ext));
Spider sp = pythonLoader.getSpider(key, getPyUrl(cls, ext)); Spider sp = pythonLoader.getSpider(key, getPyUrl(cls, ext));
// Log.i("PyLoader", "echo-getSpider homeContent: " + sp.homeContent(true)); // Log.i("PyLoader", "echo-getSpider homeContent: " + sp.homeContent(true));
spiders.put(key, sp); spiders.put(key, sp);
Log.i("PyLoader", "echo-getSpider 加载spider: " + key); Log.i("PyLoader", "echo-getSpider 加载spider: " + key);
return (Spider)sp; return sp;
} catch (Throwable th) { } catch (Throwable th) {
th.printStackTrace(); th.printStackTrace();
} }

@ -122,7 +122,6 @@ public class PythonLoader {
} }
try { try {
PythonSpider sp = new PythonSpider(key, cache); PythonSpider sp = new PythonSpider(key, cache);
Thread initThread = new Thread(() -> { Thread initThread = new Thread(() -> {
try { try {
sp.init(app, url); sp.init(app, url);
@ -132,13 +131,11 @@ public class PythonLoader {
}); });
initThread.start(); initThread.start();
initThread.join(12_000); initThread.join(12_000);
if (initThread.isAlive()) { if (initThread.isAlive()) {
PyLog.e("echo-init方法执行超时超时"); PyLog.e("echo-init方法执行超时超时");
initThread.interrupt(); initThread.interrupt();
throw new Exception("echo-init方法执行超时"); return new SpiderNull();
} }
spiders.put(key, sp); spiders.put(key, sp);
return sp; return sp;
} catch (Throwable th) { } catch (Throwable th) {

@ -130,28 +130,6 @@ public class PythonSpider extends Spider {
return sb.toString(); return sb.toString();
} }
// public Object[] proxyLocal(Map param) {
// PyLog.nw("localProxy", map2json(param).toString());
// List<PyObject> poList = app.callAttr("localProxy", pySpider, map2json(param).toString()).asList();
// PyLog.nw("localProxy" + "-" + name, poList.toString());
// int code = poList.get(0).toInt();
// String type = poList.get(1).toString();
// String Content = poList.get(2).toString();
// InputStream stream = new ByteArrayInputStream("".getBytes());
// Object extra = null;
// try {
// if (!Content.isEmpty()) {
// stream = new ByteArrayInputStream(Content.getBytes("utf8"));
// }
// if (poList.size() > 3) {
// extra = poList.get(3).toJava(Map.class);
// }
// } catch (UnsupportedEncodingException e) {
// throw new RuntimeException(e);
// }
// return new Object[]{code, type, stream, extra};
// }
public Object[] proxyLocal(Map<String,String> params) { public Object[] proxyLocal(Map<String,String> params) {
Log.i("PyLoader","echo-proxyLocal:param"+params.toString()); Log.i("PyLoader","echo-proxyLocal:param"+params.toString());
List<PyObject> list = app.callAttr("localProxy", pySpider, map2json(params).toString()).asList(); List<PyObject> list = app.callAttr("localProxy", pySpider, map2json(params).toString()).asList();

@ -17,4 +17,4 @@ android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX # Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true android.enableJetifier=true
IsDebug=true IsDebug=true
org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED #org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED

@ -11,6 +11,7 @@ android {
targetSdkVersion 28 targetSdkVersion 28
ndk { ndk {
//abiFilters 'arm64-v8a' //abiFilters 'arm64-v8a'
//noinspection ChromeOsAbiSupport
abiFilters "armeabi-v7a" abiFilters "armeabi-v7a"
} }
python { python {
@ -31,6 +32,7 @@ android {
buildTypes { buildTypes {
all { all {
ndk { ndk {
//noinspection ChromeOsAbiSupport
abiFilters 'armeabi-v7a' abiFilters 'armeabi-v7a'
} }
} }
@ -52,7 +54,7 @@ android {
python.srcDirs = ["src/python"] python.srcDirs = ["src/python"]
} }
} }
// buildToolsVersion '30.0.2' buildToolsVersion '30.0.2'
} }
dependencies { dependencies {

@ -2,5 +2,4 @@ rootProject.name = "TVBox"
include ':app' include ':app'
include ':player' include ':player'
include ':quickjs' include ':quickjs'
include ':clinglibrary'
include ':pyramid' include ':pyramid'
Loading…
Cancel
Save