Optimize ads check

pull/496/head
FongMi 2 years ago
parent 843084e25e
commit 0fd4d67840
  1. 12
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  2. 9
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java

@ -41,6 +41,7 @@ public class VodConfig {
private List<Site> sites;
private List<Parse> parses;
private List<String> flags;
private List<String> ads;
private JarLoader jarLoader;
private PyLoader pyLoader;
private JsLoader jsLoader;
@ -48,7 +49,6 @@ public class VodConfig {
private Config config;
private Parse parse;
private String wall;
private String ads;
private Site home;
private static class Loader {
@ -84,11 +84,11 @@ public class VodConfig {
}
public VodConfig init() {
this.ads = null;
this.wall = null;
this.home = null;
this.parse = null;
this.config = Config.vod();
this.ads = new ArrayList<>();
this.doh = new ArrayList<>();
this.rules = new ArrayList<>();
this.sites = new ArrayList<>();
@ -107,10 +107,10 @@ public class VodConfig {
}
public VodConfig clear() {
this.ads = null;
this.wall = null;
this.home = null;
this.parse = null;
this.ads.clear();
this.doh.clear();
this.rules.clear();
this.sites.clear();
@ -326,12 +326,12 @@ public class VodConfig {
this.flags.addAll(flags);
}
public String getAds() {
return TextUtils.isEmpty(ads) ? "" : ads;
public List<String> getAds() {
return ads == null ? Collections.emptyList() : ads;
}
private void setAds(List<String> ads) {
this.ads = TextUtils.join(",", ads);
this.ads = ads;
}
public Config getConfig() {

@ -33,6 +33,7 @@ import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
public class CustomWebView extends WebView implements DialogInterface.OnDismissListener {
@ -106,8 +107,8 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
String host = request.getUrl().getHost();
if (TextUtils.isEmpty(host) || isAd(host)) return empty;
Map<String, String> headers = request.getRequestHeaders();
if (TextUtils.isEmpty(host) || VodConfig.get().getAds().contains(host)) return empty;
if (url.contains("challenges.cloudflare.com/turnstile")) App.post(() -> showDialog());
if (detect && url.contains("player/?url=")) onParseAdd(headers, url);
else if (isVideoFormat(url)) onParseSuccess(headers, url);
@ -167,6 +168,12 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
}
}
private boolean isAd(String host) {
for (String ad : VodConfig.get().getAds()) if (host.contains(ad)) return true;
for (String ad : VodConfig.get().getAds()) if (Pattern.compile(ad).matcher(host).find()) return true;
return false;
}
private boolean isVideoFormat(String url) {
try {
Logger.t(TAG).d(url);

Loading…
Cancel
Save