diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Flag.java b/app/src/main/java/com/fongmi/android/tv/bean/Flag.java index 0fe46cf59..3168b524d 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Flag.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Flag.java @@ -118,22 +118,24 @@ public class Flag implements Parcelable { return strict ? null : getEpisodes().get(0); } + public static List create(String flag, String name, String url) { + Flag item = Flag.create(flag); + item.getEpisodes().add(Episode.create(name, url)); + return List.of(item); + } + public List getMagnet() { Iterator iterator = getEpisodes().iterator(); List items = new ArrayList<>(); - while (iterator.hasNext()) { - String url = iterator.next().getUrl(); - if (!Sniffer.isThunder(url)) continue; - items.add(Magnet.get(url)); - iterator.remove(); - } + while (iterator.hasNext()) addMagnet(iterator, items); return items; } - public static List create(String flag, String name, String url) { - Flag item = Flag.create(flag); - item.getEpisodes().add(Episode.create(name, url)); - return List.of(item); + private void addMagnet(Iterator iterator, List items) { + String url = iterator.next().getUrl(); + if (!Sniffer.isThunder(url)) return; + items.add(Magnet.get(url)); + iterator.remove(); } @Override 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 f7c236cf1..fc3e58780 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 @@ -156,7 +156,7 @@ public class SiteViewModel extends ViewModel { ApiConfig.get().setRecent(site); Result result = Result.fromJson(playerContent); if (result.getFlag().isEmpty()) result.setFlag(flag); - result.setUrl(Source.get().fetch(result.getUrl().v())); + result.setUrl(Source.get().fetch(result)); result.setKey(key); return result; } else if (site.getType() == 4) { @@ -167,13 +167,13 @@ public class SiteViewModel extends ViewModel { SpiderDebug.log(playerContent); Result result = Result.fromJson(playerContent); if (result.getFlag().isEmpty()) result.setFlag(flag); - result.setUrl(Source.get().fetch(result.getUrl().v())); + result.setUrl(Source.get().fetch(result)); return result; } else if (site.isEmpty() && key.equals("push_agent")) { Result result = new Result(); result.setParse(0); result.setFlag(flag); - result.setUrl(Source.get().fetch(result.getUrl().v())); + result.setUrl(Source.get().fetch(result)); return result; } else { Url url = Url.create().add(id); diff --git a/app/src/main/java/com/fongmi/android/tv/player/Source.java b/app/src/main/java/com/fongmi/android/tv/player/Source.java index 401fe0608..0e01e0c4b 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Source.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Source.java @@ -1,5 +1,6 @@ package com.fongmi.android.tv.player; +import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.player.extractor.BiliBili; import com.fongmi.android.tv.player.extractor.Force; import com.fongmi.android.tv.player.extractor.JianPian; @@ -37,11 +38,23 @@ public class Source { extractors.add(new ZLive()); } - public String fetch(String url) throws Exception { + private Extractor getExtractor(String url) { String host = Util.host(url); String scheme = Util.scheme(url); - for (Extractor extractor : extractors) if (extractor.match(scheme, host)) return extractor.fetch(url.trim()); - return url; + for (Extractor extractor : extractors) if (extractor.match(scheme, host)) return extractor; + return null; + } + + public String fetch(Result result) throws Exception { + String url = result.getUrl().v(); + Extractor extractor = getExtractor(url); + if (extractor != null) result.setParse(0); + return extractor == null ? url : extractor.fetch(url.trim()); + } + + public String fetch(String url) throws Exception { + Extractor extractor = getExtractor(url); + return extractor == null ? url : extractor.fetch(url.trim()); } public void stop() { diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java index 6a7ddd823..e9bbcd666 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java @@ -1,6 +1,5 @@ package com.fongmi.android.tv.utils; -import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; @@ -86,12 +85,8 @@ public class ResUtil { return e.getRawX() < edge || e.getRawX() > getScreenWidthNav() - edge || e.getRawY() < edge || e.getRawY() > getScreenHeightNav() - edge; } - public static boolean isLand(Activity activity) { - return activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; - } - - public static boolean isPort(Activity activity) { - return activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; + public static boolean isLand() { + return App.get().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } public static int sp2px(int sp) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index c3ce7b548..2fd3c2bed 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -301,7 +301,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void onRotate() { setR1Callback(); setRotate(!isRotate()); - setRequestedOrientation(ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); + setRequestedOrientation(ResUtil.isLand() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } private void onTrack(View view) { 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 92566a387..a07c6f26e 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 @@ -371,7 +371,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void setVideoView() { mPlayers.set(getExo(), getIjk()); - if (isPort() && ResUtil.isLand(this)) enterFullscreen(); + if (isPort() && ResUtil.isLand()) enterFullscreen(); getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); getIjk().getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); setSubtitle(14); @@ -666,7 +666,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void onRotate() { setR1Callback(); setRotate(!isRotate()); - setRequestedOrientation(ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); + setRequestedOrientation(ResUtil.isLand() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } private void onSetting() { @@ -830,13 +830,13 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private int getLockOrient() { if (isLock()) { - return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; + return ResUtil.isLand() ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; } else if (isRotate()) { return ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; } else if (isPort() && Utils.isAutoRotate()) { return ActivityInfo.SCREEN_ORIENTATION_FULL_USER; } else { - return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; + return ResUtil.isLand() ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; } }