diff --git a/app/src/main/java/com/github/catvod/bean/mqitv/Config.java b/app/src/main/java/com/github/catvod/bean/mqitv/Config.java index 3debe69..e2e3aea 100644 --- a/app/src/main/java/com/github/catvod/bean/mqitv/Config.java +++ b/app/src/main/java/com/github/catvod/bean/mqitv/Config.java @@ -61,7 +61,7 @@ public class Config { } public String getPlayUrl(String port, String playing) { - return "http://" + getUri().getHost() + ":" + port + "/" + playing; + return "http://" + getUri().getHost() + ":" + port + "/" + playing.replace(":/", ""); } public void loadUser() { @@ -97,7 +97,7 @@ public class Config { public String getM3U8(String id, String token, String port) { String base = "http://" + getUri().getHost() + ":" + port + "/"; String m3u8 = OkHttp.string(base + id + ".m3u8?token=" + token); - if (m3u8.contains("\"Reason\"")) return ""; + if (m3u8.isEmpty() || m3u8.contains("\"Reason\"")) return ""; String[] lines = m3u8.split("\\r?\\n"); StringBuilder sb = new StringBuilder(); for (String line : lines) { diff --git a/app/src/main/java/com/github/catvod/spider/MQiTV.java b/app/src/main/java/com/github/catvod/spider/MQiTV.java index 7550780..fcbbe4a 100644 --- a/app/src/main/java/com/github/catvod/spider/MQiTV.java +++ b/app/src/main/java/com/github/catvod/spider/MQiTV.java @@ -51,29 +51,38 @@ public class MQiTV extends Spider { public static Object[] proxy(Map params) { String ip = params.get("ip"); String port = params.get("port"); + String playing = params.get("playing"); if (port == null) port = "5003"; Config config = getConfig(ip); String token = config.getUser().getToken(); if (token.isEmpty()) { - Map header = new HashMap<>(); - String playing = params.get("playing"); - header.put("Location", config.getPlayUrl(port, playing)); - Object[] result = new Object[4]; - result[0] = 302; - result[1] = "text/plain"; - result[2] = new ByteArrayInputStream("302 Found".getBytes()); - result[3] = header; - return result; + return get302(config.getPlayUrl(port, playing)); } else { String id = params.get("id"); String auth = config.getAuth(id, token); if (!"OK".equals(auth)) config.clear(); if (!"OK".equals(auth)) return proxy(params); - Object[] result = new Object[3]; - result[0] = 200; - result[1] = "application/vnd.apple.mpegurl"; - result[2] = new ByteArrayInputStream(config.getM3U8(id, token, port).getBytes()); - return result; + String m3u8 = config.getM3U8(id, token, port); + return m3u8.isEmpty() ? get302(config.getPlayUrl(port, playing)) : get200(m3u8); } } + + private static Object[] get302(String location) { + Map header = new HashMap<>(); + header.put("Location", location); + Object[] result = new Object[4]; + result[0] = 302; + result[1] = "text/plain"; + result[2] = new ByteArrayInputStream("302 Found".getBytes()); + result[3] = header; + return result; + } + + private static Object[] get200(String m3u8) { + Object[] result = new Object[3]; + result[0] = 200; + result[1] = "application/vnd.apple.mpegurl"; + result[2] = new ByteArrayInputStream(m3u8.getBytes()); + return result; + } } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index d73bc71..d304fce 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index b3749a5..3b48564 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -ff11d5120db402fd29fb05331915079d +bb676e5879183620dcc84bce471629cb