This commit is contained in:
GH Action - Upstream Sync 2023-03-25 12:29:44 +00:00
commit 99b2dbb073
8 changed files with 54 additions and 25 deletions

View File

@ -145,6 +145,12 @@ public class API {
return false; return false;
} }
private boolean checkManyRequest(String result) {
if (!result.contains("Too Many Requests")) return false;
Init.show("洗洗睡吧Too Many Requests。");
return true;
}
public void checkAccessToken() { public void checkAccessToken() {
if (auth.getAccessToken().isEmpty()) refreshAccessToken(); if (auth.getAccessToken().isEmpty()) refreshAccessToken();
} }
@ -154,7 +160,7 @@ public class API {
SpiderDebug.log("refreshAccessToken..."); SpiderDebug.log("refreshAccessToken...");
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
String token = auth.getRefreshToken(); String token = auth.getRefreshToken();
if (token.startsWith("http")) token = OkHttp.string(token).replaceAll("[^A-Za-z0-9]", ""); if (token.startsWith("http")) token = OkHttp.string(token);
body.put("refresh_token", token); body.put("refresh_token", token);
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));
@ -186,14 +192,22 @@ public class API {
oauthRedirect(object.getString("redirectUri").split("code=")[1]); oauthRedirect(object.getString("redirectUri").split("code=")[1]);
} }
private void oauthRedirect(String code) throws Exception { private void oauthRedirect(String code) {
SpiderDebug.log("OAuth Redirect..."); try {
JSONObject body = new JSONObject(); SpiderDebug.log("OAuth Redirect...");
body.put("code", code); JSONObject body = new JSONObject();
body.put("grant_type", "authorization_code"); body.put("code", code);
JSONObject object = new JSONObject(post("https://api.nn.ci/alist/ali_open/code", body)); body.put("grant_type", "authorization_code");
Log.e("DDD", object.toString()); String result = post("https://api.nn.ci/alist/ali_open/code", body);
auth.setRefreshTokenOpen(object.getString("refresh_token")); Log.e("DDD", result);
if (checkManyRequest(result)) return;
JSONObject object = new JSONObject(result);
auth.setRefreshTokenOpen(object.getString("refresh_token"));
auth.setAccessTokenOpen(object.optString("token_type") + " " + object.optString("access_token"));
auth.save();
} catch (Exception e) {
SpiderDebug.log(e);
}
} }
private boolean refreshOpenToken() { private boolean refreshOpenToken() {
@ -202,8 +216,10 @@ public class API {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("grant_type", "refresh_token"); body.put("grant_type", "refresh_token");
body.put("refresh_token", auth.getRefreshTokenOpen()); body.put("refresh_token", auth.getRefreshTokenOpen());
JSONObject object = new JSONObject(post("https://api.nn.ci/alist/ali_open/token", body)); String result = post("https://api.nn.ci/alist/ali_open/token", body);
Log.e("DDD", object.toString()); Log.e("DDD", result);
if (checkManyRequest(result)) return false;
JSONObject object = new JSONObject(result);
auth.setRefreshTokenOpen(object.optString("refresh_token")); auth.setRefreshTokenOpen(object.optString("refresh_token"));
auth.setAccessTokenOpen(object.optString("token_type") + " " + object.optString("access_token")); auth.setAccessTokenOpen(object.optString("token_type") + " " + object.optString("access_token"));
auth.save(); auth.save();

View File

@ -85,9 +85,6 @@ public class Auth {
} }
public void clean() { public void clean() {
setRefreshTokenOpen("");
setAccessTokenOpen("");
setRefreshToken("");
setAccessToken(""); setAccessToken("");
} }

View File

@ -1,5 +1,6 @@
package com.github.catvod.bean.alist; package com.github.catvod.bean.alist;
import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import com.github.catvod.bean.Class; import com.github.catvod.bean.Class;
@ -24,6 +25,8 @@ public class Drive {
private String password; private String password;
@SerializedName("version") @SerializedName("version")
private int version; private int version;
@SerializedName("path")
private String path;
public static Drive objectFrom(String str) { public static Drive objectFrom(String str) {
return new Gson().fromJson(str, Drive.class); return new Gson().fromJson(str, Drive.class);
@ -57,6 +60,14 @@ public class Drive {
this.version = version; this.version = version;
} }
public String getPath() {
return TextUtils.isEmpty(path) ? "" : path;
}
public void setPath(String path) {
this.path = TextUtils.isEmpty(path) ? "" : path;
}
public boolean isNew() { public boolean isNew() {
return getVersion() == 3; return getVersion() == 3;
} }
@ -65,24 +76,29 @@ public class Drive {
return new Class(getName(), getName(), "1"); return new Class(getName(), getName(), "1");
} }
public String getHost() {
return getServer().replace(getPath(), "");
}
public String settingsApi() { public String settingsApi() {
return getServer() + "/api/public/settings"; return getHost() + "/api/public/settings";
} }
public String listApi() { public String listApi() {
return getServer() + (isNew() ? "/api/fs/list" : "/api/public/path"); return getHost() + (isNew() ? "/api/fs/list" : "/api/public/path");
} }
public String getApi() { public String getApi() {
return getServer() + (isNew() ? "/api/fs/get" : "/api/public/path"); return getHost() + (isNew() ? "/api/fs/get" : "/api/public/path");
} }
public String searchApi() { public String searchApi() {
return getServer() + (isNew() ? "/api/fs/search" : "/api/public/search"); return getHost() + (isNew() ? "/api/fs/search" : "/api/public/search");
} }
public Drive check() { public Drive check() {
if (getVersion() == 0) setVersion(OkHttp.string(settingsApi()).contains("v2.") ? 2 : 3); if (path == null) setPath(Uri.parse(getServer()).getPath());
if (version == 0) setVersion(OkHttp.string(settingsApi()).contains("v2.") ? 2 : 3);
return this; return this;
} }

View File

@ -13,8 +13,8 @@ import com.github.catvod.bean.alist.Item;
import com.github.catvod.bean.alist.Sorter; import com.github.catvod.bean.alist.Sorter;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Utils;
import com.github.catvod.utils.Trans; import com.github.catvod.utils.Trans;
import com.github.catvod.utils.Utils;
import org.json.JSONObject; import org.json.JSONObject;
@ -136,7 +136,7 @@ public class AList extends Spider {
String path = id.contains("/") ? id.substring(id.indexOf("/")) : ""; String path = id.contains("/") ? id.substring(id.indexOf("/")) : "";
Drive drive = getDrive(key); Drive drive = getDrive(key);
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("path", path); params.put("path", drive.getPath() + path);
params.put("password", drive.getPassword()); params.put("password", drive.getPassword());
String response = OkHttp.postJson(drive.getApi(), params.toString()); String response = OkHttp.postJson(drive.getApi(), params.toString());
return Item.objectFrom(getDetailJson(drive.isNew(), response)); return Item.objectFrom(getDetailJson(drive.isNew(), response));
@ -151,7 +151,7 @@ public class AList extends Spider {
String path = id.contains("/") ? id.substring(id.indexOf("/")) : ""; String path = id.contains("/") ? id.substring(id.indexOf("/")) : "";
Drive drive = getDrive(key); Drive drive = getDrive(key);
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("path", path); params.put("path", drive.getPath() + path);
params.put("password", drive.getPassword()); params.put("password", drive.getPassword());
String response = OkHttp.postJson(drive.listApi(), params.toString()); String response = OkHttp.postJson(drive.listApi(), params.toString());
List<Item> items = Item.arrayFrom(getListJson(drive.isNew(), response)); List<Item> items = Item.arrayFrom(getListJson(drive.isNew(), response));

Binary file not shown.

View File

@ -1 +1 @@
255c5dca97c64efb39b5fbe7d748cc0b 3473c6feb44308efdb18ef8ea90ed6eb

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;255c5dca97c64efb39b5fbe7d748cc0b", "spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;3473c6feb44308efdb18ef8ea90ed6eb",
"wallpaper": "https://gao.chuqiuyu.tk", "wallpaper": "https://gao.chuqiuyu.tk",
"sites": [ "sites": [
{ {

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;255c5dca97c64efb39b5fbe7d748cc0b", "spider": "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;3473c6feb44308efdb18ef8ea90ed6eb",
"wallpaper": "http://饭太硬.ga/深色壁纸/api.php", "wallpaper": "http://饭太硬.ga/深色壁纸/api.php",
"sites": [ "sites": [
{ {