pull/149/head
FongMi 3 years ago
parent 2b14e40444
commit d2a6efb53b
  1. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 7
      app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  4. 10
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/player/Source.java
  6. 2
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  7. 15
      catvod/src/main/java/com/github/catvod/utils/Util.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(url);
Uri uri = Uri.parse(Util.fixUrl(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));

@ -7,6 +7,7 @@ import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.utils.Util;
import java.net.URLEncoder;
import java.util.Map;
@ -24,9 +25,9 @@ public class IjkUtil {
}
public static MediaSource getSource(Map<String, String> headers, String url) {
Uri uri = Uri.parse(url);
boolean local = Sniffer.getRegex(uri).size() > 0;
if (local) uri = Uri.parse(Server.get().getAddress().concat("/m3u8?url=").concat(URLEncoder.encode(url)));
Uri uri = Uri.parse(Util.fixUrl(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(Utils.checkUa(headers), uri);
}
}

@ -183,7 +183,7 @@ public class ParseJob implements ParseCallback {
private Map<String, String> getHeader(JsonObject object) {
Map<String, String> headers = new HashMap<>();
for (String key : object.keySet()) if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT) || key.equalsIgnoreCase(HttpHeaders.REFERER)) headers.put(Util.fix(key), object.get(key).getAsString());
for (String key : object.keySet()) if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT) || key.equalsIgnoreCase(HttpHeaders.REFERER)) headers.put(Util.fixHeader(key), object.get(key).getAsString());
if (headers.isEmpty()) return parse.getHeaders();
return headers;
}

@ -13,7 +13,6 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.common.util.Util;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.analytics.AnalyticsListener;
import androidx.media3.exoplayer.util.EventLogger;
@ -33,6 +32,7 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.utils.Path;
import com.github.catvod.utils.Util;
import com.orhanobut.logger.Logger;
import java.util.Formatter;
@ -177,7 +177,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
public String stringToTime(long time) {
return Util.getStringForTime(builder, formatter, time);
return Util.format(builder, formatter, time);
}
public float getSpeed() {
@ -486,9 +486,9 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
private boolean isIllegal(String url) {
Uri uri = Uri.parse(url);
String host = com.github.catvod.utils.Util.host(uri);
String scheme = com.github.catvod.utils.Util.scheme(uri);
Uri uri = Uri.parse(Util.fixUrl(url));
String host = Util.host(uri);
String scheme = Util.scheme(uri);
return scheme.isEmpty() || scheme.equals("file") ? !Path.exists(url) : host.isEmpty();
}

@ -48,7 +48,6 @@ public class Source {
public String fetch(Result result) throws Exception {
String url = result.getUrl().v();
url = url.trim().replace("\\", "");
Extractor extractor = getExtractor(url);
if (extractor != null) result.setParse(0);
return extractor == null ? url : extractor.fetch(url);
@ -56,7 +55,6 @@ public class Source {
public String fetch(Channel channel) throws Exception {
String url = channel.getCurrent().split("\\$")[0];
url = url.trim().replace("\\", "");
Extractor extractor = getExtractor(url);
return extractor == null ? url : extractor.fetch(url);
}

@ -81,7 +81,7 @@ public class ImgUtil {
private static void addHeader(LazyHeaders.Builder builder, String header) {
Map<String, String> map = Json.toMap(JsonParser.parseString(header));
for (Map.Entry<String, String> entry : map.entrySet()) builder.addHeader(Util.fix(entry.getKey()), entry.getValue());
for (Map.Entry<String, String> entry : map.entrySet()) builder.addHeader(Util.fixHeader(entry.getKey()), entry.getValue());
}
public static byte[] resize(byte[] bytes) {

@ -16,6 +16,7 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Formatter;
public class Util {
@ -125,7 +126,19 @@ public class Util {
}
}
public static String fix(String key) {
public static String format(StringBuilder builder, Formatter formatter, long timeMs) {
try {
return androidx.media3.common.util.Util.getStringForTime(builder, formatter, timeMs);
} catch (Exception e) {
return "";
}
}
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;
if (key.equalsIgnoreCase(HttpHeaders.COOKIE)) return HttpHeaders.COOKIE;

Loading…
Cancel
Save