diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index 9dfdf1972..dbd5e4021 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -65,8 +65,7 @@ public class History { } public static List arrayFrom(String str) { - Type listType = new TypeToken>() { - }.getType(); + Type listType = new TypeToken>() {}.getType(); List items = new Gson().fromJson(str, listType); return items == null ? Collections.emptyList() : items; } diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 356248ae4..4a2afec31 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -163,7 +163,7 @@ public class ExoUtil { private static synchronized DataSource.Factory getDataSourceFactory(Map headers) { if (dataSourceFactory == null) dataSourceFactory = buildReadOnlyCacheDataSource(new DefaultDataSource.Factory(App.get(), getHttpDataSourceFactory()), getCache()); - httpDataSourceFactory.setDefaultRequestProperties(Utils.checkHeaders(headers)); + httpDataSourceFactory.setDefaultRequestProperties(Utils.checkUa(headers)); return dataSourceFactory; } diff --git a/app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java b/app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java index ef73f42b1..aa7fdf299 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java @@ -21,6 +21,6 @@ public class IjkUtil { public static MediaSource getSource(Map headers, String url) { Uri uri = Uri.parse(url.trim().replace("\\", "")); if (Sniffer.isAds(uri)) uri = Uri.parse(Server.get().getAddress().concat("/m3u8?url=").concat(URLEncoder.encode(url))); - return new MediaSource(Utils.checkHeaders(headers), uri); + return new MediaSource(Utils.checkUa(headers), uri); } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index d9da393eb..9c45e2d33 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -24,16 +24,12 @@ import com.fongmi.android.tv.utils.Sniffer; import com.github.catvod.crawler.Spider; import java.io.ByteArrayInputStream; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; import java.util.Map; public class CustomWebView extends WebView { private WebResourceResponse empty; private ParseCallback callback; - private List keys; private Runnable timer; private String from; private String key; @@ -50,7 +46,6 @@ public class CustomWebView extends WebView { @SuppressLint("SetJavaScriptEnabled") public void initSettings() { this.timer = () -> stop(true); - this.keys = Arrays.asList("user-agent", "referer", "origin"); this.empty = new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())); getSettings().setUseWideViewPort(true); getSettings().setDatabaseEnabled(true); @@ -120,11 +115,9 @@ public class CustomWebView extends WebView { } private void post(Map headers, String url) { - Map news = new HashMap<>(); String cookie = CookieManager.getInstance().getCookie(url); - if (!TextUtils.isEmpty(cookie)) news.put("cookie", cookie); - for (String key : headers.keySet()) if (keys.contains(key.toLowerCase())) news.put(key, headers.get(key)); - onParseSuccess(news, url); + if (cookie != null) headers.put("cookie", cookie); + onParseSuccess(headers, url); } public void stop(boolean error) { diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java index c5efd2de1..f0ee1e164 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java @@ -23,6 +23,7 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.github.catvod.utils.Json; import com.github.catvod.utils.Util; +import com.google.common.net.HttpHeaders; import com.google.gson.JsonParser; import java.io.ByteArrayOutputStream; @@ -69,15 +70,22 @@ public class ImgUtil { if (url.startsWith("data:")) return url; LazyHeaders.Builder builder = new LazyHeaders.Builder(); if (url.contains("@Headers=")) addHeader(builder, param = url.split("@Headers=")[1].split("@")[0]); - if (url.contains("@Cookie=")) builder.addHeader("Cookie", param = url.split("@Cookie=")[1].split("@")[0]); - if (url.contains("@Referer=")) builder.addHeader("Referer", param = url.split("@Referer=")[1].split("@")[0]); - if (url.contains("@User-Agent=")) builder.addHeader("User-Agent", param = url.split("@User-Agent=")[1].split("@")[0]); + if (url.contains("@Cookie=")) builder.addHeader(HttpHeaders.COOKIE, param = url.split("@Cookie=")[1].split("@")[0]); + if (url.contains("@Referer=")) builder.addHeader(HttpHeaders.REFERER, param = url.split("@Referer=")[1].split("@")[0]); + if (url.contains("@User-Agent=")) builder.addHeader(HttpHeaders.USER_AGENT, param = url.split("@User-Agent=")[1].split("@")[0]); return new GlideUrl(param == null ? url : url.split("@")[0], builder.build()); } private static void addHeader(LazyHeaders.Builder builder, String header) { Map map = Json.toMap(JsonParser.parseString(header)); - for (Map.Entry entry : map.entrySet()) builder.addHeader(entry.getKey(), entry.getValue()); + for (Map.Entry entry : map.entrySet()) builder.addHeader(replace(entry.getKey()), entry.getValue()); + } + + private static String replace(String key) { + if (key.equals("user-agent")) return HttpHeaders.USER_AGENT; + if (key.equals("referer")) return HttpHeaders.REFERER; + if (key.equals("cookie")) return HttpHeaders.COOKIE; + return key; } public static byte[] resize(byte[] bytes) { 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 329d00a59..fc6722534 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 @@ -95,7 +95,7 @@ public class Utils { return ((ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE)).getText(); } - public static Map checkHeaders(Map headers) { + public static Map checkUa(Map headers) { if (Setting.getUa().isEmpty() || headers.containsKey(HttpHeaders.USER_AGENT) || headers.containsKey(HttpHeaders.USER_AGENT.toLowerCase())) return headers; headers.put(HttpHeaders.USER_AGENT, Setting.getUa()); return headers;