From 2bc87bccf6a91e889d1ff5dde97469c4181f41ba Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 3 Oct 2022 12:24:40 +0800 Subject: [PATCH] Update paper --- .../com/github/catvod/demo/MainActivity.java | 1 - .../java/com/github/catvod/spider/Dm84.java | 3 ++- .../java/com/github/catvod/spider/Paper.java | 20 +++++++++--------- .../java/com/github/catvod/utils/Misc.java | 9 -------- jar/custom_spider.jar | Bin 250216 -> 250013 bytes jar/custom_spider.jar.md5 | 2 +- 6 files changed, 13 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/github/catvod/demo/MainActivity.java b/app/src/main/java/com/github/catvod/demo/MainActivity.java index 61a98f45..2a3de8c1 100644 --- a/app/src/main/java/com/github/catvod/demo/MainActivity.java +++ b/app/src/main/java/com/github/catvod/demo/MainActivity.java @@ -12,7 +12,6 @@ public class MainActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(() -> { - }).start(); } } \ No newline at end of file diff --git a/app/src/main/java/com/github/catvod/spider/Dm84.java b/app/src/main/java/com/github/catvod/spider/Dm84.java index 47278a97..9f5eee11 100644 --- a/app/src/main/java/com/github/catvod/spider/Dm84.java +++ b/app/src/main/java/com/github/catvod/spider/Dm84.java @@ -16,6 +16,7 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -90,7 +91,7 @@ public class Dm84 extends Spider { if (extend.get("year") == null) extend.put("year", ""); if (extend.get("by") == null) extend.put("by", "time"); String by = extend.get("by"); - String type = Misc.encode(extend.get("type")); + String type = URLEncoder.encode(extend.get("type")); String year = extend.get("year"); String target = siteUrl + String.format("/show-%s--%s-%s--%s-%s.html", tid, by, type, year, pg); Document doc = Jsoup.parse(OkHttpUtil.string(target, getHeaders())); diff --git a/app/src/main/java/com/github/catvod/spider/Paper.java b/app/src/main/java/com/github/catvod/spider/Paper.java index 59b3cb1a..31dac7c1 100644 --- a/app/src/main/java/com/github/catvod/spider/Paper.java +++ b/app/src/main/java/com/github/catvod/spider/Paper.java @@ -7,7 +7,6 @@ import com.github.catvod.bean.Filter; import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.bean.paper.Data; -import com.github.catvod.bean.paper.Item; import com.github.catvod.crawler.Spider; import com.github.catvod.net.OkHttpUtil; import com.github.catvod.utils.Misc; @@ -23,14 +22,15 @@ import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; /** * @author ColaMint & FongMi */ public class Paper extends Spider { + private final String URL = "https://gitcafe.net/alipaper/"; private List types; - private List all; private Ali ali; private HashMap getHeaders() { @@ -39,10 +39,6 @@ public class Paper extends Spider { return headers; } - private List getAll() { - return all = all != null ? all : Item.objectFrom(OkHttpUtil.string("https://gitcafe.net/alipaper/all.json", getHeaders())).getData(); - } - @Override public void init(Context context, String extend) { types = Arrays.asList("hyds", "rhds", "omds", "qtds", "hydy", "rhdy", "omdy", "qtdy", "hydm", "rhdm", "omdm", "jlp", "zyp", "jypx", "qtsp"); @@ -51,7 +47,7 @@ public class Paper extends Spider { @Override public String homeContent(boolean filter) { - Document doc = Jsoup.parse(OkHttpUtil.string("https://u.gitcafe.net/", getHeaders())); + Document doc = Jsoup.parse(OkHttpUtil.string(URL, getHeaders())); Elements trs = doc.select("table.tableizer-table > tbody > tr"); LinkedHashMap> filters = new LinkedHashMap<>(); List classes = new ArrayList<>(); @@ -75,7 +71,7 @@ public class Paper extends Spider { @Override public String homeVideoContent() throws Exception { List list = new ArrayList<>(); - JSONObject homeData = new JSONObject(OkHttpUtil.string("https://gitcafe.net/alipaper/home.json", getHeaders())); + JSONObject homeData = new JSONObject(OkHttpUtil.string(URL + "home.json", getHeaders())); List items = Data.arrayFrom(homeData.getJSONObject("info").getJSONArray("new").toString()); for (Data item : items) if (types.contains(item.getCat())) list.add(item.getVod()); return Result.string(list); @@ -85,7 +81,7 @@ public class Paper extends Spider { public String categoryContent(String tid, String pg, boolean filter, HashMap extend) { List list = new ArrayList<>(); String type = extend.containsKey("type") ? extend.get("type") : tid; - List items = Data.arrayFrom(OkHttpUtil.string("https://gitcafe.net/alipaper/data/" + type + ".json", getHeaders())); + List items = Data.arrayFrom(OkHttpUtil.string(URL + "data/" + type + ".json", getHeaders())); for (Data item : items) list.add(item.getVod()); return Result.string(list); } @@ -98,7 +94,11 @@ public class Paper extends Spider { @Override public String searchContent(String key, boolean quick) { List list = new ArrayList<>(); - for (Data item : getAll()) if (types.contains(item.getCat()) && item.getTitle().contains(key)) list.add(item.getVod()); + Map params = new HashMap<>(); + params.put("action", "search"); + params.put("keyword", key); + String result = OkHttpUtil.post("https://gitcafe.net/tool/alipaper/", params, getHeaders()); + for (Data item : Data.arrayFrom(result)) if (types.contains(item.getCat()) && item.getTitle().contains(key)) list.add(item.getVod()); return Result.string(list); } diff --git a/app/src/main/java/com/github/catvod/utils/Misc.java b/app/src/main/java/com/github/catvod/utils/Misc.java index 397ac2ad..1c00d33e 100644 --- a/app/src/main/java/com/github/catvod/utils/Misc.java +++ b/app/src/main/java/com/github/catvod/utils/Misc.java @@ -12,7 +12,6 @@ import org.json.JSONException; import org.json.JSONObject; import java.math.BigInteger; -import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -129,14 +128,6 @@ public class Misc { return taskResult; } - public static String encode(String s) { - try { - return URLEncoder.encode(s, "UTF-8"); - } catch (Exception e) { - return ""; - } - } - public static String substring(String text) { return substring(text, 1); } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index e4a3a065dd4a121dd2eb3ce9a6e2707dae2d0241..9bcdf60705ec5d9a8d000ce18a2bfbdcd6592848 100644 GIT binary patch literal 250013 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