pull/69/head
FongMi 3 years ago
parent 84c1ad8514
commit 7378fb0a2f
  1. 86
      app/src/main/java/com/github/catvod/ali/API.java
  2. 6
      app/src/main/java/com/github/catvod/net/Cronet.java
  3. 6
      app/src/main/java/com/github/catvod/net/OkHttp.java
  4. 6
      app/src/main/java/com/github/catvod/net/OkRequest.java
  5. 27
      app/src/main/java/com/github/catvod/net/OkResult.java
  6. 6
      app/src/main/java/com/github/catvod/spider/AList.java
  7. BIN
      jar/custom_spider.jar
  8. 2
      jar/custom_spider.jar.md5

@ -23,6 +23,7 @@ import com.github.catvod.bean.ali.Sorter;
import com.github.catvod.bean.ali.User;
import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.net.OkHttp;
import com.github.catvod.net.OkResult;
import com.github.catvod.spider.Init;
import com.github.catvod.spider.Proxy;
import com.github.catvod.utils.Prefers;
@ -115,42 +116,31 @@ public class API {
return headers;
}
private String alist(String url, JSONObject body) throws Exception {
url = "https://api.nn.ci/alist/ali_open/" + url;
OkResult result = OkHttp.postJson(url, body.toString(), getHeader());
if (isManyRequest(result.getBody())) return "";
if (result.getCode() == 200) return result.getBody();
throw new Exception(result.getBody());
}
private String post(String url, JSONObject body) {
url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url;
return OkHttp.postJson(url, body.toString(), getHeader());
return OkHttp.postJson(url, body.toString(), getHeader()).getBody();
}
private String auth(String url, String json, boolean retry) {
url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url;
String result = OkHttp.postJson(url, json, getHeaderAuth());
if (retry && checkAuth(result)) return auth(url, json, false);
return result;
OkResult result = OkHttp.postJson(url, json, getHeaderAuth());
if (retry && result.getCode() != 200 && refreshAccessToken()) return auth(url, json, false);
return result.getBody();
}
private String oauth(String url, String json, boolean retry) {
url = url.startsWith("https") ? url : "https://open.aliyundrive.com/adrive/v1.0/" + url;
String result = OkHttp.postJson(url, json, getHeaderOpen());
if (retry && checkOpen(result)) return oauth(url, json, false);
return result;
}
private boolean checkAuth(String result) {
if (result.contains("AccessTokenInvalid")) return refreshAccessToken();
if (result.contains("ShareLinkTokenInvalid") || result.contains("InvalidParameterNotMatch")) return refreshShareToken();
return checkQuotaExhausted(result);
}
private boolean checkOpen(String result) {
if (result.contains("AccessTokenInvalid")) return refreshOpenToken();
return false;
}
private boolean checkQuotaExhausted(String result) {
if (!result.contains("QuotaExhausted")) return false;
Init.show("容量不夠拉。");
user.clean().save();
refreshAccessToken();
return false;
OkResult result = OkHttp.postJson(url, json, getHeaderOpen());
if (retry && result.getCode() != 200 && refreshOpenToken()) return oauth(url, json, false);
return result.getBody();
}
private boolean isManyRequest(String result) {
@ -161,13 +151,6 @@ public class API {
return true;
}
private boolean isInvalidOpenToken(String result) {
if (!result.contains("invalid refresh_token")) return false;
oauth.clean().save();
oauthRequest();
return true;
}
public void checkAccessToken() {
if (user.getAccessToken().isEmpty()) refreshAccessToken();
}
@ -190,7 +173,6 @@ public class API {
} catch (Exception e) {
e.printStackTrace();
user.clean().save();
SpiderDebug.log(e);
stopService();
getQRCode();
return true;
@ -209,7 +191,7 @@ public class API {
String result = auth(url, body.toString(), true);
oauthRedirect(Code.objectFrom(result).getCode());
} catch (Exception e) {
SpiderDebug.log(e);
e.printStackTrace();
}
}
@ -219,12 +201,10 @@ public class API {
JSONObject body = new JSONObject();
body.put("code", code);
body.put("grant_type", "authorization_code");
String result = post("https://api.nn.ci/alist/ali_open/code", body);
if (isManyRequest(result)) return;
oauth = OAuth.objectFrom(result).save();
SpiderDebug.log(oauth.toString());
oauth = OAuth.objectFrom(alist("code", body)).save();
} catch (Exception e) {
SpiderDebug.log(e);
e.printStackTrace();
oauth.clean().save();
}
}
@ -234,39 +214,35 @@ public class API {
JSONObject body = new JSONObject();
body.put("grant_type", "refresh_token");
body.put("refresh_token", oauth.getRefreshToken());
String result = post("https://api.nn.ci/alist/ali_open/token", body);
if (isManyRequest(result)) return false;
if (isInvalidOpenToken(result)) return true;
oauth = OAuth.objectFrom(result).save();
SpiderDebug.log(oauth.toString());
oauth = OAuth.objectFrom(alist("token", body)).save();
return true;
} catch (Exception e) {
SpiderDebug.log(e);
return false;
e.printStackTrace();
oauth.clean().save();
oauthRequest();
return true;
}
}
public boolean refreshShareToken() {
private void refreshShareToken() {
try {
SpiderDebug.log("refreshShareToken...");
JSONObject body = new JSONObject();
body.put("share_id", shareId);
body.put("share_pwd", "");
JSONObject object = new JSONObject(post("v2/share_link/get_share_token", body));
shareToken = object.getString("share_token");
return true;
String result = post("v2/share_link/get_share_token", body);
shareToken = new JSONObject(result).getString("share_token");
} catch (Exception e) {
Init.show("來晚啦,該分享已失效。");
e.printStackTrace();
return false;
Init.show("來晚啦,該分享已失效。");
}
}
public Vod getVod(String url, String fileId) throws Exception {
JSONObject body = new JSONObject();
body.put("share_id", shareId);
String json = post("adrive/v3/share_link/get_share_by_anonymous", body);
JSONObject object = new JSONObject(json);
String result = post("adrive/v3/share_link/get_share_by_anonymous", body);
JSONObject object = new JSONObject(result);
List<Item> files = new ArrayList<>();
LinkedHashMap<String, List<String>> subMap = new LinkedHashMap<>();
listFiles(new Item(getParentFileId(fileId, object)), files, subMap);

@ -68,7 +68,7 @@ public class Cronet {
}
public static String string(OkHttpClient client, String method, String url, String tag, Map<String, String> params, Map<String, String> header, Map<String, List<String>> respHeader) {
return new OkRequest(method, url, params, header, respHeader).tag(tag).execute(client);
return new OkRequest(method, url, params, header, respHeader).tag(tag).execute(client).getBody();
}
public static String string(String url) {
@ -107,11 +107,11 @@ public class Cronet {
return string(client(), POST, url, null, params, header, respHeader);
}
public static String postJson(String url, String json) {
public static OkResult postJson(String url, String json) {
return postJson(url, json, null);
}
public static String postJson(String url, String json, Map<String, String> header) {
public static OkResult postJson(String url, String json, Map<String, String> header) {
return new OkRequest(POST, url, json, header).execute(client());
}

@ -64,7 +64,7 @@ public class OkHttp {
}
public static String string(OkHttpClient client, String method, String url, String tag, Map<String, String> params, Map<String, String> header, Map<String, List<String>> respHeader) {
return new OkRequest(method, url, params, header, respHeader).tag(tag).execute(client);
return new OkRequest(method, url, params, header, respHeader).tag(tag).execute(client).getBody();
}
public static String string(String url) {
@ -103,11 +103,11 @@ public class OkHttp {
return string(client(), POST, url, null, params, header, respHeader);
}
public static String postJson(String url, String json) {
public static OkResult postJson(String url, String json) {
return postJson(url, json, null);
}
public static String postJson(String url, String json, Map<String, String> header) {
public static OkResult postJson(String url, String json, Map<String, String> header) {
return new OkRequest(POST, url, json, header).execute(client());
}

@ -71,14 +71,14 @@ class OkRequest {
url = Utils.substring(url);
}
public String execute(OkHttpClient client) {
public OkResult execute(OkHttpClient client) {
try {
Response response = client.newCall(request).execute();
if (respHeader != null) respHeader.clear();
if (respHeader != null) respHeader.putAll(response.headers().toMultimap());
return response.body().string();
return new OkResult(response.code(), response.body().string());
} catch (IOException e) {
return "";
return new OkResult();
}
}
}

@ -0,0 +1,27 @@
package com.github.catvod.net;
import android.text.TextUtils;
public class OkResult {
private final int code;
private final String body;
public OkResult() {
this.code = 500;
this.body = "";
}
public OkResult(int code, String body) {
this.code = code;
this.body = body;
}
public int getCode() {
return code;
}
public String getBody() {
return TextUtils.isEmpty(body) ? "" : body;
}
}

@ -140,7 +140,7 @@ public class AList extends Spider {
JSONObject params = new JSONObject();
params.put("password", drive.getPassword());
params.put("path", path.startsWith(drive.getPath()) ? path : drive.getPath() + path);
String response = OkHttp.postJson(drive.getApi(), params.toString());
String response = OkHttp.postJson(drive.getApi(), params.toString()).getBody();
return Item.objectFrom(getDetailJson(drive.isNew(), response));
} catch (Exception e) {
return new Item();
@ -155,7 +155,7 @@ public class AList extends Spider {
JSONObject params = new JSONObject();
params.put("password", drive.getPassword());
params.put("path", path.startsWith(drive.getPath()) ? path : drive.getPath() + path);
String response = OkHttp.postJson(drive.listApi(), params.toString());
String response = OkHttp.postJson(drive.listApi(), params.toString()).getBody();
List<Item> items = Item.arrayFrom(getListJson(drive.isNew(), response));
Iterator<Item> iterator = items.iterator();
if (filter) while (iterator.hasNext()) if (iterator.next().ignore(drive.isNew())) iterator.remove();
@ -167,7 +167,7 @@ public class AList extends Spider {
private void search(CountDownLatch cd, List<Vod> list, Drive drive, String keyword) {
try {
String response = OkHttp.postJson(drive.searchApi(), drive.params(keyword));
String response = OkHttp.postJson(drive.searchApi(), drive.params(keyword)).getBody();
List<Item> items = Item.arrayFrom(getSearchJson(drive.isNew(), response));
for (Item item : items) if (!item.ignore(drive.isNew())) list.add(item.getVod(drive, vodPic));
} catch (Exception ignored) {

Binary file not shown.

@ -1 +1 @@
73d83409ac27b38de28c7eb6ddcc1c0f
1cad1d2b01a603e950109d009a884da0

Loading…
Cancel
Save