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

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

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

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

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

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

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

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

Loading…
Cancel
Save