diff --git a/app/src/main/java/com/github/catvod/spider/AList.java b/app/src/main/java/com/github/catvod/spider/AList.java index a39cb14..7d0c833 100644 --- a/app/src/main/java/com/github/catvod/spider/AList.java +++ b/app/src/main/java/com/github/catvod/spider/AList.java @@ -30,6 +30,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.CountDownLatch; public class AList extends Spider { @@ -140,17 +141,46 @@ public class AList extends Spider { return Result.string(vod); } + private Item getDetail(String id) { + try { + String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; + String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; + String url = ext.get(key) + (v3(key) ? "/api/fs/get" : "/api/public/path"); + JSONObject params = new JSONObject(); + params.put("path", path); + String response = OkHttpUtil.postJson(url, params.toString()); + String json = v3(key) ? new JSONObject(response).getJSONObject("data").toString() : new JSONObject(response).getJSONObject("data").getJSONArray("files").getJSONObject(0).toString(); + return Item.objectFrom(json); + } catch (Exception e) { + return new Item(); + } + } + + private List getList(String id, boolean filter) { + try { + String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; + String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; + String url = ext.get(key) + (v3(key) ? "/api/fs/list" : "/api/public/path"); + JSONObject params = new JSONObject(); + params.put("path", path); + String response = OkHttpUtil.postJson(url, params.toString()); + String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3(key) ? "content" : "files").toString(); + List items = Item.arrayFrom(json); + Iterator iterator = items.iterator(); + if (filter) while (iterator.hasNext()) if (iterator.next().ignore(v3(key))) iterator.remove(); + return items; + } catch (Exception e) { + return Collections.emptyList(); + } + } + @Override public String searchContent(String keyword, boolean quick) throws Exception { fetchRule(); List list = new ArrayList<>(); - JSONObject params = new JSONObject(); - params.put("path", "/"); - params.put("keyword", keyword); - for (String key : ext.keySet()) { - if (v3(key)) list.addAll(getV3List(keyword, key)); - else list.addAll(getV2List(params.toString(), key)); - } + CountDownLatch cd = new CountDownLatch(ext.size()); + for (String key : ext.keySet()) new Thread(() -> search(cd, list, key, keyword)).start(); + cd.await(); return Result.string(list); } @@ -160,10 +190,26 @@ public class AList extends Spider { return Result.get().url(ids[0]).sub(getSub(ids)).string(); } - private List getV3List(String param, String key) { + private String getParams(String keyword) { + try { + JSONObject params = new JSONObject(); + params.put("path", "/"); + params.put("keyword", keyword); + return params.toString(); + } catch (Exception e) { + return ""; + } + } + + private void search(CountDownLatch cd, List list, String key, String keyword) { + if (v3(key)) searchV3(list, key, keyword); + else searchV2(list, key, getParams(keyword)); + cd.countDown(); + } + + private void searchV3(List list, String key, String param) { String url = ext.get(key) + "/search?box=" + param + "&url="; Document doc = Jsoup.parse(OkHttpUtil.string(url)); - List items = new ArrayList<>(); for (Element a : doc.select("ul > a")) { String text = a.text(); String[] splits = text.split("\\."); @@ -174,56 +220,19 @@ public class AList extends Spider { item.setPath("/" + text.substring(0, index)); item.setName(text.substring(index + 1)); item.setType(file ? 0 : 1); - items.add(item.getVod(key)); + list.add(item.getVod(key)); } - return items; } - private List getV2List(String param, String key) { + private void searchV2(List list, String key, String param) { try { - if (v3(key)) return Collections.emptyList(); - List list = new ArrayList<>(); String url = ext.get(key) + "/api/public/search"; String response = OkHttpUtil.postJson(url, param); String json = new JSONObject(response).getJSONArray("data").toString(); List items = Item.arrayFrom(json); for (Item item : items) if (!item.ignore(false)) list.add(item.getVod(key)); - return list; - } catch (Exception e) { - return Collections.emptyList(); - } - } - - private List getList(String id, boolean filter) { - try { - String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; - String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; - String url = ext.get(key) + (v3(key) ? "/api/fs/list" : "/api/public/path"); - JSONObject params = new JSONObject(); - params.put("path", path); - String response = OkHttpUtil.postJson(url, params.toString()); - String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3(key) ? "content" : "files").toString(); - List items = Item.arrayFrom(json); - Iterator iterator = items.iterator(); - if (filter) while (iterator.hasNext()) if (iterator.next().ignore(v3(key))) iterator.remove(); - return items; } catch (Exception e) { - return Collections.emptyList(); - } - } - - private Item getDetail(String id) { - try { - String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; - String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; - String url = ext.get(key) + (v3(key) ? "/api/fs/get" : "/api/public/path"); - JSONObject params = new JSONObject(); - params.put("path", path); - String response = OkHttpUtil.postJson(url, params.toString()); - String json = v3(key) ? new JSONObject(response).getJSONObject("data").toString() : new JSONObject(response).getJSONObject("data").getJSONArray("files").getJSONObject(0).toString(); - return Item.objectFrom(json); - } catch (Exception e) { - return new Item(); + e.printStackTrace(); } } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 77b48b1..dbefb6b 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 927e647..c9fdee0 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -1c966cffc8bda2bc28ede2c65a230f06 +ad5e07a700c8b50e0eb03e20422c788d