diff --git a/app/src/main/java/com/github/catvod/bean/alist/Drive.java b/app/src/main/java/com/github/catvod/bean/alist/Drive.java index e9ce500..db52c3e 100644 --- a/app/src/main/java/com/github/catvod/bean/alist/Drive.java +++ b/app/src/main/java/com/github/catvod/bean/alist/Drive.java @@ -76,11 +76,7 @@ public class Drive { } public String searchApi() { - return getServer() + "/api/public/search"; - } - - public String searchApi(String param) { - return getServer() + "/search?box=" + param + "&url="; + return getServer() + (isNew() ? "/api/fs/search" : "/api/public/search"); } public Drive check() { diff --git a/app/src/main/java/com/github/catvod/bean/alist/Item.java b/app/src/main/java/com/github/catvod/bean/alist/Item.java index 1f5e79f..9a76c92 100644 --- a/app/src/main/java/com/github/catvod/bean/alist/Item.java +++ b/app/src/main/java/com/github/catvod/bean/alist/Item.java @@ -18,7 +18,7 @@ public class Item { @SerializedName("name") private String name; - @SerializedName("path") + @SerializedName(value = "path", alternate = "parent") private String path; @SerializedName("type") private int type; @@ -93,13 +93,13 @@ public class Item { return getType() == 1; } - public boolean isMedia(boolean v3) { - if (v3) return getType() == 2 || getType() == 3; + public boolean isMedia(boolean isNew) { + if (isNew) return getType() == 2 || getType() == 3; return getType() == 3 || getType() == 4; } - public boolean ignore(boolean v3) { - if (v3) return getType() == 0 || getType() == 4; + public boolean ignore(boolean isNew) { + if (isNew) return getType() == 0 || getType() == 4; return getType() == 0 || getType() == 2 || getType() == 5; } 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 b875a11..dd1c532 100644 --- a/app/src/main/java/com/github/catvod/spider/AList.java +++ b/app/src/main/java/com/github/catvod/spider/AList.java @@ -14,11 +14,9 @@ import com.github.catvod.crawler.Spider; import com.github.catvod.net.OkHttpUtil; import com.github.catvod.utils.Misc; import com.github.catvod.utils.Trans; +import com.google.gson.Gson; import org.json.JSONObject; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; import java.util.ArrayList; import java.util.Arrays; @@ -27,6 +25,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.CountDownLatch; public class AList extends Spider { @@ -165,47 +164,30 @@ public class AList extends Spider { } } - private String getParams(String keyword) { - try { - JSONObject params = new JSONObject(); - params.put("path", "/"); + private String getParams(boolean isNew, String keyword) { + Map params = new HashMap<>(); + if (isNew) { + params.put("keywords", keyword); + params.put("page", 1); + params.put("parent", "/"); + params.put("per_page", 100); + } else { params.put("keyword", keyword); - return params.toString(); - } catch (Exception e) { - return ""; + params.put("path", "/"); } + return new Gson().toJson(params); } private void search(CountDownLatch cd, List list, Drive drive, String keyword) { - if (drive.isNew()) searchV3(list, drive, keyword); - else searchV2(list, drive, getParams(keyword)); - cd.countDown(); - } - - private void searchV3(List list, Drive drive, String param) { - Document doc = Jsoup.parse(OkHttpUtil.string(drive.searchApi(param))); - for (Element a : doc.select("ul > a")) { - String text = a.text(); - String[] splits = text.split("\\."); - boolean file = splits.length > 1 && splits[1].length() == 3; - Item item = new Item(); - int index = text.lastIndexOf("/"); - if (index == -1) continue; - item.setPath("/" + text.substring(0, index)); - item.setName(text.substring(index + 1)); - item.setType(file ? 0 : 1); - list.add(item.getVod(drive.getName())); - } - } - - private void searchV2(List list, Drive drive, String param) { try { - String response = OkHttpUtil.postJson(drive.searchApi(), param); - String json = new JSONObject(response).getJSONArray("data").toString(); + String response = OkHttpUtil.postJson(drive.searchApi(), getParams(drive.isNew(), keyword)); + String json = drive.isNew() ? new JSONObject(response).getJSONObject("data").getJSONArray("content").toString() : new JSONObject(response).getJSONArray("data").toString(); List items = Item.arrayFrom(json); - for (Item item : items) if (!item.ignore(false)) list.add(item.getVod(drive.getName())); + for (Item item : items) if (!item.ignore(drive.isNew())) list.add(item.getVod(drive.getName())); } catch (Exception e) { e.printStackTrace(); + } finally { + cd.countDown(); } } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 90194d2..5c93793 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 5c13f69..ac1eca2 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -7d655c54d086110028be6074c85dce66 +10acad2429c1de8501f2b52a85730bcf