pull/137/head
FongMi 3 years ago
parent 95410224ec
commit f052a8c4af
  1. 15
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  2. 17
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java

@ -8,7 +8,9 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.fongmi.android.tv.player.extractor.Magnet;
import com.fongmi.android.tv.ui.base.ViewType;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.utils.Trans;
import com.google.gson.Gson;
@ -26,6 +28,7 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
@ -352,6 +355,18 @@ public class Vod {
return strict ? null : getEpisodes().get(0);
}
public List<Magnet> getMagnet() {
Iterator<Episode> iterator = getEpisodes().iterator();
List<Magnet> items = new ArrayList<>();
while (iterator.hasNext()) {
String url = iterator.next().getUrl();
if (!Sniffer.isThunder(url)) continue;
items.add(Magnet.get(url));
iterator.remove();
}
return items;
}
public static List<Flag> create(String flag, String name, String url) {
Flag item = Flag.create(flag);
item.getEpisodes().add(Episode.create(name, url));

@ -16,7 +16,6 @@ import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.exception.ExtractException;
import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.player.extractor.Magnet;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.crawler.Spider;
@ -29,7 +28,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
@ -250,25 +248,12 @@ public class SiteViewModel extends ViewModel {
private void checkThunder(List<Vod.Flag> flags) throws Exception {
for (Vod.Flag flag : flags) {
List<Magnet> items = getMagnet(flag);
ExecutorService executor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2);
for (Future<List<Vod.Flag.Episode>> future : executor.invokeAll(items, 30, TimeUnit.SECONDS)) flag.getEpisodes().addAll(Vod.Flag.Episode.Sorter.sort(future.get()));
for (Future<List<Vod.Flag.Episode>> future : executor.invokeAll(flag.getMagnet(), 30, TimeUnit.SECONDS)) flag.getEpisodes().addAll(Vod.Flag.Episode.Sorter.sort(future.get()));
executor.shutdownNow();
}
}
private List<Magnet> getMagnet(Vod.Flag flag) {
Iterator<Vod.Flag.Episode> iterator = flag.getEpisodes().iterator();
List<Magnet> items = new ArrayList<>();
while (iterator.hasNext()) {
String url = iterator.next().getUrl();
if (!Sniffer.isThunder(url)) continue;
items.add(Magnet.get(url));
iterator.remove();
}
return items;
}
private void post(Site site, Result result) {
if (result.getList().isEmpty()) return;
for (Vod vod : result.getList()) vod.setSite(site);

Loading…
Cancel
Save