Add magnet ad block rule

pull/183/head
FongMi 2 years ago
parent 3b0699ffd6
commit 256f67cc61
  1. 4
      app/src/main/java/com/fongmi/android/tv/player/extractor/Magnet.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  3. 4
      catvod/src/main/java/com/github/catvod/utils/Util.java
  4. 6
      thunder/src/main/java/com/xunlei/downloadlib/Util.java
  5. 4
      thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java

@ -18,6 +18,7 @@ import java.util.concurrent.Future;
public class Magnet implements Callable<List<Vod.Flag.Episode>> {
private final List<String> ads;
private final String url;
private int time;
@ -27,6 +28,7 @@ public class Magnet implements Callable<List<Vod.Flag.Episode>> {
public Magnet(String url) {
this.url = url;
this.ads = Sniffer.getRegex("magnet");
}
private void sleep() {
@ -42,7 +44,7 @@ public class Magnet implements Callable<List<Vod.Flag.Episode>> {
if (!torrent && !taskId.getRealUrl().startsWith("magnet")) return List.of(Vod.Flag.Episode.create(taskId.getFileName(), taskId.getRealUrl()));
if (torrent) Download.create(url, taskId.getSaveFile()).start();
else while (XLTaskHelper.get().getTaskInfo(taskId).getTaskStatus() != 2 && time < 5000) sleep();
List<TorrentFileInfo> medias = XLTaskHelper.get().getTorrentInfo(taskId.getSaveFile()).getMedias();
List<TorrentFileInfo> medias = XLTaskHelper.get().getTorrentInfo(taskId.getSaveFile()).getMedias(ads);
for (TorrentFileInfo media : medias) episodes.add(Vod.Flag.Episode.create(media.getFileName(), media.getPlayUrl()));
XLTaskHelper.get().stopTask(taskId);
return episodes;

@ -58,9 +58,13 @@ public class Sniffer {
return regex;
}
public static List<String> getRegex(String key) {
for (Rule rule : ApiConfig.get().getRules()) for (String host : rule.getHosts()) if (host.equals(key)) return rule.getRegex();
return Collections.emptyList();
}
public static List<String> getRegex(Uri uri) {
if (uri.getHost() == null) return Collections.emptyList();
String hosts = TextUtils.join(",", Arrays.asList(uri.getHost(), uri.getQueryParameter("url")));
String hosts = TextUtils.join(",", Arrays.asList(Util.host(uri), Util.host(uri.getQueryParameter("url"))));
for (Rule rule : ApiConfig.get().getRules()) for (String host : rule.getHosts()) if (hosts.contains(host)) return rule.getRegex();
return Collections.emptyList();
}

@ -45,7 +45,7 @@ public class Util {
}
public static String scheme(String url) {
return scheme(Uri.parse(url));
return url == null ? "" : scheme(Uri.parse(url));
}
public static String scheme(Uri uri) {
@ -54,7 +54,7 @@ public class Util {
}
public static String host(String url) {
return host(Uri.parse(url));
return url == null ? "" : host(Uri.parse(url));
}
public static String host(Uri uri) {

@ -2,6 +2,7 @@ package com.xunlei.downloadlib;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
public class Util {
@ -11,4 +12,9 @@ public class Util {
public static boolean isMedia(String ext) {
return VIDEO.contains(ext) || AUDIO.contains(ext);
}
public static boolean notAd(List<String> ads, String name) {
for (String regex : ads) if (name.contains(regex) || Pattern.compile(regex).matcher(name).find()) return false;
return true;
}
}

@ -27,9 +27,9 @@ public class TorrentInfo {
return mSubFileInfo == null ? new TorrentFileInfo[0] : mSubFileInfo;
}
public List<TorrentFileInfo> getMedias() {
public List<TorrentFileInfo> getMedias(List<String> ads) {
List<TorrentFileInfo> items = new ArrayList<>();
for (TorrentFileInfo item : getSubFileInfo()) if (Util.isMedia(item.getExt())) items.add(item.file(getFile()));
for (TorrentFileInfo item : getSubFileInfo()) if (Util.isMedia(item.getExt()) && Util.notAd(ads, item.getFileName())) items.add(item.file(getFile()));
return items;
}
}

Loading…
Cancel
Save