This commit is contained in:
GH Action - Upstream Sync 2023-01-04 01:25:17 +00:00
commit 6b3eae6cf1
16 changed files with 119 additions and 129 deletions

View File

@ -1,5 +1,7 @@
package com.github.catvod.bean; package com.github.catvod.bean;
import androidx.annotation.NonNull;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -26,8 +28,8 @@ public class Result {
private String header; private String header;
@SerializedName("url") @SerializedName("url")
private String url; private String url;
@SerializedName("sub") @SerializedName("subs")
private List<Sub> sub; private List<Sub> subs;
@SerializedName("parse") @SerializedName("parse")
private int parse; private int parse;
@SerializedName("jx") @SerializedName("jx")
@ -129,8 +131,8 @@ public class Result {
return this; return this;
} }
public Result sub(List<Sub> sub) { public Result subs(List<Sub> subs) {
this.sub = sub; this.subs = subs;
return this; return this;
} }
@ -154,6 +156,7 @@ public class Result {
return toString(); return toString();
} }
@NonNull
@Override @Override
public String toString() { public String toString() {
return new Gson().toJson(this); return new Gson().toJson(this);

View File

@ -7,13 +7,10 @@ public class Auth {
private String refreshToken; private String refreshToken;
private String accessToken; private String accessToken;
private long expiresTime; private String shareToken;
private String shareId;
private ImageView view; private ImageView view;
public Auth(String refreshToken) {
this.refreshToken = refreshToken;
}
public String getRefreshToken() { public String getRefreshToken() {
return TextUtils.isEmpty(refreshToken) ? "" : refreshToken; return TextUtils.isEmpty(refreshToken) ? "" : refreshToken;
} }
@ -30,12 +27,20 @@ public class Auth {
this.accessToken = accessToken; this.accessToken = accessToken;
} }
public long getExpiresTime() { public String getShareToken() {
return expiresTime; return TextUtils.isEmpty(shareToken) ? "" : shareToken;
} }
public void setExpiresTime(long expiresTime) { public void setShareToken(String shareToken) {
this.expiresTime = expiresTime; this.shareToken = shareToken;
}
public String getShareId() {
return TextUtils.isEmpty(shareId) ? "" : shareId;
}
public void setShareId(String shareId) {
this.shareId = shareId;
} }
public ImageView getView() { public ImageView getView() {
@ -46,17 +51,13 @@ public class Auth {
this.view = view; this.view = view;
} }
public boolean needRefresh() {
return System.currentTimeMillis() > getExpiresTime();
}
public boolean isEmpty() { public boolean isEmpty() {
return getRefreshToken().isEmpty() || getAccessToken().isEmpty(); return getAccessToken().isEmpty();
} }
public void clean() { public void clean() {
setRefreshToken(""); setRefreshToken("");
setAccessToken(""); setAccessToken("");
setExpiresTime(0); setShareId("");
} }
} }

View File

@ -125,7 +125,7 @@ public class AList extends Spider {
@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(getDetail(ids[0]).getUrl()).sub(getSub(ids)).string(); return Result.get().url(getDetail(ids[0]).getUrl()).subs(getSub(ids)).string();
} }
private Item getDetail(String id) { private Item getDetail(String id) {

View File

@ -21,7 +21,6 @@ import com.github.catvod.utils.Trans;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -44,13 +43,24 @@ public class Ali {
private final Pattern pattern = Pattern.compile("www.aliyundrive.com/s/([^/]+)(/folder/([^/]+))?"); private final Pattern pattern = Pattern.compile("www.aliyundrive.com/s/([^/]+)(/folder/([^/]+))?");
private ScheduledExecutorService service; private ScheduledExecutorService service;
private Auth auth; private final Auth auth;
public Ali token(String token) { private static class Loader {
if (auth != null && auth.getRefreshToken().length() > 0) return this; static volatile Ali INSTANCE = new Ali();
}
public static Ali get() {
return Loader.INSTANCE;
}
public Ali() {
this.auth = new Auth();
}
public Ali init(String token) {
if (TextUtils.isEmpty(token)) Init.show("尚未設定 Token"); if (TextUtils.isEmpty(token)) Init.show("尚未設定 Token");
if (token.startsWith("http")) token = OkHttp.string(token); if (token.startsWith("http")) token = OkHttp.string(token);
auth = new Auth(Prefers.getString("token", token)); auth.setRefreshToken(Prefers.getString("token", token));
return this; return this;
} }
@ -61,10 +71,10 @@ public class Ali {
return headers; return headers;
} }
private HashMap<String, String> getHeaders(String shareToken) { private HashMap<String, String> getAuthHeader() {
HashMap<String, String> headers = getHeaders(); HashMap<String, String> headers = getHeaders();
headers.put("authorization", auth.getAccessToken()); headers.put("authorization", auth.getAccessToken());
headers.put("x-share-token", shareToken); headers.put("x-share-token", auth.getShareToken());
return headers; return headers;
} }
@ -73,56 +83,49 @@ public class Ali {
return OkHttp.postJson(url, body.toString(), getHeaders()); return OkHttp.postJson(url, body.toString(), getHeaders());
} }
private String post(String url, JSONObject body, String shareToken) { private String postAuth(String url, JSONObject body) {
url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url; url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url;
String result = OkHttp.postJson(url, body.toString(), getHeaders(shareToken)); String result = OkHttp.postJson(url, body.toString(), getAuthHeader());
if (check401(result)) return post(url, body, shareToken); if (check401(result)) return postAuth(url, body);
return result; return result;
} }
private boolean check401(String result) { private boolean check401(String result) {
if (!result.contains("AccessTokenInvalid")) return false; if (result.contains("AccessTokenInvalid")) return refreshAccessToken();
refreshAccessToken(); if (result.contains("ShareLinkTokenInvalid")) return refreshShareToken();
return true; return false;
} }
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
String url = ids.get(0).trim(); String url = ids.get(0).trim();
Matcher matcher = pattern.matcher(url); Matcher matcher = pattern.matcher(url);
if (matcher.find()) return Result.string(getVod(matcher, url)); if (!matcher.find()) return "";
return ""; String shareId = matcher.group(1);
String fileId = matcher.groupCount() == 3 ? matcher.group(3) : "";
auth.setShareId(shareId); refreshShareToken();
return Result.string(getVod(url, fileId));
} }
public String playerContent(String flag, String id) { public String playerContent(String flag, String id) {
if (id.equals("Empty")) return "";
String[] ids = id.split("\\+"); String[] ids = id.split("\\+");
String shareId = ids[0]; if (auth.isEmpty()) refreshAccessToken();
String shareToken = ids[1];
String fileId = ids[2];
List<Sub> sub = getSub(shareId, shareToken, ids);
if (auth.needRefresh()) refreshAccessToken();
if (flag.equals("原畫")) { if (flag.equals("原畫")) {
return Result.get().url(getDownloadUrl(shareId, shareToken, fileId)).sub(sub).header(getHeaders()).string(); return Result.get().url(getDownloadUrl(ids[0])).subs(getSub(ids)).header(getHeaders()).string();
} else { } else {
return Result.get().url(getPreviewUrl(shareId, shareToken, fileId)).sub(sub).header(getHeaders()).string(); return Result.get().url(getPreviewUrl(ids[0])).subs(getSub(ids)).header(getHeaders()).string();
} }
} }
private Vod getVod(Matcher matcher, String url) throws Exception { private Vod getVod(String url, String fileId) throws Exception {
String shareId = matcher.group(1);
String shareToken = getShareToken(shareId);
String fileId = matcher.groupCount() == 3 ? matcher.group(3) : "";
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("share_id", shareId); body.put("share_id", auth.getShareId());
String json = post("adrive/v3/share_link/get_share_by_anonymous", body); String json = post("adrive/v3/share_link/get_share_by_anonymous", body);
JSONObject object = new JSONObject(json); JSONObject object = new JSONObject(json);
LinkedHashMap<Item, String> fileMap = new LinkedHashMap<>(); List<Item> files = new ArrayList<>();
LinkedHashMap<String, List<String>> subMap = new LinkedHashMap<>(); LinkedHashMap<String, List<String>> subMap = new LinkedHashMap<>();
listFiles(new Item(getParentFileId(fileId, object)), fileMap, subMap, shareId, shareToken); listFiles(new Item(getParentFileId(fileId, object)), files, subMap);
List<String> playUrls = new ArrayList<>(); List<String> playUrls = new ArrayList<>();
List<Item> files = new ArrayList<>(fileMap.keySet()); for (Item file : files) playUrls.add(Trans.get(file.getDisplayName()) + "$" + file.getFileId() + findSubs(file.getName(), subMap));
for (Item file : files) playUrls.add(Trans.get(file.getDisplayName()) + "$" + fileMap.get(file) + findSubs(file.getName(), subMap));
if (playUrls.isEmpty()) playUrls.add("Empty$Empty");
List<String> sourceUrls = new ArrayList<>(); List<String> sourceUrls = new ArrayList<>();
sourceUrls.add(TextUtils.join("#", playUrls)); sourceUrls.add(TextUtils.join("#", playUrls));
sourceUrls.add(TextUtils.join("#", playUrls)); sourceUrls.add(TextUtils.join("#", playUrls));
@ -137,25 +140,25 @@ public class Ali {
return vod; return vod;
} }
private void listFiles(Item folder, LinkedHashMap<Item, String> name2id, LinkedHashMap<String, List<String>> subMap, String shareId, String shareToken) throws Exception { private void listFiles(Item folder, List<Item> files, LinkedHashMap<String, List<String>> subMap) throws Exception {
listFiles(folder, name2id, subMap, shareId, shareToken, ""); listFiles(folder, files, subMap, "");
} }
private void listFiles(Item parent, LinkedHashMap<Item, String> name2id, LinkedHashMap<String, List<String>> subMap, String shareId, String shareToken, String marker) throws Exception { private void listFiles(Item parent, List<Item> files, LinkedHashMap<String, List<String>> subMap, String marker) throws Exception {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
List<Item> folders = new ArrayList<>(); List<Item> folders = new ArrayList<>();
body.put("limit", 200); body.put("limit", 200);
body.put("share_id", shareId); body.put("share_id", auth.getShareId());
body.put("parent_file_id", parent.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(postAuth("adrive/v3/file/list", body));
for (Item file : item.getItems()) { for (Item file : item.getItems()) {
if (file.getType().equals("folder")) { if (file.getType().equals("folder")) {
folders.add(file); folders.add(file);
} else if (file.getCategory().equals("video") || file.getCategory().equals("audio")) { } else if (file.getCategory().equals("video") || file.getCategory().equals("audio")) {
name2id.put(file, shareId + "+" + shareToken + "+" + file.getFileId()); files.add(file);
} else if (Misc.isSub(file.getExt())) { } else if (Misc.isSub(file.getExt())) {
String key = file.removeExt(); String key = file.removeExt();
if (!subMap.containsKey(key)) subMap.put(key, new ArrayList<>()); if (!subMap.containsKey(key)) subMap.put(key, new ArrayList<>());
@ -163,10 +166,10 @@ public class Ali {
} }
} }
if (item.getNextMarker().length() > 0) { if (item.getNextMarker().length() > 0) {
listFiles(parent, name2id, subMap, shareId, shareToken, item.getNextMarker()); listFiles(parent, files, subMap, item.getNextMarker());
} }
for (Item folder : folders) { for (Item folder : folders) {
listFiles(folder, name2id, subMap, shareId, shareToken); listFiles(folder, files, subMap);
} }
} }
@ -180,25 +183,42 @@ public class Ali {
return ""; return "";
} }
private void refreshAccessToken() { private boolean refreshAccessToken() {
try { try {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("refresh_token", auth.getRefreshToken()); body.put("refresh_token", auth.getRefreshToken());
body.put("grant_type", "refresh_token"); body.put("grant_type", "refresh_token");
JSONObject object = new JSONObject(post("https://auth.aliyundrive.com/v2/account/token", body)); JSONObject object = new JSONObject(post("https://auth.aliyundrive.com/v2/account/token", body));
auth.setAccessToken(object.getString("token_type") + " " + object.getString("access_token")); auth.setAccessToken(object.getString("token_type") + " " + object.getString("access_token"));
auth.setExpiresTime(System.currentTimeMillis() + object.getInt("expires_in") * 1000L);
auth.setRefreshToken(object.getString("refresh_token")); auth.setRefreshToken(object.getString("refresh_token"));
SpiderDebug.log("refresh token: " + auth.getRefreshToken()); SpiderDebug.log("refresh token: " + auth.getRefreshToken());
} catch (JSONException e) { return true;
} catch (Exception e) {
checkService(); checkService();
auth.clean(); auth.clean();
getQRCode(); getQRCode();
return true;
} finally { } finally {
while (auth.isEmpty()) SystemClock.sleep(250); while (auth.isEmpty()) SystemClock.sleep(250);
} }
} }
private boolean refreshShareToken() {
try {
JSONObject body = new JSONObject();
body.put("share_id", auth.getShareId());
body.put("share_pwd", "");
JSONObject object = new JSONObject(post("v2/share_link/get_share_token", body));
auth.setShareToken(object.getString("share_token"));
SpiderDebug.log("share token: " + auth.getShareToken());
return true;
} catch (Exception e) {
Init.show("來晚啦,該分享已失效。");
e.printStackTrace();
return false;
}
}
private String findSubs(String name, Map<String, List<String>> subMap) { private String findSubs(String name, Map<String, List<String>> subMap) {
name = name.substring(0, name.lastIndexOf(".")); name = name.substring(0, name.lastIndexOf("."));
List<String> subs = subMap.get(name); List<String> subs = subMap.get(name);
@ -214,33 +234,19 @@ public class Ali {
return sb.toString(); return sb.toString();
} }
private List<Sub> getSub(String shareId, String shareToken, String[] ids) { private List<Sub> getSub(String[] ids) {
List<Sub> sub = new ArrayList<>(); List<Sub> sub = new ArrayList<>();
for (String text : ids) { for (String text : ids) {
if (!text.contains("@@@")) continue; if (!text.contains("@@@")) continue;
String[] split = text.split("@@@"); String[] split = text.split("@@@");
String name = split[0]; String name = split[0];
String ext = split[1]; String ext = split[1];
String url = Proxy.getUrl() + "?do=ali&type=sub&share_id=" + shareId + "&share_token=" + shareToken + "&file_id=" + split[2]; String url = Proxy.getUrl() + "?do=ali&type=sub" + "&file_id=" + split[2];
sub.add(Sub.create().name(name).ext(ext).url(url)); sub.add(Sub.create().name(name).ext(ext).url(url));
} }
return sub; return sub;
} }
private String getShareToken(String shareId) {
try {
JSONObject body = new JSONObject();
body.put("share_id", shareId);
body.put("share_pwd", "");
String json = post("v2/share_link/get_share_token", body);
return new JSONObject(json).getString("share_token");
} catch (JSONException e) {
Init.show("來晚啦,該分享已失效。");
e.printStackTrace();
return "";
}
}
private String getPreviewQuality(JSONArray taskList) throws Exception { private String getPreviewQuality(JSONArray taskList) throws Exception {
for (String templateId : Arrays.asList("FHD", "HD", "SD", "LD")) { for (String templateId : Arrays.asList("FHD", "HD", "SD", "LD")) {
for (int i = 0; i < taskList.length(); ++i) { for (int i = 0; i < taskList.length(); ++i) {
@ -253,14 +259,14 @@ public class Ali {
return taskList.getJSONObject(0).getString("url"); return taskList.getJSONObject(0).getString("url");
} }
private String getPreviewUrl(String shareId, String shareToken, String fileId) { private String getPreviewUrl(String fileId) {
try { try {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("file_id", fileId); body.put("file_id", fileId);
body.put("share_id", shareId); body.put("share_id", auth.getShareId());
body.put("template_id", ""); body.put("template_id", "");
body.put("category", "live_transcoding"); body.put("category", "live_transcoding");
String json = post("v2/file/get_share_link_video_preview_play_info", body, shareToken); String json = postAuth("v2/file/get_share_link_video_preview_play_info", body);
JSONArray taskList = new JSONObject(json).getJSONObject("video_preview_play_info").getJSONArray("live_transcoding_task_list"); JSONArray taskList = new JSONObject(json).getJSONObject("video_preview_play_info").getJSONArray("live_transcoding_task_list");
Map<String, List<String>> respHeaders = new HashMap<>(); Map<String, List<String>> respHeaders = new HashMap<>();
OkHttp.stringNoRedirect(getPreviewQuality(taskList), getHeaders(), respHeaders); OkHttp.stringNoRedirect(getPreviewQuality(taskList), getHeaders(), respHeaders);
@ -271,13 +277,13 @@ public class Ali {
} }
} }
private String getDownloadUrl(String shareId, String shareToken, String fileId) { private String getDownloadUrl(String fileId) {
try { try {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("file_id", fileId); body.put("file_id", fileId);
body.put("share_id", shareId); body.put("share_id", auth.getShareId());
body.put("expire_sec", 600); body.put("expire_sec", 600);
String json = post("v2/file/get_share_link_download_url", body, shareToken); String json = postAuth("v2/file/get_share_link_download_url", body);
String url = new JSONObject(json).optString("download_url"); String url = new JSONObject(json).optString("download_url");
Map<String, List<String>> respHeaders = new HashMap<>(); Map<String, List<String>> respHeaders = new HashMap<>();
OkHttp.stringNoRedirect(url, getHeaders(), respHeaders); OkHttp.stringNoRedirect(url, getHeaders(), respHeaders);
@ -289,10 +295,8 @@ public class Ali {
} }
public Object[] vod(Map<String, String> params) { public Object[] vod(Map<String, String> params) {
String shareId = params.get("share_id");
String shareToken = params.get("share_token");
String fileId = params.get("file_id"); String fileId = params.get("file_id");
String text = OkHttp.string(getDownloadUrl(shareId, shareToken, fileId), getHeaders(shareToken)); String text = OkHttp.string(getDownloadUrl(fileId), getAuthHeader());
Object[] result = new Object[3]; Object[] result = new Object[3];
result[0] = 200; result[0] = 200;
result[1] = "application/octet-stream"; result[1] = "application/octet-stream";

View File

@ -17,7 +17,6 @@ public class Init {
private final Handler handler; private final Handler handler;
private Application app; private Application app;
private Ali ali;
private static class Loader { private static class Loader {
static volatile Init INSTANCE = new Init(); static volatile Init INSTANCE = new Init();
@ -28,7 +27,6 @@ public class Init {
} }
public Init() { public Init() {
this.ali = new Ali();
this.handler = new Handler(Looper.getMainLooper()); this.handler = new Handler(Looper.getMainLooper());
} }
@ -36,14 +34,6 @@ public class Init {
return get().app; return get().app;
} }
public static Ali getAli() {
return get().ali;
}
public static void setAli(Ali ali) {
get().ali = ali;
}
public static void init(Context context) { public static void init(Context context) {
SpiderDebug.log("自定義爬蟲代碼載入成功!"); SpiderDebug.log("自定義爬蟲代碼載入成功!");
get().app = ((Application) context); get().app = ((Application) context);

View File

@ -25,7 +25,6 @@ import java.util.Map;
public class PanSou extends Spider { public class PanSou extends Spider {
private final String siteUrl = "https://www.alipansou.com"; private final String siteUrl = "https://www.alipansou.com";
private Ali ali;
private Map<String, String> getHeaders(String id) { private Map<String, String> getHeaders(String id) {
HashMap<String, String> headers = new HashMap<>(); HashMap<String, String> headers = new HashMap<>();
@ -37,7 +36,7 @@ public class PanSou extends Spider {
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
@ -46,7 +45,7 @@ public class PanSou extends Spider {
Map<String, List<String>> respHeaders = new HashMap<>(); Map<String, List<String>> respHeaders = new HashMap<>();
OkHttp.stringNoRedirect(url, getHeaders(ids.get(0)), respHeaders); OkHttp.stringNoRedirect(url, getHeaders(ids.get(0)), respHeaders);
url = OkHttp.getRedirectLocation(respHeaders); url = OkHttp.getRedirectLocation(respHeaders);
return ali.detailContent(Arrays.asList(url)); return Ali.get().detailContent(Arrays.asList(url));
} }
@Override @Override
@ -75,6 +74,6 @@ public class PanSou extends Spider {
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) { public String playerContent(String flag, String id, List<String> vipFlags) {
return ali.playerContent(flag, id); return Ali.get().playerContent(flag, id);
} }
} }

View File

@ -32,7 +32,6 @@ public class Paper extends Spider {
private final String url = "https://gitcafe.net/alipaper/"; private final String url = "https://gitcafe.net/alipaper/";
private final String api = "https://gitcafe.net/tool/alipaper/"; private final String api = "https://gitcafe.net/tool/alipaper/";
private List<String> types; private List<String> types;
private Ali ali;
private HashMap<String, String> getHeaders() { private HashMap<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>(); HashMap<String, String> headers = new HashMap<>();
@ -43,7 +42,7 @@ public class Paper extends Spider {
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
types = Arrays.asList("hyds", "rhds", "omds", "qtds", "hydy", "rhdy", "omdy", "qtdy", "hydm", "rhdm", "omdm", "jlp", "zyp", "jypx", "qtsp"); types = Arrays.asList("hyds", "rhds", "omds", "qtds", "hydy", "rhdy", "omdy", "qtdy", "hydm", "rhdm", "omdm", "jlp", "zyp", "jypx", "qtsp");
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
@ -93,7 +92,7 @@ public class Paper extends Spider {
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
return ali.detailContent(ids); return Ali.get().detailContent(ids);
} }
@Override @Override
@ -109,6 +108,6 @@ public class Paper extends Spider {
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return ali.playerContent(flag, id); return Ali.get().playerContent(flag, id);
} }
} }

View File

@ -18,7 +18,7 @@ public class Proxy extends Spider {
case "ck": case "ck":
return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes("UTF-8"))}; return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes("UTF-8"))};
case "ali": case "ali":
return Init.getAli().vod(params); return Ali.get().vod(params);
default: default:
return null; return null;
} }

View File

@ -11,17 +11,15 @@ import java.util.List;
public class Push extends Spider { public class Push extends Spider {
private Ali ali;
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
String url = ids.get(0).trim(); String url = ids.get(0).trim();
if (url.contains("aliyundrive")) return ali.detailContent(ids); if (url.contains("aliyundrive")) return Ali.get().detailContent(ids);
if (Misc.isVip(url)) return Result.string(vod(url, "官源")); if (Misc.isVip(url)) return Result.string(vod(url, "官源"));
if (Misc.isVideoFormat(url)) return Result.string(vod(url, "直連")); if (Misc.isVideoFormat(url)) return Result.string(vod(url, "直連"));
return Result.string(vod(url, "網頁")); return Result.string(vod(url, "網頁"));
@ -29,7 +27,7 @@ public class Push extends Spider {
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) { public String playerContent(String flag, String id, List<String> vipFlags) {
if (flag.contains("")) return ali.playerContent(flag, id); if (flag.contains("")) return Ali.get().playerContent(flag, id);
if (flag.equals("官源")) return Result.get().parse().jx().url(id).string(); if (flag.equals("官源")) return Result.get().parse().jx().url(id).string();
if (flag.equals("網頁")) return Result.get().parse().url(id).string(); if (flag.equals("網頁")) return Result.get().parse().url(id).string();
return Result.get().url(id).string(); return Result.get().url(id).string();

View File

@ -22,7 +22,6 @@ public class UpYun extends Spider {
private final String siteUrl = "https://www.upyunso.com/"; private final String siteUrl = "https://www.upyunso.com/";
private final String apiUrl = "https://api.upyunso2.com/"; private final String apiUrl = "https://api.upyunso2.com/";
private Ali ali;
private Map<String, String> getHeaders() { private Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>(); HashMap<String, String> headers = new HashMap<>();
@ -33,12 +32,12 @@ public class UpYun extends Spider {
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
return ali.detailContent(Arrays.asList(ids.get(0))); return Ali.get().detailContent(Arrays.asList(ids.get(0)));
} }
@Override @Override
@ -52,6 +51,6 @@ public class UpYun extends Spider {
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) { public String playerContent(String flag, String id, List<String> vipFlags) {
return ali.playerContent(flag, id); return Ali.get().playerContent(flag, id);
} }
} }

View File

@ -20,21 +20,19 @@ import java.util.Objects;
public class YiSo extends Spider { public class YiSo extends Spider {
private Ali ali;
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
public String detailContent(List<String> ids) throws Exception { public String detailContent(List<String> ids) throws Exception {
return ali.detailContent(ids); return Ali.get().detailContent(ids);
} }
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return ali.playerContent(flag, id); return Ali.get().playerContent(flag, id);
} }
@Override @Override

View File

@ -25,7 +25,6 @@ public class Zhaozy extends Spider {
private final Pattern regexAli = Pattern.compile("(https://www.aliyundrive.com/s/[^\"]+)"); private final Pattern regexAli = Pattern.compile("(https://www.aliyundrive.com/s/[^\"]+)");
private final Pattern regexVid = Pattern.compile("(\\S+)"); private final Pattern regexVid = Pattern.compile("(\\S+)");
private final String siteUrl = "https://zhaoziyuan.la/"; private final String siteUrl = "https://zhaoziyuan.la/";
private Ali ali;
private Map<String, String> getHeader() { private Map<String, String> getHeader() {
Map<String, String> headers = new HashMap<>(); Map<String, String> headers = new HashMap<>();
@ -52,7 +51,7 @@ public class Zhaozy extends Spider {
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = Init.getAli().token(extend); Ali.get().init(extend);
} }
@Override @Override
@ -60,12 +59,12 @@ public class Zhaozy extends Spider {
Matcher matcher = regexAli.matcher(OkHttp.string(siteUrl + ids.get(0), getHeader())); Matcher matcher = regexAli.matcher(OkHttp.string(siteUrl + ids.get(0), getHeader()));
if (!matcher.find()) return ""; if (!matcher.find()) return "";
ids.set(0, matcher.group(1)); ids.set(0, matcher.group(1));
return ali.detailContent(ids); return Ali.get().detailContent(ids);
} }
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return ali.playerContent(flag, id); return Ali.get().playerContent(flag, id);
} }
@Override @Override

Binary file not shown.

View File

@ -1 +1 @@
0c652bdac4683c84e151f867dd3abe54 b6cec380ddab899d275cf2fec2ed676a

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;0c652bdac4683c84e151f867dd3abe54", "spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;b6cec380ddab899d275cf2fec2ed676a",
"wallpaper": "https://gao.chuqiuyu.tk", "wallpaper": "https://gao.chuqiuyu.tk",
"lives": [ "lives": [
{ {

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;0c652bdac4683c84e151f867dd3abe54", "spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;b6cec380ddab899d275cf2fec2ed676a",
"wallpaper": "http://www.kf666888.cn/api/tvbox/img", "wallpaper": "http://www.kf666888.cn/api/tvbox/img",
"lives": [ "lives": [
{ {