diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index 3488fa4b8..4b866e8c4 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -135,6 +135,7 @@ public class ApiConfig { private String parseExt(String ext) { if (ext.startsWith("http")) return ext; else if (ext.startsWith("file")) return FileUtil.read(ext); + else if (ext.startsWith("img+")) return Decoder.getExt(ext); else if (ext.endsWith(".json")) return parseExt(Utils.convert(ext)); return ext; } diff --git a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java index b62d7cc8d..df8918b61 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java +++ b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java @@ -7,6 +7,7 @@ import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Json; import com.google.common.io.BaseEncoding; +import java.io.File; import java.nio.charset.StandardCharsets; import javax.crypto.Cipher; @@ -28,18 +29,21 @@ public class Decoder { public static String getExt(String ext) { try { - return base64(OKHttp.newCall(ext.substring(4)).execute().body().string()); + return base64(getData(ext.substring(4))); } catch (Exception ignored) { return ""; } } - public static void getSpider(String jar) { + public static File getSpider(String jar, String md5) { try { - String data = OKHttp.newCall(jar.substring(4)).execute().body().string(); + File file = FileUtil.getJar(jar); + if (md5.length() > 0 && FileUtil.equals(jar, md5)) return file; + String data = getData(jar.substring(4)); data = data.substring(data.indexOf("**") + 2); - FileUtil.write(FileUtil.getJar(jar), Base64.decode(data, Base64.DEFAULT)); + return FileUtil.write(file, Base64.decode(data, Base64.DEFAULT)); } catch (Exception ignored) { + return FileUtil.getJar(jar); } } @@ -81,7 +85,7 @@ public class Decoder { return (key + "0000000000000000".substring(key.length())).getBytes(StandardCharsets.UTF_8); } - public static byte[] decodeHex(String s) { + private static byte[] decodeHex(String s) { return BaseEncoding.base16().decode(s.toUpperCase()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index 6ea7f90a7..79398d537 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java @@ -67,7 +67,9 @@ public class JarLoader { String[] texts = jar.split(";md5;"); String md5 = !jar.startsWith("file") && texts.length > 1 ? texts[1].trim() : ""; jar = texts[0]; - if (md5.length() > 0 && FileUtil.equals(jar, md5)) { + if (jar.startsWith("img+")) { + load(key, Decoder.getSpider(jar, md5)); + } else if (md5.length() > 0 && FileUtil.equals(jar, md5)) { load(key, FileUtil.getJar(jar)); } else if (jar.startsWith("http")) { load(key, download(jar));