pull/137/head
FongMi 3 years ago
parent f8386ad375
commit 95410224ec
  1. 17
      app/src/main/java/com/fongmi/android/tv/bean/Core.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  3. 22
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/player/extractor/Force.java
  5. 9
      app/src/main/java/com/fongmi/android/tv/player/extractor/Magnet.java

@ -1,5 +1,7 @@
package com.fongmi.android.tv.bean;
import android.content.pm.PackageInfo;
import android.content.pm.Signature;
import android.text.TextUtils;
import androidx.annotation.Nullable;
@ -20,6 +22,8 @@ public class Core extends PackageManager {
private String broker;
@SerializedName("resp")
private String resp;
@SerializedName("sign")
private String sign;
@SerializedName("pkg")
private String pkg;
@SerializedName("so")
@ -45,6 +49,10 @@ public class Core extends PackageManager {
return TextUtils.isEmpty(resp) ? "" : resp;
}
public String getSign() {
return TextUtils.isEmpty(sign) ? "" : sign;
}
public String getPkg() {
return TextUtils.isEmpty(pkg) ? "" : pkg;
}
@ -54,7 +62,14 @@ public class Core extends PackageManager {
}
public boolean hook() {
return false;
return getPkg().length() > 0 && getSign().length() > 0;
}
@Override
public PackageInfo getPackageInfo(String packageName, int flags) {
PackageInfo info = super.getPackageInfo(packageName, flags);
info.signatures = new Signature[]{new Signature(getSign())};
return info;
}
@Override

@ -330,11 +330,6 @@ public class Vod {
}
}
public void createEpisode(List<Episode> items) {
getEpisodes().clear();
getEpisodes().addAll(items);
}
public void toggle(boolean activated, Episode episode) {
if (activated) setActivated(episode);
else for (Episode item : getEpisodes()) item.deactivated();

@ -19,16 +19,17 @@ 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.utils.Trans;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Trans;
import com.github.catvod.utils.Util;
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;
@ -249,16 +250,25 @@ public class SiteViewModel extends ViewModel {
private void checkThunder(List<Vod.Flag> flags) throws Exception {
for (Vod.Flag flag : flags) {
List<Magnet> magnets = new ArrayList<>();
List<Vod.Flag.Episode> items = new ArrayList<>();
for (Vod.Flag.Episode episode : flag.getEpisodes()) if (Sniffer.isThunder(episode.getUrl())) magnets.add(Magnet.get(episode.getUrl()));
List<Magnet> items = getMagnet(flag);
ExecutorService executor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2);
for (Future<List<Vod.Flag.Episode>> future : executor.invokeAll(magnets, 30, TimeUnit.SECONDS)) Magnet.addAll(items, future);
if (items.size() > 0) flag.createEpisode(items);
for (Future<List<Vod.Flag.Episode>> future : executor.invokeAll(items, 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);

@ -23,7 +23,7 @@ public class Force implements Source.Extractor {
@Override
public boolean match(String scheme, String host) {
return scheme.startsWith("p") || scheme.equals("mitv");
return !scheme.equals("push") && scheme.startsWith("p") || scheme.equals("mitv");
}
private void init(String scheme) {

@ -14,7 +14,6 @@ import com.xunlei.downloadlib.parameter.TorrentFileInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
public class Magnet implements Callable<List<Vod.Flag.Episode>> {
@ -49,12 +48,4 @@ public class Magnet implements Callable<List<Vod.Flag.Episode>> {
XLTaskHelper.get().stopTask(taskId);
return episodes;
}
public static void addAll(List<Vod.Flag.Episode> items, Future<List<Vod.Flag.Episode>> future) {
try {
items.addAll(Vod.Flag.Episode.Sorter.sort(future.get()));
} catch (Exception e) {
e.printStackTrace();
}
}
}

Loading…
Cancel
Save