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 c268c9e0..bd94323f 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,18 +8,18 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.annotations.SerializedName; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Data { + @SerializedName("video_fragment_list") + private List videoFragmentList; @SerializedName(value = "video_latest_list", alternate = {"video_list"}) private List videolatestlist; @SerializedName(value = "video", alternate = {"video_soruce"}) private Video video; - @SerializedName("video_fragment_list") - private List videoFragmentList; public static Data objectFrom(String str) { JsonObject jsonObject = JsonParser.parseString(str).getAsJsonObject(); @@ -27,6 +27,10 @@ public class Data { return new Data(); } + public List getVideoFragmentList() { + return videoFragmentList == null ? Collections.emptyList() : videoFragmentList; + } + public List getVideoLatest() { return videolatestlist == null ? Collections.emptyList() : videolatestlist; } @@ -35,8 +39,10 @@ public class Data { return video == null ? new Video() : video; } - public List getVideoFragmentList() { - return videoFragmentList == null ? Collections.emptyList() : videoFragmentList; + public List getList() { + List list = new ArrayList<>(); + for (Data.VideoLatest video : getVideoLatest()) list.add(video.vod()); + return list; } public static class VideoLatest { @@ -153,9 +159,7 @@ public class Data { } public List getQualities() { - if (qualities == null || qualities.isEmpty()) { - return Collections.emptyList(); - } + if (qualities == null || qualities.isEmpty()) return Collections.emptyList(); 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 43fb1821..5ff69441 100644 --- a/app/src/main/java/com/github/catvod/spider/Uvod.java +++ b/app/src/main/java/com/github/catvod/spider/Uvod.java @@ -79,19 +79,17 @@ public class Uvod extends Spider { if (!extend.isEmpty()) siteUrl = extend; } - public String encrypt(String data) throws Exception { + private String encrypt(String data) throws Exception { String aesKey = Crypto.randomKey(32); String aesEncryptedData = Crypto.aesEncrypt(data, aesKey, "abcdefghijklmnop"); String rsaEncryptedKey = Crypto.rsaEncrypt(aesKey, publicKeyPem); return aesEncryptedData + "." + rsaEncryptedKey; } - public String decrypt(String encryptedData) throws Exception { + private String decrypt(String encryptedData) throws Exception { encryptedData = encryptedData.replaceAll("\\s", ""); String[] parts = encryptedData.split("\\."); - if (parts.length != 2) { - return null; - } + if (parts.length != 2) return null; String rsaEncryptedKey = parts[1]; String decryptedKey = Crypto.rsaDecrypt(rsaEncryptedKey, privateKeyPem); String aesEncryptedData = parts[0]; @@ -108,12 +106,8 @@ public class Uvod extends Spider { String encryptData = encrypt(param); String content = OkHttp.post(latest, encryptData, getHeader(latest)).getBody(); String decryptData = decrypt(content); - List list = new ArrayList<>(); Data data = Data.objectFrom(decryptData); - for (Data.VideoLatest video : data.getVideoLatest()) { - list.add(video.vod()); - } - return Result.string(classes, list); + return Result.string(classes, data.getList()); } @Override @@ -122,12 +116,8 @@ public class Uvod extends Spider { String encryptData = encrypt(param); String content = OkHttp.post(list, encryptData, getHeader(list + "|" + tid + "|" + pg)).getBody(); String decryptData = decrypt(content); - List list = new ArrayList<>(); Data data = Data.objectFrom(decryptData); - for (Data.VideoLatest video : data.getVideoLatest()) { - list.add(video.vod()); - } - return Result.string(list); + return Result.string(data.getList()); } @Override @@ -139,14 +129,12 @@ 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(); - List Qualities = videolist.getQualities(); + Data.VideoFragmentList videoList = videoFragmentList.get(j); + String name = videoList.getSymbol(); + String nid = videoList.getId(); + 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 ? "#" : "$$$"); @@ -172,12 +160,8 @@ public class Uvod extends Spider { String encryptData = encrypt(param); String content = OkHttp.post(list, encryptData, getHeader(list + "|" + key)).getBody(); String decryptData = decrypt(content); - List list = new ArrayList<>(); Data data = Data.objectFrom(decryptData); - for (Data.VideoLatest video : data.getVideoLatest()) { - list.add(video.vod()); - } - return Result.string(list); + return Result.string(data.getList()); } @Override @@ -185,31 +169,20 @@ public class Uvod extends Spider { String[] item = id.split("\\|"); String tid = item[0]; String nid = item[1]; - String[] quality = item[2].replaceAll("[\\[\\]]", "").split(","); + String[] quality = item[2].replaceAll("[\\[\\]]", "").replace(" ", "").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()); + for (String s : quality) { + if (s.equals("4")) url.add("1080p"); + else if (s.equals("3")) url.add("720p"); + else if (s.equals("2")) url.add("480p"); + else if (s.equals("1")) url.add("360p"); + else url.add(s.trim()); + String param = String.format("{\"video_id\":\"%s\",\"video_fragment_id\":%s,\"quality\":%s,\"seek\":null}", tid, nid, s.trim()); String encryptData = encrypt(param); - String content = OkHttp.post(play, encryptData, getHeader(play + "|" + tid + "|" + nid + "|" + quality[i].trim())).getBody(); + String content = OkHttp.post(play, encryptData, getHeader(play + "|" + tid + "|" + nid + "|" + s.trim())).getBody(); String decryptData = decrypt(content); Data data = Data.objectFrom(decryptData); - Data.Video video = data.getVideo(); - url.add(video.getUrl()); + url.add(data.getVideo().getUrl()); } return Result.get().url(url).header(playHeader()).string(); } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 71a96243..c608d0a9 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 eb6cf1bd..e20b1411 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -f07fdfd86e4a8eb8198f9b2539c015d1 +d6377af2846bf4ae821a802907d89236