Update
This commit is contained in:
parent
cf601dcc79
commit
940e3d07e8
|
|
@ -51,7 +51,7 @@ public class Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getThumb() {
|
public String getThumb() {
|
||||||
return thumb;
|
return TextUtils.isEmpty(thumb) ? "" : thumb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
|
|
@ -75,24 +75,17 @@ public class Item {
|
||||||
return getType() == 1;
|
return getType() == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMedia() {
|
public boolean ignore(boolean v3) {
|
||||||
return getType() == 2 || getType() == 3 || getType() == 4 || getType() == 6;
|
if (v3) return getType() == 0 || getType() == 4;
|
||||||
}
|
return getType() == 0 || getType() == 2 || getType() == 5;
|
||||||
|
|
||||||
public boolean isSub() {
|
|
||||||
return getType() == 5 && Misc.isSub(getExt());
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean ignore() {
|
|
||||||
return !isFolder() && !isMedia() && !isSub();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getExt() {
|
public String getExt() {
|
||||||
return getName().substring(getName().lastIndexOf(".") + 1);
|
return getName().substring(getName().lastIndexOf(".") + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getVodId(String tid) {
|
public String getVodId(String id) {
|
||||||
return tid + "/" + getName();
|
return id + "/" + getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPic() {
|
public String getPic() {
|
||||||
|
|
@ -107,7 +100,7 @@ public class Item {
|
||||||
return isFolder() ? "folder" : "file";
|
return isFolder() ? "folder" : "file";
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vod getVod(String tid) {
|
public Vod getVod(String id) {
|
||||||
return new Vod(getVodId(tid), getName(), getPic(), getRemark(), getVodTag());
|
return new Vod(getVodId(id), getName(), getPic(), getRemark(), getVodTag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.github.catvod.spider;
|
package com.github.catvod.spider;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
|
||||||
|
|
||||||
import com.github.catvod.bean.Class;
|
import com.github.catvod.bean.Class;
|
||||||
import com.github.catvod.bean.Filter;
|
import com.github.catvod.bean.Filter;
|
||||||
|
|
@ -22,6 +21,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -30,7 +30,6 @@ import java.util.Objects;
|
||||||
public class AList extends Spider {
|
public class AList extends Spider {
|
||||||
|
|
||||||
private LinkedHashMap<String, String> ext;
|
private LinkedHashMap<String, String> ext;
|
||||||
private Map<String, List<String>> sub;
|
|
||||||
private Map<String, String> map;
|
private Map<String, String> map;
|
||||||
|
|
||||||
private boolean isJson(String json) {
|
private boolean isJson(String json) {
|
||||||
|
|
@ -59,9 +58,9 @@ public class AList extends Spider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getVersion(String name) {
|
private boolean v3(String name) {
|
||||||
if (!map.containsKey(name)) map.put(name, OkHttpUtil.string(ext.get(name) + "/api/public/settings").contains("v3.") ? "3" : "2");
|
if (!map.containsKey(name)) map.put(name, OkHttpUtil.string(ext.get(name) + "/api/public/settings").contains("v3.") ? "3" : "2");
|
||||||
return map.get(name);
|
return Objects.equals(map.get(name), "3");
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Filter> getFilter() {
|
private List<Filter> getFilter() {
|
||||||
|
|
@ -74,7 +73,6 @@ public class AList extends Spider {
|
||||||
@Override
|
@Override
|
||||||
public void init(Context context, String extend) {
|
public void init(Context context, String extend) {
|
||||||
try {
|
try {
|
||||||
sub = new HashMap<>();
|
|
||||||
map = new HashMap<>();
|
map = new HashMap<>();
|
||||||
ext = new LinkedHashMap<>();
|
ext = new LinkedHashMap<>();
|
||||||
if (extend.startsWith("http")) extend = OkHttpUtil.string(extend);
|
if (extend.startsWith("http")) extend = OkHttpUtil.string(extend);
|
||||||
|
|
@ -100,11 +98,8 @@ public class AList extends Spider {
|
||||||
List<Item> folders = new ArrayList<>();
|
List<Item> folders = new ArrayList<>();
|
||||||
List<Item> files = new ArrayList<>();
|
List<Item> files = new ArrayList<>();
|
||||||
List<Vod> list = new ArrayList<>();
|
List<Vod> list = new ArrayList<>();
|
||||||
sub.clear();
|
for (Item item : getList(tid, true)) {
|
||||||
for (Item item : getList(tid)) {
|
if (item.isFolder()) folders.add(item);
|
||||||
if (item.ignore()) continue;
|
|
||||||
if (item.isSub()) addSub(tid, item);
|
|
||||||
else if (item.isFolder()) folders.add(item);
|
|
||||||
else files.add(item);
|
else files.add(item);
|
||||||
}
|
}
|
||||||
Sorter.sort(type, order, folders);
|
Sorter.sort(type, order, folders);
|
||||||
|
|
@ -116,15 +111,17 @@ public class AList extends Spider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String detailContent(List<String> ids) {
|
public String detailContent(List<String> ids) {
|
||||||
String tid = ids.get(0);
|
String id = ids.get(0);
|
||||||
Item item = getDetail(tid);
|
Item item = getDetail(id);
|
||||||
|
String path = id.substring(0, id.lastIndexOf("/"));
|
||||||
|
List<Item> parents = getList(path, false);
|
||||||
Vod vod = new Vod();
|
Vod vod = new Vod();
|
||||||
vod.setVodId(item.getVodId(tid));
|
vod.setVodId(item.getVodId(id));
|
||||||
vod.setVodName(item.getName());
|
vod.setVodName(item.getName());
|
||||||
vod.setVodPic(item.getPic());
|
vod.setVodPic(item.getPic());
|
||||||
vod.setVodTag(item.getVodTag());
|
vod.setVodTag(item.getVodTag());
|
||||||
vod.setVodPlayFrom("播放");
|
vod.setVodPlayFrom("播放");
|
||||||
vod.setVodPlayUrl(item.getName() + "$" + item.getUrl() + findSubs(item.getName()));
|
vod.setVodPlayUrl(item.getName() + "$" + item.getUrl() + findSubs(path, parents));
|
||||||
return Result.string(vod);
|
return Result.string(vod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -134,56 +131,42 @@ public class AList extends Spider {
|
||||||
return Result.get().url(ids[0]).sub(getSub(ids)).string();
|
return Result.get().url(ids[0]).sub(getSub(ids)).string();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Item> getList(String tid) {
|
private List<Item> getList(String id, boolean filter) {
|
||||||
try {
|
try {
|
||||||
String key = tid.contains("/") ? tid.substring(0, tid.indexOf("/")) : tid;
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id;
|
||||||
String path = tid.contains("/") ? tid.substring(tid.indexOf("/") + 1) : "";
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : "";
|
||||||
boolean v3 = getVersion(key).equals("3");
|
String url = ext.get(key) + (v3(key) ? "/api/fs/list" : "/api/public/path");
|
||||||
String url = ext.get(key) + (v3 ? "/api/fs/list" : "/api/public/path");
|
|
||||||
JSONObject params = new JSONObject();
|
JSONObject params = new JSONObject();
|
||||||
params.put("path", path);
|
params.put("path", path);
|
||||||
String response = OkHttpUtil.postJson(url, params.toString());
|
String response = OkHttpUtil.postJson(url, params.toString());
|
||||||
String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3 ? "content" : "files").toString();
|
String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3(key) ? "content" : "files").toString();
|
||||||
return Item.arrayFrom(json);
|
List<Item> items = Item.arrayFrom(json);
|
||||||
|
Iterator<Item> iterator = items.iterator();
|
||||||
|
if (filter) while (iterator.hasNext()) if (iterator.next().ignore(v3(key))) iterator.remove();
|
||||||
|
return items;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Item getDetail(String tid) {
|
private Item getDetail(String id) {
|
||||||
try {
|
try {
|
||||||
String key = tid.contains("/") ? tid.substring(0, tid.indexOf("/")) : tid;
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id;
|
||||||
String path = tid.contains("/") ? tid.substring(tid.indexOf("/") + 1) : "";
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : "";
|
||||||
boolean v3 = getVersion(key).equals("3");
|
String url = ext.get(key) + (v3(key) ? "/api/fs/get" : "/api/public/path");
|
||||||
String url = ext.get(key) + (v3 ? "/api/fs/get" : "/api/public/path");
|
|
||||||
JSONObject params = new JSONObject();
|
JSONObject params = new JSONObject();
|
||||||
params.put("path", path);
|
params.put("path", path);
|
||||||
String response = OkHttpUtil.postJson(url, params.toString());
|
String response = OkHttpUtil.postJson(url, params.toString());
|
||||||
String json = v3 ? new JSONObject(response).getJSONObject("data").toString() : new JSONObject(response).getJSONObject("data").getJSONArray("files").getJSONObject(0).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);
|
return Item.objectFrom(json);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return new Item();
|
return new Item();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSub(String tid, Item item) {
|
private String findSubs(String path, List<Item> items) {
|
||||||
String name = item.getName().substring(0, item.getName().lastIndexOf("."));
|
|
||||||
if (!sub.containsKey(name)) sub.put(name, new ArrayList<>());
|
|
||||||
Objects.requireNonNull(sub.get(name)).add(item.getName() + "@" + item.getVodId(tid) + "@" + item.getExt());
|
|
||||||
}
|
|
||||||
|
|
||||||
private String findSubs(String name) {
|
|
||||||
name = name.substring(0, name.lastIndexOf("."));
|
|
||||||
List<String> subs = sub.get(name);
|
|
||||||
if (subs != null && subs.size() > 0) return combineSubs(subs);
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (Map.Entry<String, List<String>> entry : sub.entrySet()) sb.append(combineSubs(entry.getValue()));
|
for (Item item : items) if (Misc.isSub(item.getExt())) sb.append("+").append(item.getName()).append("@").append(Misc.getSubMimeType(item.getExt())).append("@").append(item.getVodId(path));
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String combineSubs(List<String> subs) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (String sub : subs) sb.append("+").append(sub);
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -192,9 +175,7 @@ public class AList extends Spider {
|
||||||
for (String text : ids) {
|
for (String text : ids) {
|
||||||
if (!text.contains("@")) continue;
|
if (!text.contains("@")) continue;
|
||||||
String[] arr = text.split("@");
|
String[] arr = text.split("@");
|
||||||
String url = getDetail(arr[1]).getUrl();
|
sb.append(arr[0]).append("#").append(arr[1]).append("#").append(getDetail(arr[2]).getUrl()).append("$$$");
|
||||||
if (TextUtils.isEmpty(url)) continue;
|
|
||||||
sb.append(arr[0]).append("#").append(Misc.getSubMimeType(arr[2])).append("#").append(url).append("$$$");
|
|
||||||
}
|
}
|
||||||
return Misc.substring(sb.toString(), 3);
|
return Misc.substring(sb.toString(), 3);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
82ac30fa9aa78a5bf9fae055bab78191
|
c3bc29415e53fe4742d9a90bd148fa55
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue