From 8625026f26280fc3785e88c884bd7e0fb82ca6ca Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 9 Oct 2022 02:01:36 +0800 Subject: [PATCH] Auto replace localhost --- .../tv/ui/custom/dialog/ConfigDialog.java | 4 +-- .../com/fongmi/android/tv/api/ApiConfig.java | 3 +- .../com/fongmi/android/tv/api/JarLoader.java | 5 +-- .../com/fongmi/android/tv/utils/FileUtil.java | 30 ++-------------- .../com/fongmi/android/tv/utils/Utils.java | 35 +++++++++++++++++++ .../android/tv/ui/custom/ConfigDialog.java | 3 +- 6 files changed, 45 insertions(+), 35 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java index b25daee86..52c99f47d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java @@ -17,6 +17,7 @@ import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.QRCode; import com.fongmi.android.tv.utils.ResUtil; +import com.fongmi.android.tv.utils.Utils; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import org.greenrobot.eventbus.EventBus; @@ -71,8 +72,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener { private void onPositive(View view) { String url = binding.text.getText().toString().trim(); - if (url.startsWith("clan")) url = url.replace("clan", "file"); - callback.setConfig(url); + callback.setConfig(Utils.checkClan(url)); dialog.dismiss(); } 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 b04fe6cf4..a2471211a 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 @@ -14,6 +14,7 @@ import com.fongmi.android.tv.net.OKHttp; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Json; import com.fongmi.android.tv.utils.Prefers; +import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.Spider; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -149,7 +150,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.endsWith(".json")) return parseExt(FileUtil.convert(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/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index b730bf298..85b1fae76 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 @@ -5,6 +5,7 @@ import android.content.Context; import com.fongmi.android.tv.App; import com.fongmi.android.tv.net.OKHttp; import com.fongmi.android.tv.utils.FileUtil; +import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.SpiderNull; @@ -73,13 +74,13 @@ public class JarLoader { } else if (jar.startsWith("file")) { load(key, FileUtil.getLocal(jar)); } else if (!jar.isEmpty()) { - parseJar(key, FileUtil.convert(jar)); + parseJar(key, Utils.convert(jar)); } } public Spider getSpider(String key, String api, String ext, String jar) { try { - String spKey = (current = FileUtil.getMD5(jar)) + key; + String spKey = (current = Utils.getMD5(jar)) + key; if (spiders.containsKey(spKey)) return spiders.get(spKey); if (!loaders.containsKey(current)) parseJar(current, jar); Spider spider = (Spider) loaders.get(current).loadClass("com.github.catvod.spider." + api.replace("csp_", "")).newInstance(); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java index 656da35a0..2ff2e6428 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java @@ -16,10 +16,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; -import java.math.BigInteger; import java.net.URLConnection; import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; public class FileUtil { @@ -42,7 +40,7 @@ public class FileUtil { } public static File getJar(String fileName) { - return getCacheFile(getMD5(fileName).concat(".jar")); + return getCacheFile(Utils.getMD5(fileName).concat(".jar")); } public static File getLocal(String path) { @@ -80,17 +78,7 @@ public class FileUtil { } } - public static String convert(String text) { - if (TextUtils.isEmpty(text)) return ""; - if (text.startsWith("clan")) return text.replace("clan", "file"); - if (text.startsWith(".")) text = text.substring(1); - if (text.startsWith("/")) text = text.substring(1); - Uri uri = Uri.parse(Prefers.getUrl()); - if (uri.getLastPathSegment() == null) return uri.getScheme() + "://" + text; - return uri.toString().replace(uri.getLastPathSegment(), text); - } - - private static String getMd5(File file) { + public static String getMd5(File file) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); FileInputStream fis = new FileInputStream(file); @@ -107,20 +95,6 @@ public class FileUtil { } } - public static String getMD5(String src) { - try { - if (TextUtils.isEmpty(src)) return ""; - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] messageDigest = md.digest(src.getBytes()); - BigInteger no = new BigInteger(1, messageDigest); - StringBuilder sb = new StringBuilder(no.toString(16)); - while (sb.length() < 32) sb.insert(0, "0"); - return sb.toString().toLowerCase(); - } catch (NoSuchAlgorithmException e) { - return ""; - } - } - public static boolean equals(String jar, String md5) { return getMd5(getJar(jar)).equalsIgnoreCase(md5); } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java index ca8fec3f4..e98b6de4d 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java @@ -2,7 +2,9 @@ package com.fongmi.android.tv.utils; import android.app.Activity; import android.content.Context; +import android.net.Uri; import android.os.IBinder; +import android.text.TextUtils; import android.util.Base64; import android.view.KeyEvent; import android.view.View; @@ -10,6 +12,9 @@ import android.view.inputmethod.InputMethodManager; import com.fongmi.android.tv.App; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -67,6 +72,36 @@ public class Utils { return false; } + public static String checkClan(String text) { + if (text.contains("/localhost/")) text = text.replace("/localhost/", "/"); + if (text.startsWith("clan")) text = text.replace("clan", "file"); + return text; + } + + public static String convert(String text) { + if (TextUtils.isEmpty(text)) return ""; + if (text.startsWith("clan")) return checkClan(text); + if (text.startsWith(".")) text = text.substring(1); + if (text.startsWith("/")) text = text.substring(1); + Uri uri = Uri.parse(Prefers.getUrl()); + if (uri.getLastPathSegment() == null) return uri.getScheme() + "://" + text; + return uri.toString().replace(uri.getLastPathSegment(), text); + } + + public static String getMD5(String src) { + try { + if (TextUtils.isEmpty(src)) return ""; + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] messageDigest = md.digest(src.getBytes()); + BigInteger no = new BigInteger(1, messageDigest); + StringBuilder sb = new StringBuilder(no.toString(16)); + while (sb.length() < 32) sb.insert(0, "0"); + return sb.toString().toLowerCase(); + } catch (NoSuchAlgorithmException e) { + return ""; + } + } + public static String getBase64(String ext) { return Base64.encodeToString(ext.getBytes(), Base64.DEFAULT | Base64.NO_WRAP); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java index 14cbae37f..909abdd34 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java @@ -52,8 +52,7 @@ public class ConfigDialog { private void onPositive(View view) { String url = binding.text.getText().toString().trim(); - if (url.startsWith("clan")) url = url.replace("clan", "file"); - callback.setConfig(url); + callback.setConfig(Utils.checkClan(url)); dialog.dismiss(); }