diff --git a/catvod/src/main/java/com/github/catvod/utils/Path.java b/catvod/src/main/java/com/github/catvod/utils/Path.java index ca63f8a2c..598670169 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Path.java +++ b/catvod/src/main/java/com/github/catvod/utils/Path.java @@ -108,6 +108,10 @@ public class Path { return new File(js(), name); } + public static File py(String name) { + return new File(py(), name); + } + public static File jar(String name) { File file = new File(jar(), Util.md5(name).concat(".jar")); file.setReadOnly(); diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Loader.java b/chaquo/src/main/java/com/fongmi/chaquo/Loader.java index b233f915a..d3c461c8a 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Loader.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Loader.java @@ -23,6 +23,6 @@ public class Loader { public Spider spider(Context context, String api) { if (app == null) init(context); PyObject obj = app.callAttr("spider", Path.py().getAbsolutePath(), api); - return new Spider(app, obj); + return new Spider(app, obj, api); } } diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java index 951e57e4d..49011f7ca 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java @@ -4,6 +4,8 @@ import android.content.Context; import com.chaquo.python.PyObject; import com.github.catvod.Proxy; +import com.github.catvod.utils.Path; +import com.github.catvod.utils.UriUtil; import com.github.catvod.utils.Util; import com.google.gson.Gson; @@ -17,11 +19,13 @@ public class Spider extends com.github.catvod.crawler.Spider { private final PyObject app; private final PyObject obj; private final Gson gson; + private final String api; - public Spider(PyObject app, PyObject obj) { + public Spider(PyObject app, PyObject obj, String api) { this.gson = new Gson(); this.app = app; this.obj = obj; + this.api = api; } @Override @@ -31,6 +35,8 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public void init(Context context, String extend) { + List items = app.callAttr("getDependence", obj).asList(); + for (PyObject item : items) download(item + ".py"); app.callAttr("init", obj, extend); } @@ -108,6 +114,12 @@ public class Spider extends com.github.catvod.crawler.Spider { } } + private void download(String name) { + String path = Path.py(name).getAbsolutePath(); + String url = UriUtil.resolve(api, name); + app.callAttr("download", path, url); + } + private String replaceProxy(String content) { return content.replace("http://127.0.0.1:UndCover/proxy", Proxy.getUrl(true)); } diff --git a/chaquo/src/main/python/app.py b/chaquo/src/main/python/app.py index d2a7c5a59..d39ac70fc 100644 --- a/chaquo/src/main/python/app.py +++ b/chaquo/src/main/python/app.py @@ -7,12 +7,12 @@ import json def spider(cache, api): name = os.path.basename(api) path = cache + '/' + name - downloadFile(path, api) + download(path, api) name = name.split('.')[0] return SourceFileLoader(name, path).load_module().Spider() -def downloadFile(path, api): +def download(path, api): if api.startswith('http'): writeFile(path, redirect(api).content) else: