pull/171/head
FongMi 2 years ago
parent 6f5b1dcf2c
commit e08ff945fb
  1. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 6
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  5. 10
      app/src/main/java/com/fongmi/android/tv/utils/UrlUtil.java

@ -117,7 +117,7 @@ public class ExoUtil {
}
private static MediaSource getSource(Map<String, String> headers, String url, String format, List<Sub> subs, Drm drm, int errorCode) {
Uri uri = Uri.parse(UrlUtil.fixUrl(url));
Uri uri = UrlUtil.uri(url);
String mimeType = getMimeType(format, errorCode);
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm));

@ -24,7 +24,7 @@ public class IjkUtil {
}
public static MediaSource getSource(Map<String, String> headers, String url) {
Uri uri = Uri.parse(UrlUtil.fixUrl(url));
Uri uri = UrlUtil.uri(url);
boolean m3u8Ad = Sniffer.getRegex(uri).size() > 0;
if (m3u8Ad) uri = Uri.parse(Server.get().getAddress().concat("/m3u8?url=").concat(URLEncoder.encode(uri.toString())));
return new MediaSource(Players.checkUa(headers), uri);

@ -492,7 +492,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
private boolean isIllegal(String url) {
Uri uri = Uri.parse(UrlUtil.fixUrl(url));
Uri uri = UrlUtil.uri(url);
String host = Util.host(uri);
String scheme = Util.scheme(uri);
if (scheme.equals("data")) return false;

@ -42,14 +42,14 @@ public class Sniffer {
public static boolean isVideoFormat(String url, Map<String, String> headers) {
Logger.t(TAG).d(url);
if (matchOrContain(url)) return true;
if (containOrMatch(url)) return true;
if (headers.containsKey("Accept") && headers.get("Accept").startsWith("image")) return false;
if (url.contains("url=http") || url.contains("v=http") || url.contains(".css") || url.contains(".html")) return false;
return url.matches(RULE);
}
private static boolean matchOrContain(String url) {
List<String> items = getRegex(Uri.parse(url));
private static boolean containOrMatch(String url) {
List<String> items = getRegex(UrlUtil.uri(url));
for (String regex : items) if (url.contains(regex)) return true;
for (String regex : items) if (url.matches(regex)) return true;
return false;

@ -1,5 +1,7 @@
package com.fongmi.android.tv.utils;
import android.net.Uri;
import androidx.media3.common.util.UriUtil;
import com.fongmi.android.tv.server.Server;
@ -8,6 +10,10 @@ import com.google.common.net.HttpHeaders;
public class UrlUtil {
public static Uri uri(String url) {
return Uri.parse(url.trim().replace("\\", ""));
}
public static String checkClan(String url) {
if (url.contains("/localhost/")) url = url.replace("/localhost/", "/");
if (url.startsWith("clan")) url = url.replace("clan", "file");
@ -28,10 +34,6 @@ public class UrlUtil {
return url;
}
public static String fixUrl(String url) {
return url.trim().replace("\\", "");
}
public static String fixHeader(String key) {
if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT)) return HttpHeaders.USER_AGENT;
if (key.equalsIgnoreCase(HttpHeaders.REFERER)) return HttpHeaders.REFERER;

Loading…
Cancel
Save