diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index cf09e8612..3fff5d306 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -58,7 +58,7 @@ public class Result { private String flag; @SerializedName("url") private String url; - @SerializedName("subt") + @SerializedName("sub") private String sub; public static Result fromJson(String str) { diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 9ae06e855..6cad92bd8 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -6,7 +6,6 @@ import android.net.Uri; import com.fongmi.android.tv.App; import com.fongmi.android.tv.bean.Result; import com.github.catvod.crawler.SpiderDebug; -import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.DefaultRenderersFactory; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; @@ -20,8 +19,10 @@ import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.util.MimeTypes; -import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Map; public class ExoUtil { @@ -44,18 +45,25 @@ public class ExoUtil { return getSource(headers, url, null); } - private static MediaSource getSource(Map headers, String url, MediaItem.SubtitleConfiguration config) { + private static MediaSource getSource(Map headers, String url, List config) { SpiderDebug.log(url); Uri videoUri = Uri.parse(url); DataSource.Factory factory = getFactory(headers, url); MediaItem.Builder builder = new MediaItem.Builder().setUri(videoUri); if (url.contains("php") || url.contains("m3u8")) builder.setMimeType(MimeTypes.APPLICATION_M3U8); - if (config != null) builder.setSubtitleConfigurations(ImmutableList.of(config)); + if (config.size() > 0) builder.setSubtitleConfigurations(config); return new DefaultMediaSourceFactory(factory).createMediaSource(builder.build()); } - private static MediaItem.SubtitleConfiguration getConfig(Result result) { - return result.getSub().isEmpty() ? null : new MediaItem.SubtitleConfiguration.Builder(Uri.parse(result.getSub())).setLabel("Spider").setMimeType(MimeTypes.APPLICATION_SUBRIP).setSelectionFlags(C.SELECTION_FLAG_DEFAULT).build(); + private static List getConfig(Result result) { + if (result.getSub().isEmpty()) return Collections.emptyList(); + List items = new ArrayList<>(); + String[] subs = result.getSub().split("\\$\\$\\$"); + for (String sub : subs) { + String[] divide = sub.split("#"); + items.add(new MediaItem.SubtitleConfiguration.Builder(Uri.parse(divide[2])).setLabel(divide[0]).setMimeType(divide[1]).build()); + } + return items; } private static DataSource.Factory getFactory(Map headers, String url) {