pull/605/head
jhengazuki 5 months ago
parent f77ee5041f
commit 6cf4b89e59
  1. 35
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  2. 60
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  3. 6
      app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/bean/Filter.java
  5. 19
      app/src/main/java/com/fongmi/android/tv/bean/Live.java
  6. 6
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  7. 21
      app/src/main/java/com/fongmi/android/tv/bean/Site.java
  8. 3
      app/src/main/java/com/fongmi/android/tv/db/dao/SiteDao.java

@ -2,7 +2,6 @@ package com.fongmi.android.tv.api.config;
import android.net.Uri; import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R; import com.fongmi.android.tv.R;
@ -26,24 +25,26 @@ import com.github.catvod.bean.Header;
import com.github.catvod.bean.Proxy; import com.github.catvod.bean.Proxy;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json; import com.github.catvod.utils.Json;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.function.Function;
import java.util.stream.Collectors;
public class LiveConfig { public class LiveConfig {
private volatile Live home; private Live home;
private volatile Config config; private Config config;
private volatile List<Live> lives; private List<Live> lives;
private volatile List<Rule> rules; private List<Rule> rules;
private volatile List<String> ads; private List<String> ads;
private volatile Future<?> future; private Future<?> future;
private volatile boolean sync; private boolean sync;
private static class Loader { private static class Loader {
static volatile LiveConfig INSTANCE = new LiveConfig(); static volatile LiveConfig INSTANCE = new LiveConfig();
@ -179,18 +180,14 @@ public class LiveConfig {
} }
private void initLive(JsonObject object) { private void initLive(JsonObject object) {
List<Live> lives = new ArrayList<>();
String spider = Json.safeString(object, "spider"); String spider = Json.safeString(object, "spider");
BaseLoader.get().parseJar(spider, false); BaseLoader.get().parseJar(spider, false);
for (JsonElement element : Json.safeListElement(object, "lives")) { setLives(Json.safeListElement(object, "lives").stream().map(element -> Live.objectFrom(element, spider)).distinct().toList());
Live live = Live.objectFrom(element, spider); Map<String, Live> items = Live.findAll().stream().collect(Collectors.toMap(Live::getName, Function.identity()));
if (!lives.contains(live)) lives.add(live); for (Live live : getLives()) {
} if (live.getName().equals(config.getHome())) setHome(live, true);
setLives(lives); Live item = items.get(live.getName());
for (Live live : lives) { if (item != null) live.sync(item);
if (live.getName().equals(config.getHome())) {
setHome(live, true);
}
} }
} }

@ -19,28 +19,30 @@ import com.github.catvod.bean.Header;
import com.github.catvod.bean.Proxy; import com.github.catvod.bean.Proxy;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json; import com.github.catvod.utils.Json;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.function.Function;
import java.util.stream.Collectors;
public class VodConfig { public class VodConfig {
private volatile Site home; private Site home;
private volatile String wall; private String wall;
private volatile Parse parse; private Parse parse;
private volatile Config config; private Config config;
private volatile List<Doh> doh; private List<Doh> doh;
private volatile List<Rule> rules; private List<Rule> rules;
private volatile List<Site> sites; private List<Site> sites;
private volatile List<String> ads; private List<String> ads;
private volatile List<String> flags; private List<String> flags;
private volatile List<Parse> parses; private List<Parse> parses;
private volatile Future<?> future; private Future<?> future;
private volatile boolean loadLive; private boolean loadLive;
private static class Loader { private static class Loader {
static volatile VodConfig INSTANCE = new VodConfig(); static volatile VodConfig INSTANCE = new VodConfig();
@ -170,33 +172,25 @@ public class VodConfig {
} }
private void initSite(JsonObject object) { private void initSite(JsonObject object) {
if (object.has("video")) {
initSite(object.getAsJsonObject("video"));
return;
}
List<Site> sites = new ArrayList<>();
String spider = Json.safeString(object, "spider"); String spider = Json.safeString(object, "spider");
BaseLoader.get().parseJar(spider, true); BaseLoader.get().parseJar(spider, true);
for (JsonElement element : Json.safeListElement(object, "sites")) { setSites(Json.safeListElement(object, "sites").stream().map(element -> Site.objectFrom(element, spider)).distinct().toList());
Site site = Site.objectFrom(element, spider); Map<String, Site> items = Site.findAll().stream().collect(Collectors.toMap(Site::getKey, Function.identity()));
if (!sites.contains(site)) sites.add(site); for (Site site : getSites()) {
} if (site.getKey().equals(config.getHome())) setHome(site);
setSites(sites); Site item = items.get(site.getKey());
for (Site site : sites) { if (item != null) site.sync(item);
if (site.getKey().equals(config.getHome())) {
setHome(site);
}
} }
} }
private void initParse(JsonObject object) { private void initParse(JsonObject object) {
List<Parse> parses = new ArrayList<>(); setParses(Json.safeListElement(object, "parses").stream().map(Parse::objectFrom).distinct().toList());
for (JsonElement element : Json.safeListElement(object, "parses")) { for (Parse parse : getParses()) {
Parse parse = Parse.objectFrom(element); if (parse.getName().equals(config.getParse()) && parse.getType() > 1) {
if (parse.getName().equals(config.getParse()) && parse.getType() > 1) setParse(parse); setParse(parse);
if (!parses.contains(parse)) parses.add(parse); break;
}
} }
setParses(parses);
} }
private void initOther(JsonObject object) { private void initOther(JsonObject object) {

@ -27,9 +27,9 @@ import java.util.concurrent.Future;
public class WallConfig { public class WallConfig {
private volatile Config config; private Config config;
private volatile Future<?> future; private Future<?> future;
private volatile boolean sync; private boolean sync;
private static class Loader { private static class Loader {
static volatile WallConfig INSTANCE = new WallConfig(); static volatile WallConfig INSTANCE = new WallConfig();

@ -70,7 +70,7 @@ public class Filter implements Parcelable {
public Filter trans() { public Filter trans() {
if (Trans.pass()) return this; if (Trans.pass()) return this;
for (Value value : getValue()) value.trans(); getValue().forEach(Value::trans);
return this; return this;
} }

@ -17,6 +17,7 @@ import com.fongmi.android.tv.gson.ExtAdapter;
import com.fongmi.android.tv.utils.UrlUtil; import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.utils.Json; import com.github.catvod.utils.Json;
import com.github.catvod.utils.Trans;
import com.google.common.net.HttpHeaders; import com.google.common.net.HttpHeaders;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.JsonAdapter;
@ -121,7 +122,7 @@ public class Live {
if (live.getJar().isEmpty()) live.setJar(spider); if (live.getJar().isEmpty()) live.setJar(spider);
live.setApi(UrlUtil.convert(live.getApi())); live.setApi(UrlUtil.convert(live.getApi()));
live.setExt(UrlUtil.convert(live.getExt())); live.setExt(UrlUtil.convert(live.getExt()));
return live.sync(); return live.trans();
} catch (Exception e) { } catch (Exception e) {
return new Live(); return new Live();
} }
@ -322,9 +323,19 @@ public class Live {
return this; return this;
} }
public Live trans() {
if (Trans.pass()) return this;
setName(Trans.s2t(getName()));
return this;
}
public Live sync() { public Live sync() {
Live item = find(getName()); Live item = find(getName());
if (item == null) return this; if (item != null) sync(item);
return this;
}
public Live sync(Live item) {
setBoot(item.isBoot()); setBoot(item.isBoot());
setPass(item.isPass()); setPass(item.isPass());
setKeep(item.getKeep()); setKeep(item.getKeep());
@ -348,6 +359,10 @@ public class Live {
return headers; return headers;
} }
public static List<Live> findAll() {
return AppDatabase.get().getLiveDao().findAll();
}
public static Live find(String name) { public static Live find(String name) {
return AppDatabase.get().getLiveDao().find(name); return AppDatabase.get().getLiveDao().find(name);
} }

@ -306,9 +306,9 @@ public class Result implements Parcelable {
public Result trans() { public Result trans() {
if (Trans.pass()) return this; if (Trans.pass()) return this;
for (Class type : getTypes()) type.trans(); getTypes().forEach(Class::trans);
for (Vod vod : getList()) vod.trans(); getList().forEach(Vod::trans);
for (Sub sub : getSubs()) sub.trans(); getSubs().forEach(Sub::trans);
return this; return this;
} }

@ -24,7 +24,6 @@ import com.google.gson.JsonElement;
import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -111,7 +110,7 @@ public class Site implements Parcelable {
if (site.getJar().isEmpty()) site.setJar(spider); if (site.getJar().isEmpty()) site.setJar(spider);
site.setApi(UrlUtil.convert(site.getApi())); site.setApi(UrlUtil.convert(site.getApi()));
site.setExt(UrlUtil.convert(site.getExt())); site.setExt(UrlUtil.convert(site.getExt()));
return site.trans().sync(); return site.trans();
} catch (Exception e) { } catch (Exception e) {
return new Site(); return new Site();
} }
@ -296,15 +295,12 @@ public class Site implements Parcelable {
public Site trans() { public Site trans() {
if (Trans.pass()) return this; if (Trans.pass()) return this;
List<String> categories = new ArrayList<>(); setName(Trans.s2t(getName()));
for (String cate : getCategories()) categories.add(Trans.s2t(cate)); setCategories(getCategories().stream().map(Trans::s2t).toList());
setCategories(categories);
return this; return this;
} }
public Site sync() { public Site sync(Site item) {
Site item = find(getKey());
if (item == null) return this;
if (getChangeable() != 0) setChangeable(Math.max(1, item.getChangeable())); if (getChangeable() != 0) setChangeable(Math.max(1, item.getChangeable()));
if (getSearchable() != 0) setSearchable(Math.max(1, item.getSearchable())); if (getSearchable() != 0) setSearchable(Math.max(1, item.getSearchable()));
return this; return this;
@ -319,8 +315,8 @@ public class Site implements Parcelable {
return BaseLoader.get().getSpider(getKey(), getApi(), getExt(), getJar()); return BaseLoader.get().getSpider(getKey(), getApi(), getExt(), getJar());
} }
public static Site find(String key) { public static List<Site> findAll() {
return AppDatabase.get().getSiteDao().find(key); return AppDatabase.get().getSiteDao().findAll();
} }
public void save() { public void save() {
@ -334,6 +330,11 @@ public class Site implements Parcelable {
return getKey().equals(it.getKey()); return getKey().equals(it.getKey());
} }
@Override
public int hashCode() {
return getKey().hashCode();
}
@Override @Override
public int describeContents() { public int describeContents() {
return 0; return 0;

@ -12,7 +12,4 @@ public abstract class SiteDao extends BaseDao<Site> {
@Query("SELECT * FROM Site") @Query("SELECT * FROM Site")
public abstract List<Site> findAll(); public abstract List<Site> findAll();
@Query("SELECT * FROM Site WHERE `key` = :key")
public abstract Site find(String key);
} }

Loading…
Cancel
Save