diff --git a/app/src/main/java/com/github/catvod/bean/alist/Sorter.java b/app/src/main/java/com/github/catvod/bean/alist/Sorter.java index 5b4fb2ef..7aee0f1a 100644 --- a/app/src/main/java/com/github/catvod/bean/alist/Sorter.java +++ b/app/src/main/java/com/github/catvod/bean/alist/Sorter.java @@ -7,24 +7,27 @@ import java.util.List; public class Sorter implements Comparator { private final String type; + private final String order; - public static void sort(String type, List items) { - Collections.sort(items, new Sorter(type)); + public static void sort(String type, String order, List items) { + Collections.sort(items, new Sorter(type, order)); } - public Sorter(String type) { + public Sorter(String type, String order) { this.type = type; + this.order = order; } @Override public int compare(Item o1, Item o2) { + boolean asc = order.equals("asc"); switch (type) { case "name": - return o1.getName().compareTo(o2.getName()); + return asc ? o1.getName().compareTo(o2.getName()) : o2.getName().compareTo(o1.getName()); case "size": - return Long.compare(o1.getSize(), o2.getSize()); + return asc ? Long.compare(o1.getSize(), o2.getSize()) : Long.compare(o2.getSize(), o1.getSize()); case "date": - return o1.getDate().compareTo(o2.getDate()); + return asc ? o1.getDate().compareTo(o2.getDate()) : o2.getDate().compareTo(o1.getDate()); default: return -1; } 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 a227a95d..9a7cb9b3 100644 --- a/app/src/main/java/com/github/catvod/spider/AList.java +++ b/app/src/main/java/com/github/catvod/spider/AList.java @@ -64,9 +64,17 @@ public class AList extends Spider { return map.get(name); } + private List getFilter() { + List items = new ArrayList<>(); + items.add(new Filter("type", "排序類型", Arrays.asList(new Filter.Value("名稱", "name"), new Filter.Value("大小", "size"), new Filter.Value("修改時間", "date")))); + items.add(new Filter("order", "排序方式", Arrays.asList(new Filter.Value("⬆", "asc"), new Filter.Value("⬇", "desc")))); + return items; + } + @Override public void init(Context context, String extend) { try { + sub = new HashMap<>(); map = new HashMap<>(); ext = new LinkedHashMap<>(); if (extend.startsWith("http")) extend = OkHttpUtil.string(extend); @@ -81,25 +89,26 @@ public class AList extends Spider { List classes = new ArrayList<>(); LinkedHashMap> filters = new LinkedHashMap<>(); for (String entry : ext.keySet()) classes.add(new Class(entry, entry, "1")); - for (Class item : classes) filters.put(item.getTypeId(), Arrays.asList(new Filter("type", "排序", Arrays.asList(new Filter.Value("名稱", "name"), new Filter.Value("大小", "size"), new Filter.Value("修改時間", "date"))))); + for (Class item : classes) filters.put(item.getTypeId(), getFilter()); return Result.string(classes, filters); } @Override public String categoryContent(String tid, String pg, boolean filter, HashMap extend) { - String type = extend.containsKey("type") ? extend.get("type") : ""; + String type = extend.containsKey("type") ? extend.get("type") : "name"; + String order = extend.containsKey("order") ? extend.get("order") : "asc"; List folders = new ArrayList<>(); List files = new ArrayList<>(); List list = new ArrayList<>(); - sub = new HashMap<>(); + sub.clear(); for (Item item : getList(tid)) { if (item.ignore()) continue; if (item.isSub()) addSub(tid, item); else if (item.isFolder()) folders.add(item); else files.add(item); } - Sorter.sort(type, folders); - Sorter.sort(type, files); + Sorter.sort(type, order, folders); + Sorter.sort(type, order, files); for (Item item : folders) list.add(item.getVod(tid)); for (Item item : files) list.add(item.getVod(tid)); return Result.string(list); diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index be40927e..f0bbb25d 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 724210bb..74a43ee6 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -5e45ee53bd37b87d71cc591d1a2c208b +dcf00e95fc69d171836e7c0cecd2f99e