From 4f54582565ec3c47241bb58d9b4dac10ff8bb67e Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 26 Apr 2023 18:59:50 +0800 Subject: [PATCH] Live support header and referer --- .../com/fongmi/android/tv/bean/Channel.java | 32 ++++++++++++++++--- .../java/com/fongmi/android/tv/bean/Live.java | 12 +++++++ .../com/fongmi/android/tv/utils/Json.java | 5 +-- 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java index 920b0decc..28c21e7bb 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java @@ -7,6 +7,7 @@ import android.widget.ImageView; import com.fongmi.android.tv.R; import com.fongmi.android.tv.utils.ImgUtil; +import com.fongmi.android.tv.utils.Json; import com.fongmi.android.tv.utils.ResUtil; import com.google.common.net.HttpHeaders; import com.google.gson.Gson; @@ -15,7 +16,6 @@ import com.google.gson.annotations.SerializedName; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -34,6 +34,10 @@ public class Channel { private String name; @SerializedName("ua") private String ua; + @SerializedName("referer") + private String referer; + @SerializedName("header") + private JsonElement header; private boolean selected; private Group group; @@ -112,6 +116,22 @@ public class Channel { this.ua = ua; } + public String getReferer() { + return TextUtils.isEmpty(referer) ? "" : referer; + } + + public void setReferer(String referer) { + this.referer = referer; + } + + public JsonElement getHeader() { + return header; + } + + public void setHeader(JsonElement header) { + this.header = header; + } + public Group getGroup() { return group; } @@ -206,6 +226,8 @@ 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.getReferer().length() > 0 && getReferer().isEmpty()) setReferer(live.getReferer()); if (!getEpg().startsWith("http")) setEpg(live.getEpg().replace("{name}", getName()).replace("{epg}", getEpg())); if (!getLogo().startsWith("http")) setLogo(live.getLogo().replace("{name}", getName()).replace("{logo}", getLogo())); } @@ -239,10 +261,10 @@ public class Channel { } public Map getHeaders() { - HashMap map = new HashMap<>(); - if (getUa().isEmpty()) return map; - map.put(HttpHeaders.USER_AGENT, getUa()); - return map; + Map headers = Json.toMap(getHeader()); + if (!getUa().isEmpty()) headers.put(HttpHeaders.USER_AGENT, getUa()); + if (!getReferer().isEmpty()) headers.put(HttpHeaders.REFERER, getReferer()); + return headers; } public Channel copy(Channel item) { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index b7158c629..f58e5210e 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -32,6 +32,10 @@ public class Live { private String epg; @SerializedName("ua") private String ua; + @SerializedName("referer") + private String referer; + @SerializedName("header") + private JsonElement header; @SerializedName("playerType") private Integer playerType; @SerializedName("channels") @@ -98,6 +102,14 @@ public class Live { return TextUtils.isEmpty(ua) ? "" : ua; } + public String getReferer() { + return TextUtils.isEmpty(referer) ? "" : referer; + } + + public JsonElement getHeader() { + return header; + } + public int getPlayerType() { return playerType == null ? -1 : playerType == 1 ? 1 : 0; } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Json.java b/app/src/main/java/com/fongmi/android/tv/utils/Json.java index 057e2d61a..7f39e426b 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Json.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Json.java @@ -9,6 +9,7 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; public class Json { @@ -58,8 +59,8 @@ public class Json { } } - public static HashMap toMap(JsonElement element) { - HashMap map = new HashMap<>(); + public static Map toMap(JsonElement element) { + Map map = new HashMap<>(); JsonObject object = safeObject(element); for (String key : object.keySet()) map.put(key, safeString(object, key)); return map;