diff --git a/app/src/main/java/com/github/catvod/bean/Result.java b/app/src/main/java/com/github/catvod/bean/Result.java index d7e4fcd9..1b9fe58c 100644 --- a/app/src/main/java/com/github/catvod/bean/Result.java +++ b/app/src/main/java/com/github/catvod/bean/Result.java @@ -27,7 +27,7 @@ public class Result { @SerializedName("url") private String url; @SerializedName("sub") - private String sub; + private List sub; @SerializedName("parse") private int parse; @SerializedName("jx") @@ -129,7 +129,7 @@ public class Result { return this; } - public Result sub(String sub) { + public Result sub(List sub) { this.sub = sub; return this; } diff --git a/app/src/main/java/com/github/catvod/bean/Sub.java b/app/src/main/java/com/github/catvod/bean/Sub.java new file mode 100644 index 00000000..f36c900f --- /dev/null +++ b/app/src/main/java/com/github/catvod/bean/Sub.java @@ -0,0 +1,51 @@ +package com.github.catvod.bean; + +import com.google.gson.annotations.SerializedName; + +public class Sub { + + @SerializedName("url") + private String url; + @SerializedName("name") + private String name; + @SerializedName("lang") + private String lang; + @SerializedName("format") + private String format; + + public static Sub create() { + return new Sub(); + } + + public Sub name(String name) { + this.name = name; + return this; + } + + public Sub url(String url) { + this.url = url; + return this; + } + + public Sub lang(String lang) { + this.lang = lang; + return this; + } + + public Sub format(String format) { + this.format = format; + return this; + } + + public Sub ext(String ext) { + switch (ext) { + case "vtt": + return format("text/vtt"); + case "ass": + case "ssa": + return format("text/x-ssa"); + default: + return format("application/x-subrip"); + } + } +} diff --git a/app/src/main/java/com/github/catvod/spider/AList.java b/app/src/main/java/com/github/catvod/spider/AList.java index 2093c1e7..ea8e29da 100644 --- a/app/src/main/java/com/github/catvod/spider/AList.java +++ b/app/src/main/java/com/github/catvod/spider/AList.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import com.github.catvod.bean.Class; import com.github.catvod.bean.Filter; import com.github.catvod.bean.Result; +import com.github.catvod.bean.Sub; import com.github.catvod.bean.Vod; import com.github.catvod.bean.alist.Drive; import com.github.catvod.bean.alist.Item; @@ -198,17 +199,20 @@ public class AList extends Spider { private String findSubs(String path, List items) { StringBuilder sb = new StringBuilder(); - for (Item item : items) if (Misc.isSub(item.getExt())) sb.append("~~~").append(Trans.get(item.getName())).append("@@@").append(Misc.getSubMimeType(item.getExt())).append("@@@").append(item.getVodId(path)); + for (Item item : items) if (Misc.isSub(item.getExt())) sb.append("~~~").append(Trans.get(item.getName())).append("@@@").append(item.getExt()).append("@@@").append(item.getVodId(path)); return sb.toString(); } - private String getSub(String[] ids) { - StringBuilder sb = new StringBuilder(); + private List getSub(String[] ids) { + List sub = new ArrayList<>(); for (String text : ids) { if (!text.contains("@@@")) continue; - String[] arr = text.split("@@@"); - sb.append(arr[0]).append("#").append(arr[1]).append("#").append(getDetail(arr[2]).getUrl()).append("$$$"); + String[] split = text.split("@@@"); + String name = split[0]; + String ext = split[1]; + String url = getDetail(split[2]).getUrl(); + sub.add(Sub.create().name(name).ext(ext).url(url)); } - return Misc.substring(sb.toString(), 3); + return sub; } } \ No newline at end of file diff --git a/app/src/main/java/com/github/catvod/spider/Ali.java b/app/src/main/java/com/github/catvod/spider/Ali.java index 03926785..7972676c 100644 --- a/app/src/main/java/com/github/catvod/spider/Ali.java +++ b/app/src/main/java/com/github/catvod/spider/Ali.java @@ -7,6 +7,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import com.github.catvod.bean.Result; +import com.github.catvod.bean.Sub; import com.github.catvod.bean.Vod; import com.github.catvod.bean.ali.Data; import com.github.catvod.bean.ali.Item; @@ -90,7 +91,7 @@ public class Ali { String shareId = ids[0]; String shareToken = ids[1]; String fileId = ids[2]; - String sub = getSub(shareId, shareToken, ids); + List sub = getSub(shareId, shareToken, ids); if (System.currentTimeMillis() > expiresTime) refreshAccessToken(); while (TextUtils.isEmpty(authorization)) SystemClock.sleep(250); if (flag.equals("原畫")) { @@ -151,7 +152,7 @@ public class Ali { } else if (Misc.isSub(file.getExt())) { String key = file.removeExt(); if (!subMap.containsKey(key)) subMap.put(key, new ArrayList<>()); - subMap.get(key).add(key + "@@@" + file.getFileId() + "@@@" + file.getExt()); + subMap.get(key).add(key + "@@@" + file.getExt() + "@@@" + file.getFileId()); } } if (item.getNextMarker().length() > 0) { @@ -205,15 +206,17 @@ public class Ali { return sb.toString(); } - private String getSub(String shareId, String shareToken, String[] ids) { - StringBuilder sb = new StringBuilder(); + private List getSub(String shareId, String shareToken, String[] ids) { + List sub = new ArrayList<>(); for (String text : ids) { if (!text.contains("@@@")) continue; - String[] arr = text.split("@@@"); - String url = Proxy.getUrl() + "?do=ali&type=sub&share_id=" + shareId + "&share_token=" + shareToken + "&file_id=" + arr[1]; - sb.append(Trans.get(arr[0])).append("#").append(Misc.getSubMimeType(arr[2])).append("#").append(url).append("$$$"); + String[] split = text.split("@@@"); + String name = split[0]; + String ext = split[1]; + String url = Proxy.getUrl() + "?do=ali&type=sub&share_id=" + shareId + "&share_token=" + shareToken + "&file_id=" + split[2]; + sub.add(Sub.create().name(name).ext(ext).url(url)); } - return Misc.substring(sb.toString(), 3); + return sub; } private String getShareToken(String shareId) { diff --git a/app/src/main/java/com/github/catvod/utils/Misc.java b/app/src/main/java/com/github/catvod/utils/Misc.java index facd5258..c2dcac95 100644 --- a/app/src/main/java/com/github/catvod/utils/Misc.java +++ b/app/src/main/java/com/github/catvod/utils/Misc.java @@ -3,7 +3,6 @@ package com.github.catvod.utils; import android.net.Uri; import android.os.Build; import android.util.DisplayMetrics; -import android.util.Log; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; @@ -41,12 +40,6 @@ public class Misc { return ext.equals("srt") || ext.equals("ass") || ext.equals("ssa"); } - public static String getSubMimeType(String type) { - if (type.equals("srt")) return "application/x-subrip"; - if (type.equals("ass") || type.equals("ssa")) return "text/x-ssa"; - return "application/x-subrip"; - } - public static String getSize(double size) { if (size == 0) return ""; if (size > 1024 * 1024 * 1024 * 1024.0) {