Clean code

This commit is contained in:
FongMi 2025-04-23 15:08:19 +08:00
parent 78e08fbc03
commit 2eba323da2
6 changed files with 30 additions and 82 deletions

View File

@ -10,6 +10,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.utils.Notify;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Map; import java.util.Map;
@ -59,10 +60,9 @@ public class Init {
public static void checkPermission() { public static void checkPermission() {
try { try {
Activity activity = Init.getActivity(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;
if (activity == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return; if (context().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return;
if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return; Notify.show("請允許儲存權限");
activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 9999);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -74,16 +74,14 @@ public class Init {
Field activitiesField = activityThreadClass.getDeclaredField("mActivities"); Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
activitiesField.setAccessible(true); activitiesField.setAccessible(true);
Map<?, ?> activities = (Map<?, ?>) activitiesField.get(activityThread); Map<?, ?> activities = (Map<?, ?>) activitiesField.get(activityThread);
for (Object activityRecord : activities.values()) { for (Object o : activities.values()) {
Class<?> activityRecordClass = activityRecord.getClass(); Class<?> clz = o.getClass();
Field pausedField = activityRecordClass.getDeclaredField("paused"); Field pausedField = clz.getDeclaredField("paused");
pausedField.setAccessible(true); pausedField.setAccessible(true);
if (!pausedField.getBoolean(activityRecord)) { if (!pausedField.getBoolean(o)) {
Field activityField = activityRecordClass.getDeclaredField("activity"); Field activityField = clz.getDeclaredField("activity");
activityField.setAccessible(true); activityField.setAccessible(true);
Activity activity = (Activity) activityField.get(activityRecord); return (Activity) activityField.get(o);
SpiderDebug.log(activity.getComponentName().getClassName());
return activity;
} }
} }
return null; return null;

View File

@ -5,6 +5,7 @@ import com.github.catvod.net.OkHttp;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
public class Proxy { public class Proxy {
@ -15,7 +16,7 @@ public class Proxy {
public static Object[] proxy(Map<String, String> params) throws Exception { public static Object[] proxy(Map<String, String> params) throws Exception {
switch (params.get("do")) { switch (params.get("do")) {
case "ck": case "ck":
return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes("UTF-8"))}; return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes(StandardCharsets.UTF_8))};
case "bili": case "bili":
return Bili.proxy(params); return Bili.proxy(params);
case "webdav": case "webdav":
@ -29,12 +30,22 @@ public class Proxy {
public static void init() { public static void init() {
try { try {
method = Class.forName("com.github.catvod.Proxy").getMethod("getUrl", boolean.class); Class<?> clz = Class.forName("com.github.catvod.Proxy");
port = (int) clz.getMethod("getPort").invoke(null);
method = clz.getMethod("getUrl", boolean.class);
} catch (Throwable e) { } catch (Throwable e) {
findPort(); findPort();
} }
} }
public static int getPort() {
return port;
}
public static String getUrl() {
return getUrl(true);
}
public static String getUrl(boolean local) { public static String getUrl(boolean local) {
try { try {
return (String) method.invoke(null, local); return (String) method.invoke(null, local);
@ -43,10 +54,6 @@ public class Proxy {
} }
} }
public static String getUrl() {
return getUrl(true);
}
private static void findPort() { private static void findPort() {
if (port > 0) return; if (port > 0) return;
for (int p = 8964; p < 9999; p++) { for (int p = 8964; p < 9999; p++) {

View File

@ -10,6 +10,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -63,7 +64,7 @@ public class Path {
byte[] data = new byte[is.available()]; byte[] data = new byte[is.available()];
is.read(data); is.read(data);
is.close(); is.close();
return new String(data, "UTF-8"); return new String(data, StandardCharsets.UTF_8);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
return ""; return "";

View File

@ -4,18 +4,12 @@ import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.ValueCallback;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.github.catvod.spider.Init; import com.github.catvod.spider.Init;
import java.text.DecimalFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class Util { public class Util {
@ -59,19 +53,9 @@ public class Util {
public static String getSize(double size) { public static String getSize(double size) {
if (size <= 0) return ""; if (size <= 0) return "";
if (size > 1024 * 1024 * 1024 * 1024.0) { String[] units = new String[]{"bytes", "KB", "MB", "GB", "TB"};
size /= (1024 * 1024 * 1024 * 1024.0); int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
return String.format(Locale.getDefault(), "%.2f%s", size, "TB"); return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
} else if (size > 1024 * 1024 * 1024.0) {
size /= (1024 * 1024 * 1024.0);
return String.format(Locale.getDefault(), "%.2f%s", size, "GB");
} else if (size > 1024 * 1024.0) {
size /= (1024 * 1024.0);
return String.format(Locale.getDefault(), "%.2f%s", size, "MB");
} else {
size /= 1024.0;
return String.format(Locale.getDefault(), "%.2f%s", size, "KB");
}
} }
public static String fixUrl(String base, String src) { public static String fixUrl(String base, String src) {
@ -118,46 +102,4 @@ public class Util {
manager.setPrimaryClip(ClipData.newPlainText("fongmi", text)); manager.setPrimaryClip(ClipData.newPlainText("fongmi", text));
Notify.show("已複製 " + text); Notify.show("已複製 " + text);
} }
public static void loadUrl(WebView webView, String script) {
loadUrl(webView, script, null);
}
public static void loadUrl(WebView webView, String script, ValueCallback<String> callback) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(script, callback);
} else {
webView.loadUrl("javascript:" + script);
}
}
public static void addView(View view, ViewGroup.LayoutParams params) {
try {
ViewGroup group = Init.getActivity().getWindow().getDecorView().findViewById(android.R.id.content);
group.addView(view, params);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void removeView(View view) {
try {
ViewGroup group = Init.getActivity().getWindow().getDecorView().findViewById(android.R.id.content);
group.removeView(view);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void loadWebView(String url, WebViewClient client) {
Init.run(() -> {
WebView webView = new WebView(Init.context());
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
addView(webView, new ViewGroup.LayoutParams(0, 0));
webView.setWebViewClient(client);
webView.loadUrl(url);
});
}
} }

Binary file not shown.

View File

@ -1 +1 @@
7d41e83085218476c2cd4fc00da14ad8 278348cbde9d2e7604de1cc53c37712d