Fix header bug

pull/137/head
FongMi 3 years ago
parent 9130f182fd
commit 51d00551fd
  1. 3
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 3
      app/src/main/java/com/fongmi/android/tv/player/IjkUtil.java
  3. 11
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 8
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java

@ -41,6 +41,7 @@ import com.fongmi.android.tv.bean.Sub;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.net.OkHttp;
import com.google.common.net.HttpHeaders;
@ -154,7 +155,7 @@ public class ExoUtil {
private static synchronized DataSource.Factory getDataSourceFactory(Map<String, String> headers) {
if (dataSourceFactory == null) dataSourceFactory = buildReadOnlyCacheDataSource(new DefaultDataSource.Factory(App.get(), getHttpDataSourceFactory()), getCache());
httpDataSourceFactory.setDefaultRequestProperties(headers);
httpDataSourceFactory.setDefaultRequestProperties(Utils.checkHeaders(headers));
return dataSourceFactory;
}

@ -5,6 +5,7 @@ import android.net.Uri;
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 java.util.Map;
@ -19,6 +20,6 @@ public class IjkUtil {
public static MediaSource getSource(Map<String, String> headers, String url) {
Uri uri = Uri.parse(url.trim().replace("\\", ""));
if (Sniffer.isAds(uri)) uri = Uri.parse(Server.get().getAddress(true).concat("/m3u8?url=").concat(url));
return new MediaSource(headers, uri);
return new MediaSource(Utils.checkHeaders(headers), uri);
}
}

@ -22,7 +22,6 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.crawler.SpiderDebug;
import com.google.common.net.HttpHeaders;
import java.util.Formatter;
import java.util.List;
@ -326,14 +325,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
if (parseJob != null) parseJob.stop();
}
private Map<String, String> checkHeaders(Map<String, String> headers) {
if (Prefers.getUa().isEmpty() || headers.containsKey(HttpHeaders.USER_AGENT) || headers.containsKey(HttpHeaders.USER_AGENT.toLowerCase())) return headers;
headers.put(HttpHeaders.USER_AGENT, Prefers.getUa());
return headers;
}
private void setMediaSource(Result result) {
SpiderDebug.log(errorCode + "," + result.getRealUrl() + "," + checkHeaders(result.getHeaders()));
SpiderDebug.log(errorCode + "," + result.getRealUrl());
if (isIjk()) ijkPlayer.setMediaSource(IjkUtil.getSource(result));
if (isExo()) exoPlayer.setMediaSource(ExoUtil.getSource(result, errorCode));
if (isExo()) exoPlayer.prepare();
@ -341,7 +334,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
private void setMediaSource(Map<String, String> headers, String url) {
SpiderDebug.log(errorCode + "," + url + "," + checkHeaders(headers));
SpiderDebug.log(errorCode + "," + url);
if (isIjk()) ijkPlayer.setMediaSource(IjkUtil.getSource(headers, url));
if (isExo()) exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, errorCode));
if (isExo()) exoPlayer.prepare();

@ -20,12 +20,14 @@ import androidx.media3.common.util.UriUtil;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.server.Server;
import com.google.common.net.HttpHeaders;
import com.permissionx.guolindev.PermissionX;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Map;
public class Utils {
@ -91,6 +93,12 @@ public class Utils {
return PermissionX.isGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
public static Map<String, String> checkHeaders(Map<String, String> headers) {
if (Prefers.getUa().isEmpty() || headers.containsKey(HttpHeaders.USER_AGENT) || headers.containsKey(HttpHeaders.USER_AGENT.toLowerCase())) return headers;
headers.put(HttpHeaders.USER_AGENT, Prefers.getUa());
return headers;
}
public static String checkProxy(String url) {
if (url.startsWith("proxy://")) return url.replace("proxy://", Server.get().getAddress("proxy?"));
return url;

Loading…
Cancel
Save