diff --git a/app/src/main/java/com/github/catvod/ali/API.java b/app/src/main/java/com/github/catvod/ali/API.java index b92cad71..a73ba2f0 100644 --- a/app/src/main/java/com/github/catvod/ali/API.java +++ b/app/src/main/java/com/github/catvod/ali/API.java @@ -47,6 +47,8 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import okhttp3.Response; + public class API { private final Map quality; @@ -457,13 +459,14 @@ public class API { } } - public Object[] proxySub(Map params) { + public Object[] proxySub(Map params) throws Exception { String fileId = params.get("file_id"); - String text = OkHttp.string(getDownloadUrl(fileId), getHeaderAuth()); + Response res = OkHttp.newCall(getDownloadUrl(fileId), getHeaderAuth()); + byte[] body = Utils.getUTF8(res.body().bytes()); Object[] result = new Object[3]; result[0] = 200; result[1] = "application/octet-stream"; - result[2] = new ByteArrayInputStream(text.getBytes()); + result[2] = new ByteArrayInputStream(body); return result; } diff --git a/app/src/main/java/com/github/catvod/spider/Ali.java b/app/src/main/java/com/github/catvod/spider/Ali.java index 72e9f556..ff3ee578 100644 --- a/app/src/main/java/com/github/catvod/spider/Ali.java +++ b/app/src/main/java/com/github/catvod/spider/Ali.java @@ -40,7 +40,7 @@ public class Ali extends Spider { return flag.equals("原畫") ? API.get().playerContent(ids) : API.get().playerContent(ids, flag); } - public static Object[] proxy(Map params) { + public static Object[] proxy(Map params) throws Exception { String type = params.get("type"); if (type.equals("sub")) return API.get().proxySub(params); if (type.equals("token")) return API.get().getToken(); diff --git a/app/src/main/java/com/github/catvod/utils/Utils.java b/app/src/main/java/com/github/catvod/utils/Utils.java index cddf8246..12a863b6 100644 --- a/app/src/main/java/com/github/catvod/utils/Utils.java +++ b/app/src/main/java/com/github/catvod/utils/Utils.java @@ -14,6 +14,7 @@ import android.webkit.WebViewClient; import com.github.catvod.spider.Init; import java.math.BigInteger; +import java.nio.charset.Charset; import java.security.MessageDigest; import java.util.Arrays; import java.util.List; @@ -48,6 +49,21 @@ public class Utils { return hasCamera && hasPhone && hasBT; } + public static boolean isGBK(byte[] bytes) { + Charset charset = Charset.forName("GBK"); + String str = new String(bytes, charset); + byte[] newBytes = str.getBytes(charset); + return Arrays.equals(bytes, newBytes); + } + + public static byte[] getUTF8(byte[] bytes) throws Exception { + if (isGBK(bytes)) { + return new String(bytes, Charset.forName("GBK")).getBytes("UTF-8"); + } else { + return bytes; + } + } + public static boolean isSub(String ext) { return ext.equals("srt") || ext.equals("ass") || ext.equals("ssa"); }