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 82fb6cfbf..b744f60f7 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 @@ -52,8 +52,8 @@ public class LiveParser { public static void text(Live live, String text) { int number = 0; if (!live.getGroups().isEmpty()) return; - if (M3U.matcher(text).find()) m3u(live, text); - else if (live.isXtream()) xtream(live); + if (text.isEmpty() && live.isXtream()) xtream(live); + else if (M3U.matcher(text).find()) m3u(live, text); else txt(live, text); for (Group group : live.getGroups()) { for (Channel channel : group.getChannel()) { @@ -146,6 +146,7 @@ public class LiveParser { } private static String getText(Live live) { + if (XtreamParser.isApiUrl(live.getUrl())) return ""; return getText(live.getUrl(), live.getHeaders()).replace("\r\n", "\n"); } 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 53f616594..28ca63482 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 @@ -18,8 +18,20 @@ public class XtreamParser { return new HttpUrl.Builder().scheme(url.scheme()).host(url.host()).port(url.port()); } + public static boolean isVerify(Uri uri) { + return isApiUrl(uri) || isGetUrl(uri); + } + + public static boolean isApiUrl(String url) { + return isApiUrl(Uri.parse(url)); + } + public static boolean isApiUrl(Uri uri) { - return uri.getPath() != null && (uri.getPath().contains("get.php") || uri.getPath().contains("player_api.php")); + return uri.getPath() != null && uri.getPath().contains("player_api.php") && uri.getQueryParameter("username") != null && uri.getQueryParameter("password") != null; + } + + public static boolean isGetUrl(Uri uri) { + return uri.getPath() != null && uri.getPath().contains("get.php") && uri.getQueryParameter("username") != null && uri.getQueryParameter("password") != null; } public static String getEpgUrl(Live live) { 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 00556447b..9c6bc72b8 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 @@ -114,7 +114,7 @@ public class LiveConfig { private void loadConfig(Callback callback) { try { - boolean xtream = XtreamParser.isApiUrl(Uri.parse(config.getUrl())); + boolean xtream = XtreamParser.isApiUrl(config.getUrl()); parseConfig(xtream ? "" : Decoder.getJson(config.getUrl()), callback); } catch (Throwable e) { if (TextUtils.isEmpty(config.getUrl())) App.post(() -> callback.error("")); 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 ff9f98461..44042fad6 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 @@ -333,10 +333,10 @@ public class Live { public Live check() { Uri uri = Uri.parse(getUrl()); - boolean xtream = XtreamParser.isApiUrl(uri); + boolean xtream = XtreamParser.isVerify(uri); if (xtream) setUsername(uri.getQueryParameter("username")); if (xtream) setPassword(uri.getQueryParameter("password")); - if (isXtream() && getEpg().isEmpty()) setEpg(XtreamParser.getEpgUrl(this)); + if (xtream && getEpg().isEmpty()) setEpg(XtreamParser.getEpgUrl(this)); return this; }