diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index 9ca4db996..dbc63bc51 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.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 getMagnet() { + Iterator iterator = getEpisodes().iterator(); + List 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 create(String flag, String name, String url) { Flag item = Flag.create(flag); item.getEpisodes().add(Episode.create(name, url)); diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index fa4ac63d8..87ade8779 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -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 flags) throws Exception { for (Vod.Flag flag : flags) { - List items = getMagnet(flag); ExecutorService executor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2); - for (Future> future : executor.invokeAll(items, 30, TimeUnit.SECONDS)) flag.getEpisodes().addAll(Vod.Flag.Episode.Sorter.sort(future.get())); + for (Future> future : executor.invokeAll(flag.getMagnet(), 30, TimeUnit.SECONDS)) flag.getEpisodes().addAll(Vod.Flag.Episode.Sorter.sort(future.get())); executor.shutdownNow(); } } - private List getMagnet(Vod.Flag flag) { - Iterator iterator = flag.getEpisodes().iterator(); - List 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);