diff --git a/app/src/main/assets/parse.html b/app/src/main/assets/parse.html
new file mode 100644
index 000000000..c73b0a8f8
--- /dev/null
+++ b/app/src/main/assets/parse.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ 解析
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
index d366acc0d..e63e815e1 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
@@ -9,8 +9,10 @@ import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Parse;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.impl.ParseCallback;
+import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.ui.custom.CustomWebView;
import com.fongmi.android.tv.utils.UrlUtil;
+import com.fongmi.android.tv.utils.Util;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.google.common.net.HttpHeaders;
@@ -133,11 +135,12 @@ public class ParseJob implements ParseCallback {
private void godParse(String webUrl, String flag) throws Exception {
List json = VodConfig.get().getParses(1, flag);
List webs = VodConfig.get().getParses(0, flag);
- CountDownLatch latch = new CountDownLatch(json.size());
+ int count = json.size() + (webs.isEmpty() ? 0 : 1);
+ CountDownLatch latch = new CountDownLatch(count);
for (Parse item : json) infinite.execute(() -> jsonParse(latch, item, webUrl));
+ if (!webs.isEmpty()) startWeb(webs, webUrl);
latch.await();
- if (webs.isEmpty()) onParseError();
- for (Parse item : webs) startWeb(item, webUrl);
+ onParseError();
}
private void jsonParse(CountDownLatch latch, Parse item, String webUrl) {
@@ -174,8 +177,10 @@ public class ParseJob implements ParseCallback {
}
}
- private void startWeb(Parse item, String webUrl) {
- startWeb("", item, webUrl);
+ private void startWeb(List items, String webUrl) {
+ StringBuilder sb = new StringBuilder();
+ for (Parse item : items) sb.append(item.getUrl()).append(";");
+ startWeb(new HashMap<>(), Server.get().getAddress("/parse?jxs=" + Util.substring(sb.toString()) + "&url=" + webUrl));
}
private void startWeb(String key, Parse item, String webUrl) {
diff --git a/app/src/main/java/com/fongmi/android/tv/server/Nano.java b/app/src/main/java/com/fongmi/android/tv/server/Nano.java
index b583a25bf..20c26decd 100644
--- a/app/src/main/java/com/fongmi/android/tv/server/Nano.java
+++ b/app/src/main/java/com/fongmi/android/tv/server/Nano.java
@@ -6,6 +6,7 @@ import com.fongmi.android.tv.server.process.Action;
import com.fongmi.android.tv.server.process.Cache;
import com.fongmi.android.tv.server.process.Local;
import com.fongmi.android.tv.server.process.Media;
+import com.fongmi.android.tv.server.process.Parse;
import com.fongmi.android.tv.server.process.Process;
import com.fongmi.android.tv.server.process.Proxy;
import com.github.catvod.utils.Asset;
@@ -39,6 +40,7 @@ public class Nano extends NanoHTTPD {
process.add(new Cache());
process.add(new Local());
process.add(new Media());
+ process.add(new Parse());
process.add(new Proxy());
}
diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java b/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java
new file mode 100644
index 000000000..0f756a33f
--- /dev/null
+++ b/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java
@@ -0,0 +1,32 @@
+package com.fongmi.android.tv.server.process;
+
+import com.fongmi.android.tv.server.Nano;
+import com.github.catvod.utils.Asset;
+
+import org.nanohttpd.protocols.http.IHTTPSession;
+import org.nanohttpd.protocols.http.NanoHTTPD;
+import org.nanohttpd.protocols.http.response.Response;
+import org.nanohttpd.protocols.http.response.Status;
+
+import java.util.Map;
+
+public class Parse implements Process {
+
+ @Override
+ public boolean isRequest(IHTTPSession session, String path) {
+ return "/parse".equals(path);
+ }
+
+ @Override
+ public Response doResponse(IHTTPSession session, String path, Map files) {
+ try {
+ Map params = session.getParms();
+ String jxs = params.get("jxs");
+ String url = params.get("url");
+ String html = String.format(Asset.read("parse.html"), jxs, url);
+ return Response.newFixedLengthResponse(Status.OK, NanoHTTPD.MIME_HTML, html);
+ } catch (Exception e) {
+ return Nano.error(e.getMessage());
+ }
+ }
+}