From 679fe197debc06fe22776a07e0c52d7f81b82a9c Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 26 Dec 2023 00:28:52 +0800 Subject: [PATCH] Magic --- .../com/fongmi/android/tv/player/ParseJob.java | 4 ++-- .../android/tv/ui/custom/CustomWebView.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java index e36faa1a7..ac70456f1 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java @@ -176,8 +176,8 @@ public class ParseJob implements ParseCallback { startWeb("", "", headers, url); } - private void startWeb(String key, String form, Map headers, String url) { - App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, form, headers, url, this))); + private void startWeb(String key, String from, Map headers, String url) { + App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, this, true))); } private Map getHeader(JsonObject object) { 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 45da19d6a..24c35e9b0 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 @@ -38,6 +38,7 @@ public class CustomWebView extends WebView { private AlertDialog dialog; private Runnable timer; private String from; + private boolean sub; private String key; public static CustomWebView create(@NonNull Context context) { @@ -72,13 +73,14 @@ public class CustomWebView extends WebView { } } - public CustomWebView start(String key, String from, Map headers, String url, ParseCallback callback) { + public CustomWebView start(String key, String from, Map headers, String url, ParseCallback callback, boolean sub) { App.post(timer, Constant.TIMEOUT_PARSE_WEB); this.callback = callback; setUserAgent(headers); loadUrl(url, headers); this.from = from; this.key = key; + this.sub = sub; return this; } @@ -88,10 +90,11 @@ public class CustomWebView extends WebView { public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { String url = request.getUrl().toString(); String host = request.getUrl().getHost(); - if (TextUtils.isEmpty(host) || ApiConfig.get().getAds().contains(host)) return empty; - if (url.contains("challenges.cloudflare.com/cdn-cgi/")) App.post(() -> showDialog()); Map headers = request.getRequestHeaders(); - if (isVideoFormat(headers, url)) interrupt(headers, url); + if (TextUtils.isEmpty(host) || ApiConfig.get().getAds().contains(host)) return empty; + if (url.contains("challenges.cloudflare.com/cdn-cgi")) App.post(() -> showDialog()); + if (sub && url.contains("player/?url=")) onParseAdd(headers, url); + else if (isVideoFormat(headers, url)) interrupt(headers, url); return super.shouldInterceptRequest(view, request); } @@ -152,6 +155,10 @@ public class CustomWebView extends WebView { onParseSuccess(headers, url); } + private void onParseAdd(Map headers, String url) { + App.post(() -> CustomWebView.create(App.get()).start(key, from, headers, url, callback, false)); + } + private void onParseSuccess(Map headers, String url) { if (callback != null) callback.onParseSuccess(headers, url, from); App.post(() -> stop(false));