diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index 4b9b8e2c5..640f7875c 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -1,7 +1,9 @@ package com.fongmi.android.tv.api; +import android.net.Uri; import android.os.Handler; import android.os.Looper; +import android.text.TextUtils; import com.fongmi.android.tv.R; import com.fongmi.android.tv.bean.Live; @@ -12,7 +14,6 @@ import com.fongmi.android.tv.net.OKHttp; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Json; import com.fongmi.android.tv.utils.Prefers; -import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.Spider; import com.google.gson.Gson; import com.google.gson.JsonElement; @@ -120,7 +121,7 @@ public class ApiConfig { private String parseExt(String ext) { if (ext.startsWith("http")) return ext; else if (ext.startsWith("file")) return FileUtil.read(ext); - else if (ext.endsWith(".json")) return parseExt(Utils.convert(ext)); + else if (ext.endsWith(".json")) return parseExt(convert(ext)); return ext; } @@ -132,10 +133,18 @@ public class ApiConfig { } else if (spider.startsWith("file")) { loader.load(FileUtil.getLocal(spider)); } else if (!spider.isEmpty()) { - parseJar(Utils.convert(spider)); + parseJar(convert(spider)); } } + private String convert(String text) { + if (TextUtils.isEmpty(text)) return ""; + if (text.startsWith(".")) text = text.substring(1); + if (text.startsWith("/")) text = text.substring(1); + Uri uri = Uri.parse(Prefers.getUrl()); + return uri.toString().replace(uri.getLastPathSegment(), text); + } + public Spider getCSP(Site site) { return loader.getSpider(site.getKey(), site.getApi(), site.getExt()); } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java index 8c0233b88..4fb7121d4 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java @@ -4,11 +4,9 @@ import android.app.Activity; import android.app.PictureInPictureParams; import android.content.Context; import android.content.pm.PackageManager; -import android.net.Uri; import android.net.wifi.WifiManager; import android.os.Build; import android.provider.Settings; -import android.text.TextUtils; import android.text.format.Formatter; import android.util.Rational; import android.view.View; @@ -16,6 +14,11 @@ import android.view.View; import com.fongmi.android.tv.App; import com.google.android.exoplayer2.util.Util; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; import java.util.regex.Pattern; public class Utils { @@ -44,7 +47,27 @@ public class Utils { public static String getIP() { WifiManager manager = (WifiManager) App.get().getApplicationContext().getSystemService(Context.WIFI_SERVICE); - return Formatter.formatIpAddress(manager.getConnectionInfo().getIpAddress()); + int ipAddress = manager.getConnectionInfo().getIpAddress(); + if (ipAddress != 0) return Formatter.formatIpAddress(manager.getConnectionInfo().getIpAddress()); + try { + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + while (interfaces.hasMoreElements()) { + NetworkInterface element = interfaces.nextElement(); + String interfaceName = element.getDisplayName(); + if (interfaceName.equals("eth0") || interfaceName.equals("wlan0")) { + Enumeration addresses = element.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress address = addresses.nextElement(); + if (!address.isLoopbackAddress() && address instanceof Inet4Address) { + return address.getHostAddress(); + } + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } + return "0.0.0.0"; } public static String getUUID() { @@ -61,11 +84,5 @@ public class Utils { return false; } - public static String convert(String text) { - if (TextUtils.isEmpty(text)) return ""; - if (text.startsWith(".")) text = text.substring(1); - if (text.startsWith("/")) text = text.substring(1); - Uri uri = Uri.parse(Prefers.getUrl()); - return uri.toString().replace(uri.getLastPathSegment(), text); - } + }