Support video://

pull/180/head
FongMi 2 years ago
parent 740a25b5f9
commit dbc00bec0c
  1. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/player/Source.java
  3. 24
      app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.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) {

@ -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);
}

@ -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() {
}
}

@ -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<String> THUNDER = Arrays.asList("thunder", "magnet", "ed2k");

Loading…
Cancel
Save