From 4ecae710d5a749b212e8cd3853e702fa2b748382 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 7 Dec 2024 16:54:59 +0800 Subject: [PATCH] Fix xtream detect --- .../com/fongmi/android/tv/api/LiveParser.java | 1 + .../com/fongmi/android/tv/api/XtreamParser.java | 6 ++++++ .../android/tv/api/config/LiveConfig.java | 4 +++- .../java/com/fongmi/android/tv/bean/Live.java | 9 +++------ .../java/com/github/catvod/utils/Github.java | 17 ----------------- 5 files changed, 13 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index f71ae2b4e..82fb6cfbf 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -117,6 +117,7 @@ public class LiveParser { categoryMap.put(category.getCategoryId(), category.getCategoryName()); } for (XStream stream : streamList) { + if (!categoryMap.containsKey(stream.getCategoryId())) continue; Group group = live.find(Group.create(categoryMap.get(stream.getCategoryId()), live.isPass())); Channel channel = group.find(Channel.create(stream.getName())); channel.getUrls().add(XtreamParser.getTsUrl(live, stream.getStreamId())); diff --git a/app/src/main/java/com/fongmi/android/tv/api/XtreamParser.java b/app/src/main/java/com/fongmi/android/tv/api/XtreamParser.java index dd0c17dd5..53f616594 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/XtreamParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/XtreamParser.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv.api; +import android.net.Uri; + import com.fongmi.android.tv.bean.Live; import com.fongmi.android.tv.bean.XCategory; import com.fongmi.android.tv.bean.XStream; @@ -16,6 +18,10 @@ public class XtreamParser { return new HttpUrl.Builder().scheme(url.scheme()).host(url.host()).port(url.port()); } + public static boolean isApiUrl(Uri uri) { + return uri.getPath() != null && (uri.getPath().contains("get.php") || uri.getPath().contains("player_api.php")); + } + public static String getEpgUrl(Live live) { return getBuilder(live).addPathSegment("xmltv.php").addQueryParameter("username", live.getUsername()).addQueryParameter("password", live.getPassword()).build().toString(); } 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 d38784aeb..00556447b 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 @@ -8,6 +8,7 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.Decoder; import com.fongmi.android.tv.api.LiveParser; +import com.fongmi.android.tv.api.XtreamParser; import com.fongmi.android.tv.api.loader.BaseLoader; import com.fongmi.android.tv.bean.Channel; import com.fongmi.android.tv.bean.Config; @@ -113,7 +114,8 @@ public class LiveConfig { private void loadConfig(Callback callback) { try { - parseConfig(Decoder.getJson(config.getUrl()), callback); + boolean xtream = XtreamParser.isApiUrl(Uri.parse(config.getUrl())); + parseConfig(xtream ? "" : Decoder.getJson(config.getUrl()), callback); } catch (Throwable e) { if (TextUtils.isEmpty(config.getUrl())) App.post(() -> callback.error("")); else App.post(() -> callback.error(Notify.getError(R.string.error_config_get, e))); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index 9bb628440..ff9f98461 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -15,7 +15,6 @@ import com.fongmi.android.tv.api.XtreamParser; import com.fongmi.android.tv.api.loader.BaseLoader; import com.fongmi.android.tv.db.AppDatabase; import com.fongmi.android.tv.gson.ExtAdapter; -import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.crawler.Spider; import com.github.catvod.utils.Json; import com.google.common.net.HttpHeaders; @@ -334,11 +333,9 @@ public class Live { public Live check() { Uri uri = Uri.parse(getUrl()); - boolean php = UrlUtil.path(uri).contains("get.php"); - String username = uri.getQueryParameter("username"); - String password = uri.getQueryParameter("password"); - if (php && username != null) setUsername(username); - if (php && password != null) setPassword(password); + boolean xtream = XtreamParser.isApiUrl(uri); + if (xtream) setUsername(uri.getQueryParameter("username")); + if (xtream) setPassword(uri.getQueryParameter("password")); if (isXtream() && getEpg().isEmpty()) setEpg(XtreamParser.getEpgUrl(this)); return this; } diff --git a/catvod/src/main/java/com/github/catvod/utils/Github.java b/catvod/src/main/java/com/github/catvod/utils/Github.java index e47b3d222..bbba9279b 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Github.java +++ b/catvod/src/main/java/com/github/catvod/utils/Github.java @@ -1,11 +1,5 @@ package com.github.catvod.utils; -import android.net.Uri; - -import com.github.catvod.net.OkHttp; - -import java.io.File; - public class Github { public static final String URL = "https://raw.githubusercontent.com/FongMi/Release/fongmi"; @@ -21,15 +15,4 @@ public class Github { public static String getApk(boolean dev, String name) { return getUrl("apk/" + (dev ? "dev" : "release"), name + ".apk"); } - - public static String getSo(String url) { - try { - File file = new File(Path.so(), Uri.parse(url).getLastPathSegment()); - if (file.length() < 300) Path.write(file, OkHttp.newCall(url).execute().body().bytes()); - return file.getAbsolutePath(); - } catch (Exception e) { - e.printStackTrace(); - return ""; - } - } }