Fix xtream detect

pull/586/head
FongMi 1 year ago
parent ce96956fff
commit 4ecae710d5
  1. 1
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/api/XtreamParser.java
  3. 4
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  4. 9
      app/src/main/java/com/fongmi/android/tv/bean/Live.java
  5. 17
      catvod/src/main/java/com/github/catvod/utils/Github.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()));

@ -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();
}

@ -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)));

@ -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;
}

@ -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 "";
}
}
}

Loading…
Cancel
Save