pull/605/head
jhengazuki 5 months ago
parent e0149a0061
commit 2e5307cbfc
  1. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/bean/Danmaku.java
  3. 8
      app/src/main/java/com/fongmi/android/tv/bean/Drm.java
  4. 8
      app/src/main/java/com/fongmi/android/tv/bean/Sub.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/bean/Value.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java
  7. 26
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  8. 3
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  9. 2
      app/src/main/java/com/fongmi/android/tv/player/danmaku/DanPlayer.java
  10. 2
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  11. 4
      catvod/src/main/java/com/github/catvod/crawler/SpiderDebug.java

@ -106,7 +106,7 @@ public class App extends Application {
}
private LogAdapter getLogAdapter() {
return new AndroidLogAdapter(PrettyFormatStrategy.newBuilder().methodCount(0).showThreadInfo(false).tag("").build()) {
return new AndroidLogAdapter(PrettyFormatStrategy.newBuilder().methodCount(0).showThreadInfo(false).tag("TV").build()) {
@Override
public boolean isLoggable(int priority, String tag) {
return true;

@ -2,8 +2,10 @@ package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.fongmi.android.tv.App;
import com.google.gson.annotations.SerializedName;
public class Danmaku {
@ -60,4 +62,10 @@ public class Danmaku {
if (!(obj instanceof Danmaku it)) return false;
return getUrl().equals(it.getUrl());
}
@NonNull
@Override
public String toString() {
return App.gson().toJson(this);
}
}

@ -2,9 +2,11 @@ package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import com.fongmi.android.tv.App;
import com.github.catvod.utils.Json;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -62,4 +64,10 @@ public class Drm {
builder.setLicenseUri(getKey());
return builder.build();
}
@NonNull
@Override
public String toString() {
return App.gson().toJson(this);
}
}

@ -3,10 +3,12 @@ package com.fongmi.android.tv.bean;
import android.net.Uri;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.player.exo.ExoUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.utils.Trans;
@ -70,4 +72,10 @@ public class Sub {
if (!(obj instanceof Sub it)) return false;
return getUrl().equals(it.getUrl());
}
@NonNull
@Override
public String toString() {
return App.gson().toJson(this);
}
}

@ -17,7 +17,7 @@ public class Value implements Parcelable, Diffable<Value> {
@SerializedName("v")
private String v;
private boolean activated;
private transient boolean activated;
public Value() {
}

@ -41,7 +41,7 @@ public class SearchCallable implements Callable<Result> {
boolean hasPage = !page.equals("1");
if (site.getType() == 3) {
String searchContent = hasPage ? site.spider().searchContent(keyword, quick, page) : site.spider().searchContent(keyword, quick);
SpiderDebug.log(site.getName() + "," + searchContent);
SpiderDebug.log("search", "site=%s,keyword=%s,quick=%s,page=%s\n%s", site.getName(), keyword, quick, page, searchContent.trim());
Result result = Result.fromJson(searchContent);
for (Vod vod : result.getList()) vod.setSite(site);
return result;
@ -52,7 +52,7 @@ public class SearchCallable implements Callable<Result> {
params.put("extend", "");
if (hasPage) params.put("pg", page);
String searchContent = model.call(site, params);
SpiderDebug.log(site.getName() + "," + searchContent);
SpiderDebug.log("search", "site=%s,keyword=%s,quick=%s,page=%s\n%s", site.getName(), keyword, quick, page, searchContent.trim());
Result result = model.fetchPic(site, Result.fromType(site.getType(), searchContent));
for (Vod vod : result.getList()) vod.setSite(site);
return result;

@ -83,23 +83,23 @@ public class SiteViewModel extends ViewModel {
boolean crash = Prefers.getBoolean("crash");
String homeContent = crash ? "" : spider.homeContent(true);
Prefers.put("crash", false);
SpiderDebug.log(homeContent);
SpiderDebug.log("home", homeContent);
Result result = Result.fromJson(homeContent);
if (!result.getList().isEmpty()) return result;
String homeVideoContent = spider.homeVideoContent();
SpiderDebug.log(homeVideoContent);
SpiderDebug.log("homeVideo", homeVideoContent);
result.setList(Result.fromJson(homeVideoContent).getList());
return result;
} else if (site.getType() == 4) {
ArrayMap<String, String> params = new ArrayMap<>();
params.put("filter", "true");
String homeContent = call(site.fetchExt(), params);
SpiderDebug.log(homeContent);
SpiderDebug.log("home", homeContent);
return Result.fromJson(homeContent);
} else {
try (Response response = OkHttp.newCall(site.getApi(), site.getHeaders()).execute()) {
String homeContent = response.body().string();
SpiderDebug.log(homeContent);
SpiderDebug.log("home", homeContent);
return fetchPic(site, Result.fromType(site.getType(), homeContent));
}
}
@ -107,12 +107,13 @@ public class SiteViewModel extends ViewModel {
}
public void categoryContent(String key, String tid, String page, boolean filter, HashMap<String, String> extend) {
SpiderDebug.log("category", "key=%s,tid=%s,page=%s,filter=%s,extend=%s", key, tid, page, filter, extend);
execute(result, () -> {
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = site.recent().spider();
String categoryContent = spider.categoryContent(tid, page, filter, extend);
SpiderDebug.log(categoryContent);
SpiderDebug.log("category", categoryContent);
return Result.fromJson(categoryContent);
} else {
ArrayMap<String, String> params = new ArrayMap<>();
@ -122,19 +123,20 @@ public class SiteViewModel extends ViewModel {
params.put("t", tid);
params.put("pg", page);
String categoryContent = call(site, params);
SpiderDebug.log(categoryContent);
SpiderDebug.log("category", categoryContent);
return Result.fromType(site.getType(), categoryContent);
}
});
}
public void detailContent(String key, String id) {
SpiderDebug.log("detail", "key=%s,id=%s", key, id);
execute(result, () -> {
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = site.recent().spider();
String detailContent = spider.detailContent(Arrays.asList(id));
SpiderDebug.log(detailContent);
SpiderDebug.log("detail", detailContent);
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());
@ -152,7 +154,7 @@ public class SiteViewModel extends ViewModel {
params.put("ac", site.getType() == 0 ? "videolist" : "detail");
params.put("ids", id);
String detailContent = call(site, params);
SpiderDebug.log(detailContent);
SpiderDebug.log("detail", detailContent);
Result result = Result.fromType(site.getType(), detailContent);
if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags();
if (!result.getList().isEmpty()) Source.get().parse(result.getList().get(0).getVodFlags());
@ -162,13 +164,14 @@ public class SiteViewModel extends ViewModel {
}
public void playerContent(String key, String flag, String id) {
SpiderDebug.log("player", "key=%s,flag=%s,id=%s", key, flag, id);
execute(player, () -> {
Source.get().stop();
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) {
Spider spider = site.recent().spider();
String playerContent = spider.playerContent(flag, id, VodConfig.get().getFlags());
SpiderDebug.log(playerContent);
SpiderDebug.log("player", playerContent);
Result result = Result.fromJson(playerContent);
if (result.getFlag().isEmpty()) result.setFlag(flag);
result.setUrl(Source.get().fetch(result));
@ -180,7 +183,7 @@ public class SiteViewModel extends ViewModel {
params.put("play", id);
params.put("flag", flag);
String playerContent = call(site, params);
SpiderDebug.log(playerContent);
SpiderDebug.log("player", playerContent);
Result result = Result.fromJson(playerContent);
if (result.getFlag().isEmpty()) result.setFlag(flag);
result.setUrl(Source.get().fetch(result));
@ -202,7 +205,7 @@ public class SiteViewModel extends ViewModel {
result.setPlayUrl(site.getPlayUrl());
result.setParse(Sniffer.isVideoFormat(url.v()) && result.getPlayUrl().isEmpty() ? 0 : 1);
result.setUrl(Source.get().fetch(result));
SpiderDebug.log(result.toString());
SpiderDebug.log("player", result.toString());
return result;
}
});
@ -220,6 +223,7 @@ public class SiteViewModel extends ViewModel {
}
public void action(String key, String action) {
SpiderDebug.log("action", "key=%s,action=%s", key, action);
execute(this.action, () -> {
Site site = VodConfig.get().getSite(key);
if (site.getType() == 3) return Result.fromJson(site.recent().spider().action(action));

@ -494,11 +494,11 @@ public class Players implements Player.Listener, ParseCallback {
private void setMediaItem(Map<String, String> headers, String url, String format, Drm drm, List<Sub> subs, List<Danmaku> danmakus, long timeout) {
if (exoPlayer != null) exoPlayer.setMediaItem(ExoUtil.getMediaItem(this.headers = checkUa(headers), UrlUtil.uri(this.url = url), this.format = format, this.drm = drm, checkSub(this.subs = subs), decode));
Logger.t(TAG).d("headers=%s\nurl=%s\nformat=%s\ndrm=%s\nsubs=%s\ndanmakus=%s\ntimeout=%s", this.headers, url, format, drm, this.subs, danmakus, timeout);
if (danPlayer != null) setDanmaku(this.danmakus = danmakus);
App.post(runnable, timeout);
PlayerEvent.prepare(tag);
session.setActive(true);
Logger.t(TAG).d(url);
prepare();
}
@ -684,7 +684,6 @@ public class Players implements Player.Listener, ParseCallback {
@Override
public void onPlayerError(@NonNull PlaybackException error) {
Logger.t(TAG).e(error.errorCode + "," + url);
if (retried()) ErrorEvent.extract(tag, provider.get(error));
else switch (error.errorCode) {
case PlaybackException.ERROR_CODE_BEHIND_LIVE_WINDOW:

@ -6,7 +6,6 @@ import com.fongmi.android.tv.App;
import com.fongmi.android.tv.bean.Danmaku;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.utils.ResUtil;
import com.orhanobut.logger.Logger;
import java.util.HashMap;
@ -83,7 +82,6 @@ public class DanPlayer implements DrawHandler.Callback {
App.execute(() -> {
view.release();
if (item.isEmpty()) return;
Logger.t(TAG).d(item.getUrl());
view.prepare(new Parser().load(new Loader(item).getDataSource()), context);
});
}

@ -28,7 +28,6 @@ import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.crawler.Spider;
import com.github.catvod.utils.Util;
import com.google.common.net.HttpHeaders;
import com.orhanobut.logger.Logger;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
@ -193,7 +192,6 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
private boolean isVideoFormat(String url) {
try {
Logger.t(TAG).d(url);
if (!detect && url.equals(this.url)) return false;
Spider spider = VodConfig.get().getSite(key).spider();
if (spider.manualVideoCheck()) return spider.isVideoFormat(url);

@ -15,4 +15,8 @@ public class SpiderDebug {
public static void log(String msg) {
if (!TextUtils.isEmpty(msg)) Logger.t(TAG).d(msg);
}
public static void log(String tag, String msg, Object... args) {
if (!TextUtils.isEmpty(msg)) Logger.t(tag).d(msg, args);
}
}

Loading…
Cancel
Save