pull/585/head
FongMi 10 months ago
parent 8503c1bd84
commit 44636acc55
  1. 2
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 10
      app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java

@ -277,7 +277,7 @@ public class Result implements Parcelable {
}
public boolean hasMsg() {
return getMsg().length() > 0;
return !getMsg().isEmpty();
}
public String getRealUrl() {

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

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

Loading…
Cancel
Save