Support click param

pull/199/head
FongMi 2 years ago
parent ef00d1c9b4
commit 72e5c2294d
  1. 12
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  2. 13
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  3. 8
      app/src/main/java/com/fongmi/android/tv/bean/Live.java
  4. 9
      app/src/main/java/com/fongmi/android/tv/bean/Parse.java
  5. 33
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  6. 14
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  7. 9
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java

@ -115,6 +115,7 @@ public class LiveParser {
private String ua;
private String key;
private String type;
private String click;
private String referer;
private Integer parse;
private Integer player;
@ -126,6 +127,7 @@ public class LiveParser {
public void check(String line) {
if (line.startsWith("ua")) ua(line);
if (line.startsWith("parse")) parse(line);
if (line.startsWith("click")) click(line);
if (line.startsWith("player")) player(line);
if (line.startsWith("referer")) referer(line);
if (line.startsWith("#EXTVLCOPT:http-user-agent")) ua(line);
@ -138,6 +140,7 @@ public class LiveParser {
public Setting copy(Channel channel) {
if (ua != null) channel.setUa(ua);
if (parse != null) channel.setParse(parse);
if (click != null) channel.setClick(click);
if (referer != null) channel.setReferer(referer);
if (player != null) channel.setPlayerType(player);
if (key != null && type != null) channel.setDrm(Drm.create(key, type));
@ -168,6 +171,14 @@ public class LiveParser {
}
}
private void click(String line) {
try {
click = line.split("=")[1].trim();
} catch (Exception e) {
click = null;
}
}
private void player(String line) {
try {
player = Integer.parseInt(line.split("=")[1].trim());
@ -197,6 +208,7 @@ public class LiveParser {
key = null;
type = null;
parse = null;
click = null;
player = null;
referer = null;
}

@ -33,6 +33,8 @@ public class Channel {
private String name;
@SerializedName("ua")
private String ua;
@SerializedName("click")
private String click;
@SerializedName("referer")
private String referer;
@SerializedName("header")
@ -128,6 +130,14 @@ public class Channel {
this.ua = ua;
}
public String getClick() {
return TextUtils.isEmpty(click) ? "" : click;
}
public void setClick(String click) {
this.click = click;
}
public String getReferer() {
return TextUtils.isEmpty(referer) ? "" : referer;
}
@ -275,6 +285,7 @@ public class Channel {
public void live(Live live) {
if (live.getUa().length() > 0 && getUa().isEmpty()) setUa(live.getUa());
if (live.getHeader() != null && getHeader() == null) setHeader(live.getHeader());
if (live.getClick().length() > 0 && getClick().isEmpty()) setClick(live.getClick());
if (live.getReferer().length() > 0 && getReferer().isEmpty()) setReferer(live.getReferer());
if (live.getPlayerType() != -1 && getPlayerType() == -1) setPlayerType(live.getPlayerType());
if (!getEpg().startsWith("http")) setEpg(live.getEpg().replace("{name}", getName()).replace("{epg}", getEpg()));
@ -298,6 +309,7 @@ public class Channel {
setHeader(item.getHeader());
setNumber(item.getNumber());
setParse(item.getParse());
setClick(item.getClick());
setLogo(item.getLogo());
setName(item.getName());
setUrls(item.getUrls());
@ -309,6 +321,7 @@ public class Channel {
public Result result() {
Result result = new Result();
result.setClick(getClick());
result.setUrl(Url.create().add(getUrl()));
result.setHeader(Json.toObject(getHeaders()));
return result;

@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Entity(ignoredColumns = {"type", "group", "url", "logo", "epg", "ua", "referer", "timeout", "header", "playerType", "channels", "groups", "core", "activated", "width"})
@Entity(ignoredColumns = {"type", "group", "url", "logo", "epg", "ua", "click", "referer", "timeout", "header", "playerType", "channels", "groups", "core", "activated", "width"})
public class Live {
@NonNull
@ -44,6 +44,8 @@ public class Live {
private String epg;
@SerializedName("ua")
private String ua;
@SerializedName("click")
private String click;
@SerializedName("referer")
private String referer;
@SerializedName("timeout")
@ -137,6 +139,10 @@ public class Live {
return TextUtils.isEmpty(referer) ? "" : referer;
}
public String getClick() {
return TextUtils.isEmpty(click) ? "" : click;
}
public Integer getTimeout() {
return timeout == null ? Constant.TIMEOUT_PLAY : Math.max(timeout, 1) * 1000;
}

@ -30,6 +30,7 @@ public class Parse {
private Ext ext;
private boolean activated;
private String click;
public static Parse objectFrom(JsonElement element) {
return App.gson().fromJson(element, Parse.class);
@ -95,6 +96,14 @@ public class Parse {
this.activated = item.equals(this);
}
public String getClick() {
return TextUtils.isEmpty(click) ? "" : click;
}
public void setClick(String click) {
this.click = click;
}
public Map<String, String> getHeaders() {
return Json.toMap(getExt().getHeader());
}

@ -45,36 +45,41 @@ public class Result implements Parcelable {
@SerializedName("filters")
@JsonAdapter(FilterAdapter.class)
private LinkedHashMap<String, List<Filter>> filters;
@SerializedName("url")
@JsonAdapter(UrlAdapter.class)
private Url url;
@JsonAdapter(MsgAdapter.class)
@SerializedName("msg")
private String msg;
@SerializedName("header")
private JsonElement header;
@SerializedName("playUrl")
private String playUrl;
@SerializedName("jxFrom")
private String jxFrom;
@SerializedName("parse")
private Integer parse;
@SerializedName("jx")
private Integer jx;
@SerializedName("flag")
private String flag;
@SerializedName("danmaku")
private String danmaku;
@SerializedName("format")
private String format;
@SerializedName("url")
@JsonAdapter(UrlAdapter.class)
private Url url;
@SerializedName("click")
private String click;
@SerializedName("key")
private String key;
@SerializedName("subs")
private List<Sub> subs;
@SerializedName("pagecount")
private Integer pagecount;
@SerializedName("parse")
private Integer parse;
@SerializedName("code")
private Integer code;
@JsonAdapter(MsgAdapter.class)
@SerializedName("msg")
private String msg;
@SerializedName("jx")
private Integer jx;
public static Result objectFrom(String str) {
try {
@ -212,6 +217,14 @@ public class Result implements Parcelable {
return format;
}
public String getClick() {
return TextUtils.isEmpty(click) ? "" : click;
}
public void setClick(String click) {
this.click = click;
}
public String getFlag() {
return TextUtils.isEmpty(flag) ? "" : flag;
}

@ -57,6 +57,12 @@ public class ParseJob implements ParseCallback {
if (result.getPlayUrl().startsWith("parse:")) parse = ApiConfig.get().getParse(result.getPlayUrl().substring(6));
if (parse == null) parse = Parse.get(0, result.getPlayUrl());
parse.setHeader(result.getHeader());
parse.setClick(getClick(result));
}
private String getClick(Result result) {
if (result.getClick().length() > 0) return result.getClick();
return ApiConfig.get().getSite(result.getKey()).getClick();
}
private void execute(Result result) {
@ -169,15 +175,15 @@ public class ParseJob implements ParseCallback {
}
private void startWeb(String key, Parse item, String webUrl) {
startWeb(key, item.getName(), item.getHeaders(), item.getUrl() + webUrl);
startWeb(key, item.getName(), item.getHeaders(), item.getUrl() + webUrl, item.getClick());
}
private void startWeb(Map<String, String> headers, String url) {
startWeb("", "", headers, url);
startWeb("", "", headers, url, "");
}
private void startWeb(String key, String from, Map<String, String> headers, String url) {
App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, this, !url.contains("player/?url="))));
private void startWeb(String key, String from, Map<String, String> headers, String url, String click) {
App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, click, this, !url.contains("player/?url="))));
}
private Map<String, String> getHeader(JsonObject object) {

@ -44,6 +44,7 @@ public class CustomWebView extends WebView {
private AlertDialog dialog;
private Runnable timer;
private boolean detect;
private String click;
private String from;
private String key;
@ -82,12 +83,13 @@ public class CustomWebView extends WebView {
}
}
public CustomWebView start(String key, String from, Map<String, String> headers, String url, ParseCallback callback, boolean detect) {
public CustomWebView start(String key, String from, Map<String, String> headers, String url, String click, ParseCallback callback, boolean detect) {
App.post(timer, Constant.TIMEOUT_PARSE_WEB);
this.callback = callback;
setUserAgent(headers);
loadUrl(url, headers);
this.detect = detect;
this.click = click;
this.from = from;
this.key = key;
return this;
@ -146,8 +148,7 @@ public class CustomWebView extends WebView {
private List<String> getScript(String url) {
List<String> script = new ArrayList<>(Sniffer.getScript(Uri.parse(url)));
String click = ApiConfig.get().getSite(key).getClick();
if (click.length() > 0) script.add(0, click);
if (!TextUtils.isEmpty(click)) script.add(0, click);
return script;
}
@ -179,7 +180,7 @@ public class CustomWebView extends WebView {
}
private void onParseAdd(Map<String, String> headers, String url) {
App.post(() -> CustomWebView.create(App.get()).start(key, from, headers, url, callback, false));
App.post(() -> CustomWebView.create(App.get()).start(key, from, headers, url, click, callback, false));
}
private void onParseSuccess(Map<String, String> headers, String url) {

Loading…
Cancel
Save