Optimize loader - part 1

pull/586/head
FongMi 2 years ago
parent 1fb520d59c
commit 3e165307e6
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  3. 50
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  4. 59
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  5. 91
      app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.java
  7. 14
      app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java
  8. 14
      app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java
  9. 11
      app/src/main/java/com/fongmi/android/tv/bean/Live.java
  10. 11
      app/src/main/java/com/fongmi/android/tv/bean/Site.java
  11. 3
      app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java
  12. 18
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  13. 5
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  14. 9
      app/src/main/java/com/fongmi/android/tv/server/process/Proxy.java
  15. 4
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  16. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java

@ -30,6 +30,7 @@ import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.api.config.WallConfig;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Func;
import com.fongmi.android.tv.bean.History;
@ -492,6 +493,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
protected void onDestroy() {
super.onDestroy();
BaseLoader.get().clear();
WallConfig.get().clear();
LiveConfig.get().clear();
VodConfig.get().clear();

@ -4,7 +4,6 @@ import android.util.Base64;
import androidx.media3.common.MimeTypes;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.bean.Catchup;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.ClearKey;
@ -12,7 +11,6 @@ import com.fongmi.android.tv.bean.Drm;
import com.fongmi.android.tv.bean.Group;
import com.fongmi.android.tv.bean.Live;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Path;
@ -69,8 +67,7 @@ public class LiveParser {
}
private static void spider(Live live, String text) throws Exception {
Spider spider = LiveConfig.get().getSpider(live);
if (text.isEmpty()) text = spider.liveContent();
if (text.isEmpty()) text = live.spider().liveContent();
if (Json.valid(text)) json(live, text);
else text(live, text);
}

@ -7,9 +7,7 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.Decoder;
import com.fongmi.android.tv.api.LiveParser;
import com.fongmi.android.tv.api.loader.JarLoader;
import com.fongmi.android.tv.api.loader.JsLoader;
import com.fongmi.android.tv.api.loader.PyLoader;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Depot;
@ -22,8 +20,6 @@ import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.ui.activity.LiveActivity;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.google.gson.JsonElement;
@ -32,16 +28,12 @@ import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class LiveConfig {
private List<Live> lives;
private List<Rule> rules;
private List<String> ads;
private JarLoader jarLoader;
private PyLoader pyLoader;
private JsLoader jsLoader;
private Config config;
private boolean sync;
private Live home;
@ -54,6 +46,10 @@ public class LiveConfig {
return Loader.INSTANCE;
}
public static int getCid() {
return get().getConfig().getId();
}
public static String getUrl() {
return get().getConfig().getUrl();
}
@ -91,9 +87,6 @@ public class LiveConfig {
this.ads = new ArrayList<>();
this.rules = new ArrayList<>();
this.lives = new ArrayList<>();
this.jarLoader = new JarLoader();
this.pyLoader = new PyLoader();
this.jsLoader = new JsLoader();
return config(Config.live());
}
@ -109,9 +102,6 @@ public class LiveConfig {
this.ads.clear();
this.rules.clear();
this.lives.clear();
this.jarLoader.clear();
this.pyLoader.clear();
this.jsLoader.clear();
return this;
}
@ -172,6 +162,7 @@ public class LiveConfig {
try {
initLive(object);
initOther(object);
BaseLoader.get().parseJar(object);
} catch (Throwable e) {
e.printStackTrace();
} finally {
@ -211,35 +202,6 @@ public class LiveConfig {
return ext;
}
public Spider getSpider(Live live) {
boolean js = live.getApi().contains(".js");
boolean py = live.getApi().contains(".py");
boolean csp = live.getApi().startsWith("csp_");
if (py) return pyLoader.getSpider(live.getName(), live.getApi(), live.getExt());
else if (js) return jsLoader.getSpider(live.getName(), live.getApi(), live.getExt(), live.getJar());
else if (csp) return jarLoader.getSpider(live.getName(), live.getApi(), live.getExt(), live.getJar());
else return new SpiderNull();
}
public void setRecent(Live live) {
boolean js = live.getApi().contains(".js");
boolean py = live.getApi().contains(".py");
boolean csp = live.getApi().startsWith("csp_");
if (js) jsLoader.setRecent(live.getName());
else if (py) pyLoader.setRecent(live.getName());
else if (csp) jarLoader.setRecent(live.getJar());
}
public Object[] proxyLocal(Map<String, String> params) {
if ("js".equals(params.get("do"))) {
return jsLoader.proxyInvoke(params);
} else if ("py".equals(params.get("do"))) {
return pyLoader.proxyInvoke(params);
} else {
return jarLoader.proxyInvoke(params);
}
}
private void bootLive() {
Setting.putBootLive(false);
LiveActivity.start(App.get());

@ -5,9 +5,7 @@ import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.Decoder;
import com.fongmi.android.tv.api.loader.JarLoader;
import com.fongmi.android.tv.api.loader.JsLoader;
import com.fongmi.android.tv.api.loader.PyLoader;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Depot;
import com.fongmi.android.tv.bean.Parse;
@ -17,21 +15,14 @@ import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.bean.Doh;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class VodConfig {
@ -41,9 +32,6 @@ public class VodConfig {
private List<Parse> parses;
private List<String> flags;
private List<String> ads;
private JarLoader jarLoader;
private PyLoader pyLoader;
private JsLoader jsLoader;
private boolean loadLive;
private Config config;
private Parse parse;
@ -97,9 +85,6 @@ public class VodConfig {
this.sites = new ArrayList<>();
this.flags = new ArrayList<>();
this.parses = new ArrayList<>();
this.jarLoader = new JarLoader();
this.pyLoader = new PyLoader();
this.jsLoader = new JsLoader();
this.loadLive = false;
return this;
}
@ -119,9 +104,6 @@ public class VodConfig {
this.sites.clear();
this.flags.clear();
this.parses.clear();
this.jarLoader.clear();
this.pyLoader.clear();
this.jsLoader.clear();
this.loadLive = true;
return this;
}
@ -169,8 +151,8 @@ public class VodConfig {
initSite(object);
initParse(object);
initOther(object);
BaseLoader.get().parseJar(object);
if (loadLive && object.has("lives")) initLive(object);
jarLoader.parseJar("", Json.safeString(object, "spider"));
config.logo(Json.safeString(object, "logo"));
config.json(object.toString()).update();
App.post(callback::success);
@ -235,43 +217,6 @@ public class VodConfig {
return ext;
}
public Spider getSpider(Site site) {
boolean js = site.getApi().contains(".js");
boolean py = site.getApi().contains(".py");
boolean csp = site.getApi().startsWith("csp_");
if (py) return pyLoader.getSpider(site.getKey(), site.getApi(), site.getExt());
else if (js) return jsLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar());
else if (csp) return jarLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar());
else return new SpiderNull();
}
public void setRecent(Site site) {
boolean js = site.getApi().contains(".js");
boolean py = site.getApi().contains(".py");
boolean csp = site.getApi().startsWith("csp_");
if (js) jsLoader.setRecent(site.getKey());
else if (py) pyLoader.setRecent(site.getKey());
else if (csp) jarLoader.setRecent(site.getJar());
}
public Object[] proxyLocal(Map<String, String> params) {
if ("js".equals(params.get("do"))) {
return jsLoader.proxyInvoke(params);
} else if ("py".equals(params.get("do"))) {
return pyLoader.proxyInvoke(params);
} else {
return jarLoader.proxyInvoke(params);
}
}
public JSONObject jsonExt(String key, LinkedHashMap<String, String> jxs, String url) throws Throwable {
return jarLoader.jsonExt(key, jxs, url);
}
public JSONObject jsonExtMix(String flag, String key, String name, LinkedHashMap<String, HashMap<String, String>> jxs, String url) throws Throwable {
return jarLoader.jsonExtMix(flag, key, name, jxs, url);
}
public List<Doh> getDoh() {
List<Doh> items = Doh.get(App.get());
if (doh == null) return items;

@ -0,0 +1,91 @@
package com.fongmi.android.tv.api.loader;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
import com.github.catvod.utils.Json;
import com.google.gson.JsonObject;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class BaseLoader {
private final JarLoader jarLoader;
private final PyLoader pyLoader;
private final JsLoader jsLoader;
private static class Loader {
static volatile BaseLoader INSTANCE = new BaseLoader();
}
public static BaseLoader get() {
return Loader.INSTANCE;
}
private BaseLoader() {
this.jarLoader = new JarLoader();
this.pyLoader = new PyLoader();
this.jsLoader = new JsLoader();
}
public void clear() {
this.jarLoader.clear();
this.pyLoader.clear();
this.jsLoader.clear();
}
public Spider getSpider(String key, String api, String ext, String jar) {
boolean js = api.contains(".js");
boolean py = api.contains(".py");
boolean csp = api.startsWith("csp_");
if (py) return pyLoader.getSpider(key, api, ext);
else if (js) return jsLoader.getSpider(key, api, ext, jar);
else if (csp) return jarLoader.getSpider(key, api, ext, jar);
else return new SpiderNull();
}
public Spider getSpider(Map<String, String> params) {
if (!params.containsKey("siteKey")) return new SpiderNull();
boolean live = params.containsKey("live") && "true".equals(params.get("live"));
boolean vod = !params.containsKey("live") || "false".equals(params.get("live"));
if (live) return LiveConfig.get().getLive(params.get("siteKey")).spider();
if (vod) return VodConfig.get().getSite(params.get("siteKey")).spider();
return new SpiderNull();
}
public void setRecent(String key, String api, String jar) {
boolean js = api.contains(".js");
boolean py = api.contains(".py");
boolean csp = api.startsWith("csp_");
if (js) jsLoader.setRecent(key);
else if (py) pyLoader.setRecent(key);
else if (csp) jarLoader.setRecent(jar);
}
public Object[] proxyLocal(Map<String, String> params) {
if ("js".equals(params.get("do"))) {
return jsLoader.proxyInvoke(params);
} else if ("py".equals(params.get("do"))) {
return pyLoader.proxyInvoke(params);
} else {
return jarLoader.proxyInvoke(params);
}
}
public void parseJar(JsonObject object) {
jarLoader.parseJar(Json.safeString(object, "spider"));
}
public JSONObject jsonExt(String key, LinkedHashMap<String, String> jxs, String url) throws Throwable {
return jarLoader.jsonExt(key, jxs, url);
}
public JSONObject jsonExtMix(String flag, String key, String name, LinkedHashMap<String, HashMap<String, String>> jxs, String url) throws Throwable {
return jarLoader.jsonExtMix(flag, key, name, jxs, url);
}
}

@ -80,6 +80,10 @@ public class JarLoader {
}
}
public void parseJar(String jar) {
parseJar("", jar);
}
public void parseJar(String key, String jar) {
if (loaders.containsKey(key)) return;
String[] texts = jar.split(";md5;");

@ -1,8 +1,6 @@
package com.fongmi.android.tv.api.loader;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
@ -53,18 +51,10 @@ public class JsLoader {
}
}
private Spider find(Map<String, String> params) {
if (!params.containsKey("siteKey")) return spiders.get(recent);
boolean live = params.containsKey("live") && "true".equals(params.get("live"));
boolean vod = !params.containsKey("live") || "false".equals(params.get("live"));
if (vod) return VodConfig.get().getSpider(VodConfig.get().getSite(params.get("siteKey")));
if (live) return LiveConfig.get().getSpider(LiveConfig.get().getLive(params.get("siteKey")));
return new SpiderNull();
}
public Object[] proxyInvoke(Map<String, String> params) {
try {
return find(params).proxyLocal(params);
if (!params.containsKey("siteKey")) return spiders.get(recent).proxyLocal(params);
return BaseLoader.get().getSpider(params).proxyLocal(params);
} catch (Throwable e) {
e.printStackTrace();
return null;

@ -3,8 +3,6 @@ package com.fongmi.android.tv.api.loader;
import android.content.Context;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
@ -53,18 +51,10 @@ public class PyLoader {
}
}
private Spider find(Map<String, String> params) {
if (!params.containsKey("siteKey")) return spiders.get(recent);
boolean live = params.containsKey("live") && "true".equals(params.get("live"));
boolean vod = !params.containsKey("live") || "false".equals(params.get("live"));
if (vod) return VodConfig.get().getSpider(VodConfig.get().getSite(params.get("siteKey")));
if (live) return LiveConfig.get().getSpider(LiveConfig.get().getLive(params.get("siteKey")));
return new SpiderNull();
}
public Object[] proxyInvoke(Map<String, String> params) {
try {
return find(params).proxyLocal(params);
if (!params.containsKey("siteKey")) return spiders.get(recent).proxyLocal(params);
return BaseLoader.get().getSpider(params).proxyLocal(params);
} catch (Throwable e) {
e.printStackTrace();
return null;

@ -11,8 +11,10 @@ import androidx.room.PrimaryKey;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.gson.ExtAdapter;
import com.github.catvod.crawler.Spider;
import com.github.catvod.utils.Json;
import com.google.common.net.HttpHeaders;
import com.google.gson.JsonElement;
@ -298,6 +300,15 @@ public class Live {
return this;
}
public Live recent() {
BaseLoader.get().setRecent(getName(), getApi(), getJar());
return this;
}
public Spider spider() {
return BaseLoader.get().getSpider(getName(), getApi(), getExt(), getJar());
}
public Map<String, String> getHeaders() {
Map<String, String> headers = Json.toMap(getHeader());
if (!getUa().isEmpty()) headers.put(HttpHeaders.USER_AGENT, getUa());

@ -11,8 +11,10 @@ import androidx.room.PrimaryKey;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.gson.ExtAdapter;
import com.github.catvod.crawler.Spider;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Trans;
import com.google.gson.JsonElement;
@ -265,6 +267,15 @@ public class Site implements Parcelable {
return this;
}
public Site recent() {
BaseLoader.get().setRecent(getKey(), getApi(), getJar());
return this;
}
public Spider spider() {
return BaseLoader.get().getSpider(getKey(), getApi(), getExt(), getJar());
}
public static Site find(String key) {
return AppDatabase.get().getSiteDao().find(key);
}

@ -60,9 +60,8 @@ public class LiveViewModel extends ViewModel {
public void getLive(Live item) {
execute(LIVE, () -> {
LiveConfig.get().setRecent(item);
LiveParser.start(item.recent());
setTimeZone(item.getEpg());
LiveParser.start(item);
verify(item);
return item;
});

@ -62,10 +62,9 @@ public class SiteViewModel extends ViewModel {
execute(result, () -> {
Site site = VodConfig.get().getHome();
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
Spider spider = site.recent().spider();
String homeContent = spider.homeContent(true);
SpiderDebug.log(homeContent);
VodConfig.get().setRecent(site);
Result result = Result.fromJson(homeContent);
if (result.getList().size() > 0) return result;
String homeVideoContent = spider.homeVideoContent();
@ -90,10 +89,9 @@ public class SiteViewModel extends ViewModel {
execute(result, () -> {
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
Spider spider = site.recent().spider();
String categoryContent = spider.categoryContent(tid, page, filter, extend);
SpiderDebug.log(categoryContent);
VodConfig.get().setRecent(site);
return Result.fromJson(categoryContent);
} else {
ArrayMap<String, String> params = new ArrayMap<>();
@ -113,10 +111,9 @@ public class SiteViewModel extends ViewModel {
execute(result, () -> {
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
Spider spider = site.recent().spider();
String detailContent = spider.detailContent(Arrays.asList(id));
SpiderDebug.log(detailContent);
VodConfig.get().setRecent(site);
Result result = Result.fromJson(detailContent);
if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags();
if (!result.getList().isEmpty()) Source.get().parse(result.getList().get(0).getVodFlags());
@ -148,10 +145,9 @@ public class SiteViewModel extends ViewModel {
Source.get().stop();
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
Spider spider = site.recent().spider();
String playerContent = spider.playerContent(flag, id, VodConfig.get().getFlags());
SpiderDebug.log(playerContent);
VodConfig.get().setRecent(site);
Result result = Result.fromJson(playerContent);
if (result.getFlag().isEmpty()) result.setFlag(flag);
result.setUrl(Source.get().fetch(result));
@ -195,8 +191,7 @@ public class SiteViewModel extends ViewModel {
public void searchContent(Site site, String keyword, boolean quick) throws Throwable {
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
String searchContent = spider.searchContent(Trans.t2s(keyword), quick);
String searchContent = site.spider().searchContent(Trans.t2s(keyword), quick);
SpiderDebug.log(site.getName() + "," + searchContent);
post(site, Result.fromJson(searchContent));
} else {
@ -212,8 +207,7 @@ public class SiteViewModel extends ViewModel {
public void searchContent(Site site, String keyword, String page) {
execute(result, () -> {
if (site.getType() == 3) {
Spider spider = VodConfig.get().getSpider(site);
String searchContent = spider.searchContent(Trans.t2s(keyword), false, page);
String searchContent = site.spider().searchContent(Trans.t2s(keyword), false, page);
SpiderDebug.log(site.getName() + "," + searchContent);
Result result = Result.fromJson(searchContent);
for (Vod vod : result.getList()) vod.setSite(site);

@ -5,6 +5,7 @@ import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Parse;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.impl.ParseCallback;
@ -120,13 +121,13 @@ public class ParseJob implements ParseCallback {
private void jsonExtend(String webUrl) throws Throwable {
LinkedHashMap<String, String> jxs = new LinkedHashMap<>();
for (Parse item : VodConfig.get().getParses()) if (item.getType() == 1) jxs.put(item.getName(), item.extUrl());
checkResult(Result.fromObject(VodConfig.get().jsonExt(parse.getUrl(), jxs, webUrl)));
checkResult(Result.fromObject(BaseLoader.get().jsonExt(parse.getUrl(), jxs, webUrl)));
}
private void jsonMix(String webUrl, String flag) throws Throwable {
LinkedHashMap<String, HashMap<String, String>> jxs = new LinkedHashMap<>();
for (Parse item : VodConfig.get().getParses()) jxs.put(item.getName(), item.mixMap());
checkResult(Result.fromObject(VodConfig.get().jsonExtMix(flag, parse.getUrl(), parse.getName(), jxs, webUrl)));
checkResult(Result.fromObject(BaseLoader.get().jsonExtMix(flag, parse.getUrl(), parse.getName(), jxs, webUrl)));
}
private void godParse(String webUrl, String flag) throws Exception {

@ -1,7 +1,6 @@
package com.fongmi.android.tv.server.process;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.server.Nano;
import org.nanohttpd.protocols.http.IHTTPSession;
@ -23,7 +22,7 @@ public class Proxy implements Process {
try {
Map<String, String> params = session.getParms();
params.putAll(session.getHeaders());
Object[] rs = isLive(params) ? LiveConfig.get().proxyLocal(params) : VodConfig.get().proxyLocal(params);
Object[] rs = BaseLoader.get().proxyLocal(params);
Response response = Response.newChunkedResponse(Status.lookup((Integer) rs[0]), (String) rs[1], (InputStream) rs[2]);
if (rs.length > 3 && rs[3] != null) for (Map.Entry<String, String> entry : ((Map<String, String>) rs[3]).entrySet()) response.addHeader(entry.getKey(), entry.getValue());
return response;
@ -31,8 +30,4 @@ public class Proxy implements Process {
return Nano.error(e.getMessage());
}
}
private boolean isLive(Map<String, String> params) {
return params.containsKey("live") && "true".equals(params.get("live"));
}
}

@ -21,7 +21,6 @@ import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.impl.ParseCallback;
import com.fongmi.android.tv.ui.dialog.WebDialog;
import com.fongmi.android.tv.utils.Sniffer;
@ -180,8 +179,7 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
private boolean isVideoFormat(String url) {
try {
Logger.t(TAG).d(url);
Site site = VodConfig.get().getSite(key);
Spider spider = VodConfig.get().getSpider(site);
Spider spider = VodConfig.get().getSite(key).spider();
if (spider.manualVideoCheck()) return spider.isVideoFormat(url);
return Sniffer.isVideoFormat(url);
} catch (Exception ignored) {

@ -21,6 +21,7 @@ import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.api.config.WallConfig;
import com.fongmi.android.tv.api.loader.BaseLoader;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.databinding.ActivityMainBinding;
import com.fongmi.android.tv.db.AppDatabase;
@ -218,6 +219,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
@Override
protected void onDestroy() {
super.onDestroy();
BaseLoader.get().clear();
WallConfig.get().clear();
LiveConfig.get().clear();
VodConfig.get().clear();

Loading…
Cancel
Save