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 c16064c..c268c9e 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 @@ -152,17 +152,12 @@ public class Data { 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; - } - } + public List getQualities() { + if (qualities == null || qualities.isEmpty()) { + return Collections.emptyList(); } - return maxQuality; + Collections.sort(qualities, Collections.reverseOrder()); + return qualities; } } 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 7d1fc03..43fb182 100644 --- a/app/src/main/java/com/github/catvod/spider/Uvod.java +++ b/app/src/main/java/com/github/catvod/spider/Uvod.java @@ -139,12 +139,14 @@ public class Uvod extends Spider { Data data = Data.objectFrom(decryptData); StringBuilder vod_play_url = new StringBuilder(); List videoFragmentList = data.getVideoFragmentList(); + List acceptQuality = new ArrayList<>(); for (int j = 0; j < videoFragmentList.size(); j++) { Data.VideoFragmentList videolist = videoFragmentList.get(j); String name = videolist.getSymbol(); String nid = videolist.getId(); - String quality = String.valueOf(videolist.getMaxQuality()); - nid = ids.get(0) + "|" + nid + "|" + quality; + List Qualities = videolist.getQualities(); + nid = ids.get(0) + "|" + nid + "|" + Qualities; + vod_play_url.append(name).append("$").append(nid); boolean notLastEpisode = j < videoFragmentList.size() - 1; vod_play_url.append(notLastEpisode ? "#" : "$$$"); @@ -183,14 +185,32 @@ public class Uvod extends Spider { String[] item = id.split("\\|"); String tid = item[0]; String nid = item[1]; - 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 + "|" + quality)).getBody(); - String decryptData = decrypt(content); - Data data = Data.objectFrom(decryptData); - Data.Video video = data.getVideo(); - String realUrl = video.getUrl(); - return Result.get().url(realUrl).header(playHeader()).string(); + String[] quality = item[2].replaceAll("[\\[\\]]", "").split(","); + List url = new ArrayList<>(); + for (int i = 0; i < quality.length; i++) { + String qualityValue = quality[i].trim(); + switch (qualityValue) { + case "4": + url.add("1080p"); + break; + case "3": + url.add("720p"); + break; + case "1": + url.add("360p"); + break; + default: + url.add(qualityValue); + break; + } + String param = String.format("{\"video_id\":\"%s\",\"video_fragment_id\":%s,\"quality\":%s,\"seek\":null}", tid, nid, quality[i].trim()); + String encryptData = encrypt(param); + String content = OkHttp.post(play, encryptData, getHeader(play + "|" + tid + "|" + nid + "|" + quality[i].trim())).getBody(); + String decryptData = decrypt(content); + Data data = Data.objectFrom(decryptData); + Data.Video video = data.getVideo(); + url.add(video.getUrl()); + } + return Result.get().url(url).header(playHeader()).string(); } } \ No newline at end of file diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 057efcc..71a9624 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 2ef3eff..eb6cf1b 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -9a95efb77b23f6b64d96d25948fd55fb +f07fdfd86e4a8eb8198f9b2539c015d1