diff --git a/app/src/main/java/com/github/catvod/spider/Feiyang.java b/app/src/main/java/com/github/catvod/spider/Feiyang.java index b5b10a28..aecc1eb9 100644 --- a/app/src/main/java/com/github/catvod/spider/Feiyang.java +++ b/app/src/main/java/com/github/catvod/spider/Feiyang.java @@ -4,6 +4,7 @@ import android.content.Context; import android.os.SystemClock; import com.github.catvod.crawler.Spider; +import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Path; import com.github.catvod.utils.Shell; @@ -14,56 +15,56 @@ public class Feiyang extends Spider { private static final String AIO = "allinone-linux-musl"; private static final String SHELL = "run-allinone.sh"; + private static final File f_shell = new File(Path.files(), SHELL); + private static final File f_aio = new File(Path.files(), AIO); private static Thread thread; private String extend; @Override public void init(Context context, String extend) throws Exception { this.extend = extend; + createShell(); + findAIO(Path.tv().listFiles()); + findAIO(Path.download().listFiles()); } @Override public String liveContent() { String content; int retry = 0; - while ((content = OkHttp.string(extend)).isEmpty() && retry++ < 5) SystemClock.sleep(250); + while ((content = OkHttp.string(extend)).isEmpty() && retry++ < 10) SystemClock.sleep(250); return content; } - public static void startAIO() { - writeShell(); - findAIO(Path.tv().listFiles()); - findAIO(Path.download().listFiles()); + private void createShell() { + File cache = Path.cache("allinone.cache"); + String cachePath = cache.getAbsolutePath(); + String shellPath = f_shell.getAbsolutePath(); + String aioPath = f_aio.getAbsolutePath(); + String script = "if [ -e " + shellPath + ".kill ]; then\n" + "sh " + shellPath + ".kill;\n" + "killall -9 " + AIO + ";\n" + "sleep 1;\n" + "rm -f " + shellPath + ".kill;\n" + "fi\n" + "echo \"kill -9 $$\" >> " + shellPath + ".kill;\n" + "while(true)\n" + "do\n" + "TMPDIR=" + cachePath + " " + aioPath + " -ipv6=true " + " -port 35345 " + " >/dev/null 2>&1\n" + "pidlist=$(ps -ef|grep " + SHELL + "|grep -v grep|awk '{print $2}')\n" + "selfpid=$$\n" + "for pid in $pidlist\n" + "do\n" + "if [[ $pid != \"$selfpid\" ]] then\n" + "kill -9 $pid\n" + "fi\n" + "done\n" + "killall -9 " + AIO + "\n" + "rm -rf \"" + cachePath + "\"/*\n" + "sleep 5;\n" + "done"; + Path.write(f_shell, script); } - private static void findAIO(File[] files) { + private void findAIO(File[] files) { if (files == null || thread != null) return; for (File f : files) { if (f.getName().equals("allinone") || f.getName().startsWith("allinone-linux")) { - Path.copy(f, new File(Path.files(), AIO)); - thread = new Thread(() -> Shell.exec("nohup " + new File(Path.files(), SHELL).getAbsolutePath() + " &")); + Path.copy(f, f_aio); + SpiderDebug.log("start run " + f.getName()); + thread = new Thread(() -> Shell.exec("nohup " + f_shell.getAbsolutePath() + " &")); thread.start(); } } } - private static void writeShell() { - File cache = Path.cache("allinone.cache"); - File shell = new File(Path.files(), SHELL); - File aio = new File(Path.files(), AIO); - String cachePath = cache.getAbsolutePath(); - String shellPath = shell.getAbsolutePath(); - String aioPath = aio.getAbsolutePath(); - String script = "if [ -e " + shellPath + ".kill ]; then\n" + "sh " + shellPath + ".kill;\n" + "killall -9 " + AIO + ";\n" + "sleep 1;\n" + "rm -f " + shellPath + ".kill;\n" + "fi\n" + "echo \"kill -9 $$\" >> " + shellPath + ".kill;\n" + "while(true)\n" + "do\n" + "TMPDIR=" + cachePath + " " + aioPath + " -ipv6=true " + " -port 35345 " + " >/dev/null 2>&1\n" + "pidlist=$(ps -ef|grep " + SHELL + "|grep -v grep|awk '{print $2}')\n" + "selfpid=$$\n" + "for pid in $pidlist\n" + "do\n" + "if [[ $pid != \"$selfpid\" ]] then\n" + "kill -9 $pid\n" + "fi\n" + "done\n" + "killall -9 " + AIO + "\n" + "rm -rf \"" + cachePath + "\"/*\n" + "sleep 5;\n" + "done"; - Path.write(shell, script); - } - @Override public void destroy() { try { if (thread != null) thread.interrupt(); } catch (Exception e) { e.printStackTrace(); + } finally { + thread = null; } } } diff --git a/app/src/main/java/com/github/catvod/spider/Init.java b/app/src/main/java/com/github/catvod/spider/Init.java index 5a561295..865f8704 100644 --- a/app/src/main/java/com/github/catvod/spider/Init.java +++ b/app/src/main/java/com/github/catvod/spider/Init.java @@ -42,7 +42,6 @@ public class Init { public static void init(Context context) { get().app = ((Application) context); SpiderDebug.log("自定義爬蟲代碼載入成功!"); - Feiyang.startAIO(); } public static void execute(Runnable runnable) { diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index e121af7c..ab5700cd 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index b2f9a87e..cd48c8ec 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -b71bc7bc451c71b3d352ce5806328d28 +bdb521c46b8a304eeb565567dd326171