From 87f4aba7c0f3ea0f6ec083ab8f24693269a89690 Mon Sep 17 00:00:00 2001 From: gzlinz2 <107169210+gzlinz2@users.noreply.github.com> Date: Fri, 28 Oct 2022 01:00:30 +0800 Subject: [PATCH] Add files via upload --- .../java/com/github/catvod/parser/MixWeb.java | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 app/src/main/java/com/github/catvod/parser/MixWeb.java diff --git a/app/src/main/java/com/github/catvod/parser/MixWeb.java b/app/src/main/java/com/github/catvod/parser/MixWeb.java new file mode 100644 index 0000000..a050d75 --- /dev/null +++ b/app/src/main/java/com/github/catvod/parser/MixWeb.java @@ -0,0 +1,178 @@ +package com.github.catvod.parser; + +import android.util.Base64; +import com.github.catvod.crawler.SpiderDebug; +import com.github.catvod.utils.Misc; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; + +public class MixWeb { + + /* + "parses": [ + { + "name": "聚合", + "type": 3, + "url": "Demo" + }, + { + "name": "解析", + "type": 1, + "url": "https://192.168.10.88/jx.php?url=", + "ext": { + "flag": [ + "qq", + "iqiyi", + "qiyi", + "爱奇艺", + "腾讯", + "letv", + "sohu", + "tudou", + "pptv", + "mgtv", + "wasu", + "bilibili" + ] + } + }] + */ + + public static HashMap> flagWebJx = new HashMap<>(); + + static HashMap> configs = null; + + public static JSONObject parse(LinkedHashMap> jx, String nameMe, String flag, String url) { + try { + if (configs == null) { + configs = new HashMap<>(); + Iterator keys = jx.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + HashMap parseBean = jx.get(key); + String type = parseBean.get("type"); + if (type.equals("0")) { + try { + //取出单个解析的flags列表 + JSONArray flags = new JSONObject(parseBean.get("ext")).getJSONArray("flag"); + for (int j = 0; j < flags.length(); j++) { + //获取单个flags + String flagKey = flags.getString(j); + //取出configs中对应flags的解析 + ArrayList flagJx = configs.get(flagKey); + //如果configs中没有这个flags,则插入一个空的值 + if (flagJx == null) { + flagJx = new ArrayList<>(); + configs.put(flagKey, flagJx); + } + //如果有就在flagJx中增加解析 + flagJx.add(key); + } + } catch (Throwable th) { + + } + } + } + } + // 通过上面的配置获得解析列表 + ArrayList webJx = new ArrayList<>(); + ArrayList flagJx = configs.get(flag); + //如果flagJx不为空 + if (flagJx != null && !flagJx.isEmpty()) { + for (int i = 0; i < flagJx.size(); i++) { + String key = flagJx.get(i); + HashMap parseBean = jx.get(key); + String type = parseBean.get("type"); + if (type.equals("0")) { + //将json解析放入webJx + webJx.add(parseBean.get("url")); + } + } + } else { + Iterator keys = jx.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + HashMap parseBean = jx.get(key); + String type = parseBean.get("type"); + if (type.equals("0")) { + webJx.add(parseBean.get("url")); + } + } + } + if (!webJx.isEmpty()) { + flagWebJx.put(flag, webJx); + } + + // json解析没有得到结果 用webview解析 + if (!webJx.isEmpty()) { + JSONObject webResult = new JSONObject(); + webResult.put("url", "proxy://do=MixWeb&flag=" + flag + "&url=" + Base64.encodeToString(url.getBytes(), Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP)); + webResult.put("parse", 1); + webResult.put("ua", Misc.UaWinChrome); + return webResult; + } + } catch (Throwable th) { + SpiderDebug.log(th); + } + return new JSONObject(); + } + + + public static Object[] loadHtml(String flag, String url) { + try { + url = new String(Base64.decode(url, Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP), "UTF-8"); + String html = "\n" + + "\n" + + "\n" + + "\n" + + "解析\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + ""; + + StringBuilder jxs = new StringBuilder(); + if (flagWebJx.containsKey(flag)) { + ArrayList jxUrls = flagWebJx.get(flag); + for (int i = 0; i < jxUrls.size(); i++) { + jxs.append("\""); + jxs.append(jxUrls.get(i)); + jxs.append("\""); + if (i < jxUrls.size() - 1) { + jxs.append(","); + } + } + } + html = html.replace("#url#", url).replace("#jxs#", jxs.toString()); + Object[] result = new Object[3]; + result[0] = 200; + result[1] = "text/html; charset=\"UTF-8\""; + ByteArrayInputStream baos = new ByteArrayInputStream(html.toString().getBytes("UTF-8")); + result[2] = baos; + return result; + } catch (Throwable th) { + th.printStackTrace(); + } + return null; + } +}