Support header for site

pull/183/head
FongMi 3 years ago
parent f80ed87b6b
commit 389c2cf1e5
  1. 15
      app/src/main/java/com/fongmi/android/tv/bean/Site.java
  2. 12
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  4. 7
      catvod/src/main/java/com/github/catvod/net/OkHttp.java

@ -11,6 +11,7 @@ import androidx.room.PrimaryKey;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.gson.ExtAdapter;
import com.github.catvod.utils.Json;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.JsonAdapter;
@ -19,7 +20,9 @@ import com.google.gson.annotations.SerializedName;
import java.util.Collections;
import java.util.List;
@Entity(ignoredColumns = {"type", "api", "playUrl", "timeout", "playerType", "ext", "jar", "style", "categories"})
import okhttp3.Headers;
@Entity(ignoredColumns = {"type", "api", "playUrl", "timeout", "playerType", "ext", "jar", "style", "categories", "header"})
public class Site implements Parcelable {
@NonNull
@ -55,6 +58,8 @@ public class Site implements Parcelable {
private Style style;
@SerializedName("categories")
private List<String> categories;
@SerializedName("header")
private JsonElement header;
private boolean activated;
@ -178,6 +183,10 @@ public class Site implements Parcelable {
return categories == null ? Collections.emptyList() : categories;
}
public JsonElement getHeader() {
return header;
}
public boolean isActivated() {
return activated;
}
@ -229,6 +238,10 @@ public class Site implements Parcelable {
return getKey().isEmpty() && getName().isEmpty();
}
public Headers getHeaders() {
return Headers.of(Json.toMap(getHeader()));
}
public Site sync() {
Site item = find(getKey());
if (item == null) return this;

@ -26,7 +26,6 @@ import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Trans;
import com.github.catvod.utils.Util;
import com.google.common.net.HttpHeaders;
import java.io.IOException;
import java.util.ArrayList;
@ -40,7 +39,6 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Response;
public class SiteViewModel extends ViewModel {
@ -83,7 +81,7 @@ public class SiteViewModel extends ViewModel {
SpiderDebug.log(homeContent);
return Result.fromJson(homeContent);
} else {
String homeContent = OkHttp.newCall(site.getApi(), Headers.of(HttpHeaders.ACCEPT, OkHttp.ACCEPT)).execute().body().string();
String homeContent = OkHttp.newCall(site.getApi(), site.getHeaders()).execute().body().string();
SpiderDebug.log(homeContent);
return fetchPic(site, Result.fromType(site.getType(), homeContent));
}
@ -180,7 +178,7 @@ public class SiteViewModel extends ViewModel {
} else {
Url url = Url.create().add(id);
String type = Uri.parse(id).getQueryParameter("type");
if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(id).execute().body().string()).getUrl();
if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(id, site.getHeaders()).execute().body().string()).getUrl();
Result result = new Result();
result.setUrl(url);
result.setFlag(flag);
@ -229,7 +227,7 @@ public class SiteViewModel extends ViewModel {
}
private String call(Site site, ArrayMap<String, String> params, boolean limit) throws IOException {
Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.getApi(), params) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params));
Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.getApi(), params, site.getHeaders()) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params), site.getHeaders());
return call.execute().body().string();
}
@ -242,7 +240,7 @@ public class SiteViewModel extends ViewModel {
}
private String fetchExt(Site site) throws IOException {
Response res = OkHttp.newCall(site.getExt()).execute();
Response res = OkHttp.newCall(site.getExt(), site.getHeaders()).execute();
if (res.code() != 200) return "";
site.setExt(res.body().string());
return site.getExt();
@ -255,7 +253,7 @@ public class SiteViewModel extends ViewModel {
ArrayMap<String, String> params = new ArrayMap<>();
params.put("ac", site.getType() == 0 ? "videolist" : "detail");
params.put("ids", TextUtils.join(",", ids));
String response = OkHttp.newCall(site.getApi(), params).execute().body().string();
String response = OkHttp.newCall(site.getApi(), params, site.getHeaders()).execute().body().string();
result.setList(Result.fromType(site.getType(), response).getList());
return result;
}

@ -18,7 +18,7 @@ import java.util.regex.Pattern;
public class Sniffer {
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36";
public static final Pattern RULE = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*");
public static final List<String> PUSH = Arrays.asList("smb", "http", "https", "thunder", "magnet", "ed2k", "ftp", "mitv", "jianpian");
public static final List<String> THUNDER = Arrays.asList("thunder", "magnet", "ed2k", "ftp");

@ -26,7 +26,6 @@ import okhttp3.dnsoverhttps.DnsOverHttps;
public class OkHttp {
public static final String ACCEPT = "*/*";
private static final int TIMEOUT = 30 * 1000;
private static final int CACHE = 100 * 1024 * 1024;
@ -82,15 +81,15 @@ public class OkHttp {
}
public static Call newCall(String url, ArrayMap<String, String> params) {
return client().newCall(new Request.Builder().url(buildUrl(url, params)).headers(Headers.of(HttpHeaders.ACCEPT, ACCEPT)).build());
return client().newCall(new Request.Builder().url(buildUrl(url, params)).build());
}
public static Call newCall(String url, ArrayMap<String, String> params, Headers headers) {
return client().newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build());
}
public static Call newCall(String url, RequestBody body) {
return client().newCall(new Request.Builder().url(url).post(body).build());
public static Call newCall(String url, RequestBody body, Headers headers) {
return client().newCall(new Request.Builder().url(url).post(body).headers(headers).build());
}
public static Call newCall(OkHttpClient client, String url, RequestBody body) {

Loading…
Cancel
Save