diff --git a/app/src/main/java/com/github/catvod/spider/MQiTV.java b/app/src/main/java/com/github/catvod/spider/MQiTV.java index 677588f0..4ec65343 100644 --- a/app/src/main/java/com/github/catvod/spider/MQiTV.java +++ b/app/src/main/java/com/github/catvod/spider/MQiTV.java @@ -11,6 +11,7 @@ import com.github.catvod.net.OkHttp; import java.io.ByteArrayInputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -20,7 +21,7 @@ import java.util.regex.Pattern; public class MQiTV extends Spider { - private static List users; + private static Map> users; private static String ext; private static String getHost() { @@ -30,7 +31,7 @@ public class MQiTV extends Spider { @Override public void init(Context context, String extend) throws Exception { - users = new ArrayList<>(); + users = new HashMap<>(); ext = extend; } @@ -63,21 +64,23 @@ public class MQiTV extends Spider { private static void loadUser(List data) { Pattern userPattern = Pattern.compile(".*?([0-9a-zA-Z]{11,}).*", Pattern.CASE_INSENSITIVE); Pattern macPattern = Pattern.compile(".*?(([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}).*", Pattern.CASE_INSENSITIVE); + if (!users.containsKey(getHost())) users.put(getHost(), new ArrayList<>()); for (Data item : data) { for (String userIp : item.getStat().getUserIpList()) { Matcher userMatcher = userPattern.matcher(userIp); Matcher macMatcher = macPattern.matcher(userIp); String user = userMatcher.matches() ? userMatcher.group(1) : ""; String mac = macMatcher.matches() ? macMatcher.group(1) : ""; - if (!user.isEmpty() && !mac.isEmpty()) users.add(new User(user, mac)); + if (!user.isEmpty() && !mac.isEmpty()) users.get(getHost()).add(new User(user, mac)); } } } private static User choose() { - if (users == null) users = new ArrayList<>(); - if (users.isEmpty()) loadUser(Data.objectFrom(OkHttp.string(getHost() + "/api/post?item=itv_traffic")).getData()); - return users.get(ThreadLocalRandom.current().nextInt(users.size())); + if (users == null) users = new HashMap<>(); + if (!users.containsKey(getHost())) users.put(getHost(), new ArrayList<>()); + if (users.get(getHost()).isEmpty()) loadUser(Data.objectFrom(OkHttp.string(getHost() + "/api/post?item=itv_traffic")).getData()); + return users.get(getHost()).get(ThreadLocalRandom.current().nextInt(users.size())); } private static String getToken() { diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index ea8770fa..566a0c5e 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index b7194c7b..5a139054 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -939c753da67fd9fae919313180a01b6d +2389f95e0c10d62ec636ccb2a8b8de4e