diff --git a/app/src/main/java/com/github/catvod/bean/uvod/Data.java b/app/src/main/java/com/github/catvod/bean/uvod/Data.java index df3297d1..c16064c7 100644 --- a/app/src/main/java/com/github/catvod/bean/uvod/Data.java +++ b/app/src/main/java/com/github/catvod/bean/uvod/Data.java @@ -8,6 +8,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.annotations.SerializedName; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -140,6 +141,8 @@ public class Data { private String id; @SerializedName("symbol") private String symbol; + @SerializedName("qualities") + private List qualities; public String getId() { return TextUtils.isEmpty(id) ? "" : id; @@ -148,5 +151,19 @@ public class Data { public String getSymbol() { return TextUtils.isEmpty(symbol) ? "" : symbol; } + + public int getMaxQuality() { + List fixedArray = Arrays.asList(4, 3, 2, 1); + int maxQuality = -1; + for (int quality : qualities) { + if (fixedArray.contains(quality)) { + if (quality > maxQuality) { + maxQuality = quality; + } + } + } + return maxQuality; + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/github/catvod/spider/Uvod.java b/app/src/main/java/com/github/catvod/spider/Uvod.java index 02e7a987..7d1fc030 100644 --- a/app/src/main/java/com/github/catvod/spider/Uvod.java +++ b/app/src/main/java/com/github/catvod/spider/Uvod.java @@ -37,6 +37,7 @@ public class Uvod extends Spider { String URL = item[0]; String tid = item.length > 1 ? item[1] : ""; String pg = item.length > 2 ? item[2] : ""; + String quality = item.length > 3 ? item[3] : ""; String hm = String.valueOf(System.currentTimeMillis()); String text = ""; if (URL.equals(latest)) { @@ -50,7 +51,7 @@ public class Uvod extends Spider { } else if (URL.equals(detail)) { text = String.format("-id=%s-%s", tid, hm); } else if (URL.equals(play)) { - text = String.format("-quality=4&video_fragment_id=%s&video_id=%s-%s", pg, tid, hm); + text = String.format("-quality=%s&video_fragment_id=%s&video_id=%s-%s", quality, pg, tid, hm); } String sign = Util.MD5(text); Map header = new HashMap<>(); @@ -142,7 +143,8 @@ public class Uvod extends Spider { Data.VideoFragmentList videolist = videoFragmentList.get(j); String name = videolist.getSymbol(); String nid = videolist.getId(); - nid = ids.get(0) + "|" + nid; + String quality = String.valueOf(videolist.getMaxQuality()); + nid = ids.get(0) + "|" + nid + "|" + quality; vod_play_url.append(name).append("$").append(nid); boolean notLastEpisode = j < videoFragmentList.size() - 1; vod_play_url.append(notLastEpisode ? "#" : "$$$"); @@ -181,9 +183,10 @@ public class Uvod extends Spider { String[] item = id.split("\\|"); String tid = item[0]; String nid = item[1]; - String param = String.format("{\"video_id\":\"%s\",\"video_fragment_id\":%s,\"quality\":4,\"seek\":null}", tid, nid); + String quality = item[2]; + String param = String.format("{\"video_id\":\"%s\",\"video_fragment_id\":%s,\"quality\":%s,\"seek\":null}", tid, nid, quality); String encryptData = encrypt(param); - String content = OkHttp.post(play, encryptData, getHeader(play + "|" + tid + "|" + nid)).getBody(); + String content = OkHttp.post(play, encryptData, getHeader(play + "|" + tid + "|" + nid + "|" + quality)).getBody(); String decryptData = decrypt(content); Data data = Data.objectFrom(decryptData); Data.Video video = data.getVideo(); diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 0b2a6f72..057efcc5 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 43e2f944..2ef3effd 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -326f3af6d449e9cf1ad021d925b58887 +9a95efb77b23f6b64d96d25948fd55fb