Support site header for play

pull/142/head
FongMi 2 years ago
parent 14afab37a5
commit a5f1a802ac
  1. 12
      app/src/main/java/com/fongmi/android/tv/bean/Parse.java
  2. 7
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  3. 3
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  4. 5
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java

@ -48,14 +48,6 @@ public class Parse {
return parse;
}
public static Parse get(Integer type, String url, JsonElement header) {
Parse parse = new Parse();
parse.setHeader(header);
parse.setType(type);
parse.setUrl(url);
return parse;
}
public static Parse god() {
Parse parse = new Parse();
parse.setName(ResUtil.getString(R.string.parse_god));
@ -107,8 +99,8 @@ public class Parse {
return Json.toMap(getExt().getHeader());
}
private void setHeader(JsonElement header) {
getExt().setHeader(header);
public void setHeader(JsonElement header) {
if (getExt().getHeader() == null) getExt().setHeader(header);
}
@Override

@ -165,6 +165,10 @@ public class Result implements Parcelable {
return header;
}
public void setHeader(JsonElement header) {
if (getHeader() == null) this.header = header;
}
public String getPlayUrl() {
return TextUtils.isEmpty(playUrl) ? "" : playUrl;
}
@ -300,7 +304,8 @@ public class Result implements Parcelable {
this.types = new ArrayList<>();
in.readList(this.types, Class.class.getClassLoader());
this.list = in.createTypedArrayList(Vod.CREATOR);
Type listType = new TypeToken<LinkedHashMap<String, List<Filter>>>() {}.getType();
Type listType = new TypeToken<LinkedHashMap<String, List<Filter>>>() {
}.getType();
this.filters = App.gson().fromJson(in.readString(), listType);
}

@ -159,6 +159,7 @@ public class SiteViewModel extends ViewModel {
Result result = Result.fromJson(playerContent);
if (result.getFlag().isEmpty()) result.setFlag(flag);
result.setUrl(Source.get().fetch(result));
result.setHeader(site.getHeader());
checkDanmaku(result);
result.setKey(key);
return result;
@ -171,6 +172,7 @@ public class SiteViewModel extends ViewModel {
Result result = Result.fromJson(playerContent);
if (result.getFlag().isEmpty()) result.setFlag(flag);
result.setUrl(Source.get().fetch(result));
result.setHeader(site.getHeader());
checkDanmaku(result);
return result;
} else if (site.isEmpty() && key.equals("push_agent")) {
@ -186,6 +188,7 @@ public class SiteViewModel extends ViewModel {
Result result = new Result();
result.setUrl(url);
result.setFlag(flag);
result.setHeader(site.getHeader());
result.setPlayUrl(site.getPlayUrl());
result.setParse(Sniffer.isVideoFormat(url.v()) && result.getPlayUrl().isEmpty() ? 0 : 1);
return result;

@ -56,7 +56,8 @@ public class ParseJob implements ParseCallback {
if (useParse) parse = ApiConfig.get().getParse();
if (result.getPlayUrl().startsWith("json:")) parse = Parse.get(1, result.getPlayUrl().substring(5));
if (result.getPlayUrl().startsWith("parse:")) parse = ApiConfig.get().getParse(result.getPlayUrl().substring(6));
if (parse == null) parse = Parse.get(0, result.getPlayUrl(), result.getHeader());
if (parse == null) parse = Parse.get(0, result.getPlayUrl());
parse.setHeader(result.getHeader());
}
private void execute(Result result) {
@ -149,6 +150,7 @@ public class ParseJob implements ParseCallback {
}
private void checkResult(Result result) {
result.setHeader(parse.getExt().getHeader());
if (result.getUrl().isEmpty()) onParseError();
else if (result.getParse() == 1) startWeb(result.getHeaders(), Utils.convert(result.getUrl().v()));
else onParseSuccess(result.getHeaders(), result.getUrl().v(), result.getJxFrom());
@ -182,6 +184,7 @@ public class ParseJob implements ParseCallback {
private Map<String, String> getHeader(JsonObject object) {
Map<String, String> headers = new HashMap<>();
for (String key : object.keySet()) if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT) || key.equalsIgnoreCase(HttpHeaders.REFERER)) headers.put(Util.fix(key), object.get(key).getAsString());
if (headers.isEmpty()) return parse.getHeaders();
return headers;
}

Loading…
Cancel
Save