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 4c49041ab..774900d80 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 @@ -625,8 +625,14 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void setQualityActivated(Result result) { - mPlayers.start(result, isUseParse(), getSite().isChangeable() ? getSite().getTimeout() : -1); - mBinding.danmaku.hide(); + try { + result.setUrl(Source.get().fetch(result)); + mPlayers.start(result, isUseParse(), getSite().isChangeable() ? getSite().getTimeout() : -1); + mBinding.danmaku.hide(); + } catch (Exception e) { + ErrorEvent.extract(e.getMessage()); + e.printStackTrace(); + } } private void reverseEpisode(boolean scroll) { 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 26d181aa2..1c67441cf 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 @@ -6,6 +6,7 @@ import com.fongmi.android.tv.player.extractor.BiliBili; import com.fongmi.android.tv.player.extractor.Force; import com.fongmi.android.tv.player.extractor.JianPian; import com.fongmi.android.tv.player.extractor.Push; +import com.fongmi.android.tv.player.extractor.Sniffer; import com.fongmi.android.tv.player.extractor.TVBus; import com.fongmi.android.tv.player.extractor.Thunder; import com.fongmi.android.tv.player.extractor.Youtube; @@ -33,6 +34,7 @@ public class Source { extractors.add(new Force()); extractors.add(new JianPian()); extractors.add(new Push()); + extractors.add(new Sniffer()); extractors.add(new Thunder()); extractors.add(new TVBus()); extractors.add(new Youtube()); @@ -50,12 +52,15 @@ public class Source { String url = result.getUrl().v(); Extractor extractor = getExtractor(url); if (extractor != null) result.setParse(0); + if (extractor instanceof Sniffer) result.setParse(1); return extractor == null ? url : extractor.fetch(url); } public String fetch(Channel channel) throws Exception { String url = channel.getCurrent().split("\\$")[0]; Extractor extractor = getExtractor(url); + if (extractor != null) channel.setParse(0); + if (extractor instanceof Sniffer) channel.setParse(1); return extractor == null ? url : extractor.fetch(url); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java new file mode 100644 index 000000000..dd03be331 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java @@ -0,0 +1,24 @@ +package com.fongmi.android.tv.player.extractor; + +import com.fongmi.android.tv.player.Source; + +public class Sniffer implements Source.Extractor { + + @Override + public boolean match(String scheme, String host) { + return scheme.equals("video"); + } + + @Override + public String fetch(String url) throws Exception { + return url.substring(8); + } + + @Override + public void stop() { + } + + @Override + public void exit() { + } +} diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java b/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java index 5b2fe9208..ca20f590c 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java @@ -22,7 +22,7 @@ public class Sniffer { private static final String TAG = Sniffer.class.getSimpleName(); public static final Pattern CLICKER = Pattern.compile("\\[a=cr:(\\{.*?\\})\\/](.*?)\\[\\/a]"); - public static final Pattern AI_PUSH = Pattern.compile("(http|https|rtmp|rtsp|smb|thunder|magnet|ed2k|mitv|tvbox-xg|jianpian):[^\\s]+", Pattern.MULTILINE); + public static final Pattern AI_PUSH = Pattern.compile("(http|https|rtmp|rtsp|smb|thunder|magnet|ed2k|mitv|tvbox-xg|jianpian|video):[^\\s]+", Pattern.MULTILINE); public static final Pattern SNIFFER = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|mkv|flv|mp3|m4a|aac)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|mkv|flv|mp3|m4a|aac)|http((?!http).)*?video/tos*"); public static final List THUNDER = Arrays.asList("thunder", "magnet", "ed2k");