Support new sub format

This commit is contained in:
FongMi 2023-01-03 11:45:30 +08:00
parent c821ac5618
commit 39be3de74d
5 changed files with 74 additions and 23 deletions

View File

@ -27,7 +27,7 @@ public class Result {
@SerializedName("url") @SerializedName("url")
private String url; private String url;
@SerializedName("sub") @SerializedName("sub")
private String sub; private List<Sub> sub;
@SerializedName("parse") @SerializedName("parse")
private int parse; private int parse;
@SerializedName("jx") @SerializedName("jx")
@ -129,7 +129,7 @@ public class Result {
return this; return this;
} }
public Result sub(String sub) { public Result sub(List<Sub> sub) {
this.sub = sub; this.sub = sub;
return this; return this;
} }

View File

@ -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");
}
}
}

View File

@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.github.catvod.bean.Class; import com.github.catvod.bean.Class;
import com.github.catvod.bean.Filter; import com.github.catvod.bean.Filter;
import com.github.catvod.bean.Result; import com.github.catvod.bean.Result;
import com.github.catvod.bean.Sub;
import com.github.catvod.bean.Vod; import com.github.catvod.bean.Vod;
import com.github.catvod.bean.alist.Drive; import com.github.catvod.bean.alist.Drive;
import com.github.catvod.bean.alist.Item; import com.github.catvod.bean.alist.Item;
@ -198,17 +199,20 @@ public class AList extends Spider {
private String findSubs(String path, List<Item> items) { private String findSubs(String path, List<Item> items) {
StringBuilder sb = new StringBuilder(); 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(); return sb.toString();
} }
private String getSub(String[] ids) { private List<Sub> getSub(String[] ids) {
StringBuilder sb = new StringBuilder(); List<Sub> sub = new ArrayList<>();
for (String text : ids) { for (String text : ids) {
if (!text.contains("@@@")) continue; if (!text.contains("@@@")) continue;
String[] arr = text.split("@@@"); String[] split = text.split("@@@");
sb.append(arr[0]).append("#").append(arr[1]).append("#").append(getDetail(arr[2]).getUrl()).append("$$$"); 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;
} }
} }

View File

@ -7,6 +7,7 @@ import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import com.github.catvod.bean.Result; import com.github.catvod.bean.Result;
import com.github.catvod.bean.Sub;
import com.github.catvod.bean.Vod; import com.github.catvod.bean.Vod;
import com.github.catvod.bean.ali.Data; import com.github.catvod.bean.ali.Data;
import com.github.catvod.bean.ali.Item; import com.github.catvod.bean.ali.Item;
@ -90,7 +91,7 @@ public class Ali {
String shareId = ids[0]; String shareId = ids[0];
String shareToken = ids[1]; String shareToken = ids[1];
String fileId = ids[2]; String fileId = ids[2];
String sub = getSub(shareId, shareToken, ids); List<Sub> sub = getSub(shareId, shareToken, ids);
if (System.currentTimeMillis() > expiresTime) refreshAccessToken(); if (System.currentTimeMillis() > expiresTime) refreshAccessToken();
while (TextUtils.isEmpty(authorization)) SystemClock.sleep(250); while (TextUtils.isEmpty(authorization)) SystemClock.sleep(250);
if (flag.equals("原畫")) { if (flag.equals("原畫")) {
@ -151,7 +152,7 @@ public class Ali {
} else if (Misc.isSub(file.getExt())) { } else if (Misc.isSub(file.getExt())) {
String key = file.removeExt(); String key = file.removeExt();
if (!subMap.containsKey(key)) subMap.put(key, new ArrayList<>()); 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) { if (item.getNextMarker().length() > 0) {
@ -205,15 +206,17 @@ public class Ali {
return sb.toString(); return sb.toString();
} }
private String getSub(String shareId, String shareToken, String[] ids) { private List<Sub> getSub(String shareId, String shareToken, String[] ids) {
StringBuilder sb = new StringBuilder(); List<Sub> sub = new ArrayList<>();
for (String text : ids) { for (String text : ids) {
if (!text.contains("@@@")) continue; if (!text.contains("@@@")) continue;
String[] arr = text.split("@@@"); String[] split = text.split("@@@");
String url = Proxy.getUrl() + "?do=ali&type=sub&share_id=" + shareId + "&share_token=" + shareToken + "&file_id=" + arr[1]; String name = split[0];
sb.append(Trans.get(arr[0])).append("#").append(Misc.getSubMimeType(arr[2])).append("#").append(url).append("$$$"); 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) { private String getShareToken(String shareId) {

View File

@ -3,7 +3,6 @@ package com.github.catvod.utils;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -41,12 +40,6 @@ public class Misc {
return ext.equals("srt") || ext.equals("ass") || ext.equals("ssa"); 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) { public static String getSize(double size) {
if (size == 0) return ""; if (size == 0) return "";
if (size > 1024 * 1024 * 1024 * 1024.0) { if (size > 1024 * 1024 * 1024 * 1024.0) {