diff --git a/app/src/leanback/java/com/fongmi/android/tv/Updater.java b/app/src/leanback/java/com/fongmi/android/tv/Updater.java index 2965d067c..38ed360a9 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Updater.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Updater.java @@ -78,7 +78,7 @@ public class Updater implements Download.Callback { private void doInBackground() { try { - JSONObject object = new JSONObject(OkHttp.newCall(getJson()).execute().body().string()); + JSONObject object = new JSONObject(OkHttp.string(getJson())); String name = object.optString("name"); String desc = object.optString("desc"); int code = object.optInt("code"); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index edde43be9..570451a9f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -461,7 +461,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void checkDanmu(String danmu) { mBinding.danmaku.release(); mBinding.danmaku.setVisibility(danmu.isEmpty() ? View.GONE : View.VISIBLE); - if (danmu.length() > 0) mBinding.danmaku.prepare(new Parser(danmu), mDanmakuContext); + App.execute(() -> { + String temp = danmu; + if (temp.startsWith("http")) temp = OkHttp.string(temp); + if (temp.length() > 0) mBinding.danmaku.prepare(new Parser(temp), mDanmakuContext); + }); } private void setEmpty() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java index 46651e4b5..330e4fafb 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java +++ b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java @@ -58,10 +58,10 @@ public class Decoder { } } - private static String getData(String url) throws Exception { - if (url.startsWith("http")) return OkHttp.newCall(url).execute().body().string(); + private static String getData(String url) { + if (url.startsWith("http")) return OkHttp.string(url); if (url.startsWith("file")) return Path.read(url); - throw new Exception(); + return ""; } private static String ecb(String data, String key) throws Exception { diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index d51176177..9097b45d9 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -103,16 +103,11 @@ public class LiveParser { } private static String getText(String url) { - try { - if (url.startsWith("file")) return Path.read(url); - if (url.startsWith("http")) return OkHttp.newCall(url).execute().body().string(); - if (url.endsWith(".txt") || url.endsWith(".m3u")) return getText(Utils.convert(LiveConfig.getUrl(), url)); - if (url.length() > 0 && url.length() % 4 == 0) return getText(new String(Base64.decode(url, Base64.DEFAULT))); - return ""; - } catch (Exception e) { - e.printStackTrace(); - return ""; - } + if (url.startsWith("file")) return Path.read(url); + if (url.startsWith("http")) return OkHttp.string(url); + if (url.endsWith(".txt") || url.endsWith(".m3u")) return getText(Utils.convert(LiveConfig.getUrl(), url)); + if (url.length() > 0 && url.length() % 4 == 0) return getText(new String(Base64.decode(url, Base64.DEFAULT))); + return ""; } private static class Setting { diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index ee7f7835e..411af704d 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -160,7 +160,6 @@ public class SiteViewModel extends ViewModel { if (result.getFlag().isEmpty()) result.setFlag(flag); result.setUrl(Source.get().fetch(result)); result.setHeader(site.getHeader()); - checkDanmaku(result); result.setKey(key); return result; } else if (site.getType() == 4) { @@ -173,7 +172,6 @@ public class SiteViewModel extends ViewModel { if (result.getFlag().isEmpty()) result.setFlag(flag); result.setUrl(Source.get().fetch(result)); result.setHeader(site.getHeader()); - checkDanmaku(result); return result; } else if (site.isEmpty() && key.equals("push_agent")) { Result result = new Result(); @@ -274,11 +272,6 @@ public class SiteViewModel extends ViewModel { } } - private void checkDanmaku(Result result) throws Exception { - if (result.getDanmaku().isEmpty() || !result.getDanmaku().startsWith("http")) return; - result.setDanmaku(OkHttp.newCall(result.getDanmaku()).execute().body().string()); - } - private void post(Site site, Result result) { if (result.getList().isEmpty()) return; for (Vod vod : result.getList()) vod.setSite(site); diff --git a/app/src/mobile/java/com/fongmi/android/tv/Updater.java b/app/src/mobile/java/com/fongmi/android/tv/Updater.java index b08d470fe..4c510d2a9 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Updater.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Updater.java @@ -79,7 +79,7 @@ public class Updater implements Download.Callback { private void doInBackground() { try { - JSONObject object = new JSONObject(OkHttp.newCall(getJson()).execute().body().string()); + JSONObject object = new JSONObject(OkHttp.string(getJson())); String name = object.optString("name"); String desc = object.optString("desc"); int code = object.optInt("code"); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index a046371f2..de991dd5e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -87,6 +87,7 @@ import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Sniffer; import com.fongmi.android.tv.utils.Traffic; import com.fongmi.android.tv.utils.Utils; +import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Util; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.permissionx.guolindev.PermissionX; @@ -533,7 +534,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void checkDanmu(String danmu) { mBinding.danmaku.release(); mBinding.danmaku.setVisibility(danmu.isEmpty() ? View.GONE : View.VISIBLE); - if (danmu.length() > 0) mBinding.danmaku.prepare(new Parser(danmu), mDanmakuContext); + App.execute(() -> { + String temp = danmu; + if (temp.startsWith("http")) temp = OkHttp.string(temp); + if (temp.length() > 0) mBinding.danmaku.prepare(new Parser(temp), mDanmakuContext); + }); } @Override diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index cf25d43af..a78d4993d 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -79,6 +79,14 @@ public class OkHttp { return redirect ? client(timeout) : noRedirect(timeout); } + public static String string(String url) { + try { + return url.startsWith("http") ? newCall(url).execute().body().string() : ""; + } catch (Exception e) { + return ""; + } + } + public static Call newCall(String url) { Uri uri = Uri.parse(url); if (uri.getUserInfo() != null) return newCall(url, Headers.of(HttpHeaders.AUTHORIZATION, Util.basic(uri)));