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 91e19366a..0fb80b3d2 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 @@ -277,7 +277,7 @@ public class Result implements Parcelable { } public boolean hasMsg() { - return getMsg().length() > 0; + return !getMsg().isEmpty(); } public String getRealUrl() { diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index ccb885e61..41c0bcdca 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -366,10 +366,10 @@ public class Players implements Player.Listener, ParseCallback { public void start(Result result, boolean useParse, int timeout) { if (result.hasMsg()) { ErrorEvent.extract(result.getMsg()); - } else if (result.getParse(1) == 1 || result.getJx() == 1) { - startParse(result, useParse); } else if (isIllegal(result.getRealUrl())) { ErrorEvent.url(); + } else if (result.getParse(1) == 1 || result.getJx() == 1) { + startParse(result, useParse); } else if (result.getDrm() != null && !FrameworkMediaDrm.isCryptoSchemeSupported(result.getDrm().getUUID())) { ErrorEvent.drm(); } else { @@ -458,6 +458,8 @@ public class Players implements Player.Listener, ParseCallback { String host = UrlUtil.host(uri); String scheme = UrlUtil.scheme(uri); if ("data".equals(scheme)) return false; + if (url.startsWith("json:")) return false; + if (url.startsWith("parse:")) return false; return scheme.isEmpty() || "file".equals(scheme) ? !Path.exists(url) : host.isEmpty(); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java index bf51136d8..82a43fadc 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java @@ -24,14 +24,12 @@ public class Youtube implements Source.Extractor { public String fetch(String url) throws Exception { String html = OkHttp.newCall(url, Headers.of(HttpHeaders.USER_AGENT, Util.CHROME)).execute().body().string(); Matcher matcher = Pattern.compile("var ytInitialPlayerResponse =(.*?\\});").matcher(html); - if (!matcher.find()) return ""; - JsonObject streamingData = Json.parse(matcher.group(1)).getAsJsonObject().get("streamingData").getAsJsonObject(); - if (streamingData.has("hlsManifestUrl")) return getHlsManifestUrl(streamingData); - return ""; + JsonObject object = Json.parse(matcher.group(1)).getAsJsonObject().get("streamingData").getAsJsonObject(); + return getHlsManifestUrl(object); } - private String getHlsManifestUrl(JsonObject streamingData) { - JsonElement hlsManifestUrl = streamingData.get("hlsManifestUrl"); + private String getHlsManifestUrl(JsonObject object) { + JsonElement hlsManifestUrl = object.get("hlsManifestUrl"); if (hlsManifestUrl.isJsonArray()) return hlsManifestUrl.getAsJsonArray().get(0).getAsString(); return hlsManifestUrl.getAsString(); }