From ce4c4b7ae3d86e5cfdfa072c394c43fd45ee8a1b Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 20 Mar 2026 00:34:26 +0800 Subject: [PATCH] Add fetchArray for headers, proxy, rules and doh --- .../android/tv/api/config/BaseConfig.java | 21 +++++++++++++++++++ .../android/tv/api/config/LiveConfig.java | 6 +++--- .../android/tv/api/config/VodConfig.java | 8 +++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java index 7e6e8816e..f165b0bc9 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java @@ -9,9 +9,14 @@ import com.fongmi.android.tv.event.ConfigEvent; import com.fongmi.android.tv.impl.Callback; import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.utils.Notify; +import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.bean.Header; import com.github.catvod.bean.Proxy; import com.github.catvod.net.OkHttp; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import java.io.InterruptedIOException; import java.util.List; @@ -94,4 +99,20 @@ abstract class BaseConfig { if (e instanceof InterruptedIOException) return true; return e.getCause() instanceof InterruptedIOException; } + + protected JsonArray fetchArray(JsonObject object, String key) { + if (!object.has(key)) return new JsonArray(); + JsonElement element = object.get(key); + if (element.isJsonArray()) return element.getAsJsonArray(); + if (!element.isJsonPrimitive()) return new JsonArray(); + try { + String value = element.getAsString().trim(); + String json = OkHttp.string(UrlUtil.convert(value)); + if (TextUtils.isEmpty(json)) return new JsonArray(); + JsonElement parsed = JsonParser.parseString(json); + return parsed.isJsonArray() ? parsed.getAsJsonArray() : new JsonArray(); + } catch (Exception e) { + return new JsonArray(); + } + } } diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java index ba02f2b82..a074f0057 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java @@ -158,9 +158,9 @@ public class LiveConfig extends BaseConfig { } private void initList(JsonObject object) { - setHeaders(Header.arrayFrom(object.getAsJsonArray("headers"))); - setProxy(Proxy.arrayFrom(object.getAsJsonArray("proxy"))); - setRules(Rule.arrayFrom(object.getAsJsonArray("rules"))); + setHeaders(Header.arrayFrom(fetchArray(object, "headers"))); + setProxy(Proxy.arrayFrom(fetchArray(object, "proxy"))); + setRules(Rule.arrayFrom(fetchArray(object, "rules"))); setHosts(Json.safeListString(object, "hosts")); setAds(Json.safeListString(object, "ads")); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java index 211b0dc10..fab5f1002 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java @@ -144,10 +144,10 @@ public class VodConfig extends BaseConfig { } private void initList(JsonObject object) { - setHeaders(Header.arrayFrom(object.getAsJsonArray("headers"))); - setProxy(Proxy.arrayFrom(object.getAsJsonArray("proxy"))); - setRules(Rule.arrayFrom(object.getAsJsonArray("rules"))); - setDoh(Doh.arrayFrom(object.getAsJsonArray("doh"))); + setHeaders(Header.arrayFrom(fetchArray(object, "headers"))); + setProxy(Proxy.arrayFrom(fetchArray(object, "proxy"))); + setRules(Rule.arrayFrom(fetchArray(object, "rules"))); + setDoh(Doh.arrayFrom(fetchArray(object, "doh"))); setFlags(Json.safeListString(object, "flags")); setHosts(Json.safeListString(object, "hosts")); setAds(Json.safeListString(object, "ads"));