From cadc56d9a3dd1bae8b512accf15c7e462b09b656 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 23 Aug 2023 16:22:55 +0800 Subject: [PATCH] Really support ali live_transcoding_task_list --- .../main/java/com/github/catvod/ali/API.java | 29 ++++++++++--------- .../java/com/github/catvod/bean/Result.java | 7 ++++- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/github/catvod/ali/API.java b/app/src/main/java/com/github/catvod/ali/API.java index 710593ba..57020ff9 100644 --- a/app/src/main/java/com/github/catvod/ali/API.java +++ b/app/src/main/java/com/github/catvod/ali/API.java @@ -17,7 +17,12 @@ import com.github.catvod.BuildConfig; import com.github.catvod.bean.Result; import com.github.catvod.bean.Sub; import com.github.catvod.bean.Vod; -import com.github.catvod.bean.ali.*; +import com.github.catvod.bean.ali.Code; +import com.github.catvod.bean.ali.Data; +import com.github.catvod.bean.ali.Drive; +import com.github.catvod.bean.ali.Item; +import com.github.catvod.bean.ali.OAuth; +import com.github.catvod.bean.ali.User; import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkResult; @@ -412,7 +417,7 @@ public class API { private String getPreviewContent(String[] ids) { try { JSONObject playInfo = getVideoPreviewPlayInfo(ids[0]); - String url = getPreviewUrl(playInfo); + List url = getPreviewUrl(playInfo); List subs = getSubs(ids); subs.addAll(getSubs(playInfo)); return Result.get().url(url).m3u8().subs(subs).header(getHeader()).string(); @@ -422,19 +427,17 @@ public class API { } } - private String getPreviewUrl(JSONObject playInfo) throws Exception { - if (!playInfo.has("live_transcoding_task_list")) return ""; + private List getPreviewUrl(JSONObject playInfo) throws Exception { + if (!playInfo.has("live_transcoding_task_list")) return Collections.emptyList(); JSONArray taskList = playInfo.getJSONArray("live_transcoding_task_list"); - List templates = Arrays.asList("UHD", "QHD", "FHD", "HD", "SD", "LD"); - for (String template : templates) { - for (int i = 0; i < taskList.length(); ++i) { - JSONObject task = taskList.getJSONObject(i); - if (task.getString("template_id").equals(template)) { - return task.getString("url"); - } - } + List url = new ArrayList<>(); + for (int i = taskList.length() - 1; i >= 0; i--) { + JSONObject task = taskList.getJSONObject(i); + if (!task.optString("status").equals("finished")) continue; + url.add(task.optString("template_id")); + url.add(task.optString("url")); } - return taskList.getJSONObject(0).getString("url"); + return url; } private List getSubs(JSONObject playInfo) throws Exception { 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 6954f6b3..1da6c813 100644 --- a/app/src/main/java/com/github/catvod/bean/Result.java +++ b/app/src/main/java/com/github/catvod/bean/Result.java @@ -26,7 +26,7 @@ public class Result { @SerializedName("format") private String format; @SerializedName("url") - private String url; + private Object url; @SerializedName("subs") private List subs; @SerializedName("parse") @@ -131,6 +131,11 @@ public class Result { return this; } + public Result url(List url) { + this.url = url; + return this; + } + public Result format(String format) { this.format = format; return this;