Optimize web parse

pull/567/head
okjack 1 year ago
parent 98b8b37111
commit 28146a7444
  1. 26
      app/src/main/assets/parse.html
  2. 15
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  4. 29
      app/src/main/java/com/fongmi/android/tv/server/process/Parse.java

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
<title>解析</title>
</head>
<body>
<div id="container"></div>
<script>
const jxs = "%s";
const url = "%s";
const list = jxs.split(";");
const container = document.getElementById('container');
list.forEach(item => {
const iframe = document.createElement('iframe');
iframe.src = item + url;
iframe.sandbox = 'allow-scripts allow-same-origin allow-forms';
container.appendChild(iframe);
});
</script>
</body>
</html>

@ -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<Parse> json = VodConfig.get().getParses(1, flag);
List<Parse> 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<Parse> 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) {

@ -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;
@ -36,6 +37,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());
}

@ -0,0 +1,29 @@
package com.fongmi.android.tv.server.process;
import com.fongmi.android.tv.server.Nano;
import com.github.catvod.utils.Asset;
import java.util.Map;
import fi.iki.elonen.NanoHTTPD;
public class Parse implements Process {
@Override
public boolean isRequest(NanoHTTPD.IHTTPSession session, String path) {
return "/parse".equals(path);
}
@Override
public NanoHTTPD.Response doResponse(NanoHTTPD.IHTTPSession session, String path, Map<String, String> files) {
try {
Map<String, String> params = session.getParms();
String jxs = params.get("jxs");
String url = params.get("url");
String html = String.format(Asset.read("parse.html"), jxs, url);
return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_HTML, html);
} catch (Exception e) {
return Nano.error(e.getMessage());
}
}
}
Loading…
Cancel
Save