Update ali

This commit is contained in:
FongMi 2022-11-14 13:52:58 +08:00
parent deb2558313
commit f53797467a
6 changed files with 55 additions and 24 deletions

View File

@ -18,6 +18,8 @@ public class Item {
@SerializedName("name") @SerializedName("name")
private String name; private String name;
@SerializedName("path")
private String path;
@SerializedName("type") @SerializedName("type")
private int type; private int type;
@SerializedName("size") @SerializedName("size")
@ -39,7 +41,11 @@ public class Item {
} }
public String getName() { public String getName() {
return name; return TextUtils.isEmpty(name) ? "" : name;
}
public String getPath() {
return TextUtils.isEmpty(path) ? "" : path;
} }
public int getType() { public int getType() {
@ -85,7 +91,7 @@ public class Item {
} }
public String getVodId(String id) { public String getVodId(String id) {
return id + "/" + getName(); return id + getPath() + "/" + getName();
} }
public String getPic() { public String getPic() {

View File

@ -59,9 +59,9 @@ public class AList extends Spider {
} }
} }
private boolean v3(String name) { private boolean v3(String key) {
if (!map.containsKey(name)) map.put(name, OkHttpUtil.string(ext.get(name) + "/api/public/settings").contains("v3.") ? "3" : "2"); if (!map.containsKey(key)) map.put(key, OkHttpUtil.string(ext.get(key) + "/api/public/settings").contains("v3.") ? "3" : "2");
return Objects.equals(map.get(name), "3"); return Objects.equals(map.get(key), "3");
} }
private List<Filter> getFilter() { private List<Filter> getFilter() {
@ -87,7 +87,7 @@ public class AList extends Spider {
public String homeContent(boolean filter) { public String homeContent(boolean filter) {
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>(); LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
for (String entry : ext.keySet()) classes.add(new Class(entry, entry, "1")); for (String key : ext.keySet()) classes.add(new Class(key, key, "1"));
for (Class item : classes) filters.put(item.getTypeId(), getFilter()); for (Class item : classes) filters.put(item.getTypeId(), getFilter());
return Result.string(classes, filters); return Result.string(classes, filters);
} }
@ -126,12 +126,37 @@ public class AList extends Spider {
return Result.string(vod); return Result.string(vod);
} }
@Override
public String searchContent(String keyword, boolean quick) throws Exception {
List<Vod> list = new ArrayList<>();
JSONObject params = new JSONObject();
params.put("path", "/");
params.put("keyword", keyword);
for (String key : ext.keySet()) list.addAll(getList(params.toString(), key));
return Result.string(list);
}
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) { public String playerContent(String flag, String id, List<String> vipFlags) {
String[] ids = id.split("\\+"); String[] ids = id.split("\\+");
return Result.get().url(ids[0]).sub(getSub(ids)).string(); return Result.get().url(ids[0]).sub(getSub(ids)).string();
} }
private List<Vod> getList(String param, String key) {
try {
if (v3(key)) return Collections.emptyList();
List<Vod> 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<Item> items = Item.arrayFrom(json);
for (Item item : items) if (!item.isFolder() && !item.ignore(false)) list.add(item.getVod(key));
return list;
} catch (Exception e) {
return Collections.emptyList();
}
}
private List<Item> getList(String id, boolean filter) { private List<Item> getList(String id, boolean filter) {
try { try {
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id;

View File

@ -28,7 +28,6 @@ import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -45,6 +44,7 @@ public class Ali {
private static String accessToken; private static String accessToken;
private String refreshToken; private String refreshToken;
private ImageView view; private ImageView view;
private int index;
public Ali(String token) { public Ali(String token) {
if (TextUtils.isEmpty(token)) Init.show("尚未設定 Token"); if (TextUtils.isEmpty(token)) Init.show("尚未設定 Token");
@ -131,32 +131,32 @@ public class Ali {
listFiles(folder, name2id, subMap, shareId, shareToken, ""); listFiles(folder, name2id, subMap, shareId, shareToken, "");
} }
private void listFiles(Item folder, LinkedHashMap<String, String> name2id, Map<String, List<String>> subMap, String shareId, String shareToken, String marker) throws Exception { private void listFiles(Item parent, LinkedHashMap<String, String> name2id, Map<String, List<String>> subMap, String shareId, String shareToken, String marker) throws Exception {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("limit", 200); List<Item> folders = new ArrayList<>();
body.put("limit", 1000);
body.put("share_id", shareId); body.put("share_id", shareId);
body.put("parent_file_id", folder.getFileId()); body.put("parent_file_id", parent.getFileId());
body.put("order_by", "name"); body.put("order_by", "name");
body.put("order_direction", "ASC"); body.put("order_direction", "ASC");
if (marker.length() > 0) body.put("marker", marker); if (marker.length() > 0) body.put("marker", marker);
Item item = Item.objectFrom(post("adrive/v3/file/list", body, shareToken)); Item item = Item.objectFrom(post("adrive/v3/file/list", body, shareToken));
for (Item file : item.getItems()) { for (Item file : item.getItems()) {
if (file.getType().equals("folder")) { if (file.getType().equals("folder")) {
listFiles(file, name2id, subMap, shareId, shareToken); folders.add(file);
continue; } else if (file.getCategory().equals("video") || file.getCategory().equals("audio")) {
} name2id.put(parent.getDisplayName(file.getName()), shareId + "+" + shareToken + "+" + file.getFileId());
if (file.getCategory().equals("video")) { } else if (Misc.isSub(file.getExt())) {
name2id.put(folder.getDisplayName(file.getName()), shareId + "+" + shareToken + "+" + file.getFileId()); String key = file.removeExt();
continue; if (!subMap.containsKey(key)) subMap.put(key, new ArrayList<>());
} subMap.get(key).add(key + "@" + file.getFileId() + "@" + file.getExt());
if (Misc.isSub(file.getExt())) {
String name = file.removeExt();
if (!subMap.containsKey(name)) subMap.put(name, new ArrayList<>());
Objects.requireNonNull(subMap.get(name)).add(name + "@" + file.getFileId() + "@" + file.getExt());
} }
} }
if (item.getNextMarker().length() > 0) { if (item.getNextMarker().length() > 0) {
listFiles(folder, name2id, subMap, shareId, shareToken, item.getNextMarker()); listFiles(parent, name2id, subMap, shareId, shareToken, item.getNextMarker());
}
for (Item folder : folders) {
listFiles(folder, name2id, subMap, shareId, shareToken);
} }
} }

Binary file not shown.

View File

@ -1 +1 @@
e1ce4a638a2dbef8dd09c6ce07ba7da1 cc6114eb6329d36b474f86b7c4830ff8