diff --git a/app/src/main/java/com/github/catvod/api/AliYun.java b/app/src/main/java/com/github/catvod/api/AliYun.java index d963c143..e0497f55 100644 --- a/app/src/main/java/com/github/catvod/api/AliYun.java +++ b/app/src/main/java/com/github/catvod/api/AliYun.java @@ -456,7 +456,7 @@ public class AliYun { } private String proxyVideoUrl(String cate, String shareId, String fileId) { - return ProxyVideo.url(String.format(Proxy.getUrl() + "?do=ali&type=video&cate=%s&shareId=%s&fileId=%s", cate, shareId, fileId), 20); + return String.format(Proxy.getUrl() + "?do=ali&type=video&cate=%s&shareId=%s&fileId=%s", cate, shareId, fileId); } private String proxyVideoUrl(String cate, String shareId, String fileId, String templateId) { @@ -480,7 +480,6 @@ public class AliYun { public Object[] proxyVideo(Map params) throws Exception { if (dialog != null && dialog.isShowing()) return null; String templateId = params.get("templateId"); - String response = params.get("response"); String shareId = params.get("shareId"); String mediaId = params.get("mediaId"); String fileId = params.get("fileId"); @@ -488,7 +487,7 @@ public class AliYun { String downloadUrl = ""; if ("preview".equals(cate)) { - return previewProxy(shareId, fileId, templateId); + return new Object[]{200, "application/vnd.apple.mpegurl", new ByteArrayInputStream(getM3u8(shareId, fileId, templateId).getBytes())}; } if ("open".equals(cate)) { @@ -506,24 +505,14 @@ public class AliYun { downloadUrl = mediaUrl; } - if ("url".equals(response)) return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream(downloadUrl.getBytes("UTF-8"))}; Map headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - for (String key : params.keySet()) headers.put(key, params.get(key)); - headers.remove("do"); - headers.remove("host"); - headers.remove("type"); - headers.remove("cate"); - headers.remove("fileId"); - headers.remove("shareId"); - headers.remove("mediaId"); - headers.remove("templateId"); - headers.remove("remote-addr"); - headers.remove("http-client-ip"); - return new Object[]{ProxyVideo.proxy(downloadUrl, headers)}; - } + for (String key : params.keySet()) { + if (key.equals("referer") || key.equals("icy-metadata") || key.equals("range") || key.equals("connection") || key.equals("accept-encoding") || key.equals("user-agent")) { + headers.put(key, params.get(key)); + } + } - private Object[] previewProxy(String shareId, String fileId, String templateId) { - return new Object[]{200, "application/vnd.apple.mpegurl", new ByteArrayInputStream(getM3u8(shareId, fileId, templateId).getBytes())}; + return new Object[]{ProxyVideo.proxy(downloadUrl, headers)}; } private String getM3u8Url(String shareId, String fileId, String templateId) { diff --git a/app/src/main/java/com/github/catvod/utils/ProxyVideo.java b/app/src/main/java/com/github/catvod/utils/ProxyVideo.java index 468abfef..dcdcba0d 100644 --- a/app/src/main/java/com/github/catvod/utils/ProxyVideo.java +++ b/app/src/main/java/com/github/catvod/utils/ProxyVideo.java @@ -44,15 +44,13 @@ public class ProxyVideo { } public static NanoHTTPD.Response proxy(String url, Map headers) throws Exception { - Status status = headers.containsKey("Range") ? Status.PARTIAL_CONTENT : Status.OK; - if (!headers.containsKey("Range")) headers.put("Range", "bytes=0-"); Response response = OkHttp.newCall(url, headers); String contentType = response.headers().get("Content-Type"); String hContentLength = response.headers().get("Content-Length"); String contentDisposition = response.headers().get("Content-Disposition"); long contentLength = hContentLength != null ? Long.parseLong(hContentLength) : 0; if (contentDisposition != null) contentType = getMimeType(contentDisposition); - NanoHTTPD.Response resp = newFixedLengthResponse(status, contentType, response.body().byteStream(), contentLength); + NanoHTTPD.Response resp = newFixedLengthResponse(Status.PARTIAL_CONTENT, contentType, response.body().byteStream(), contentLength); for (String key : response.headers().names()) resp.addHeader(key, response.headers().get(key)); return resp; } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index eab91be7..1970f091 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 a4916d49..eb955720 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -4795d43e5d59d58d6d4a92361f73974e +60be8553ec8072f56c9f73452fd83d71