diff --git a/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java b/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java index 292b75077..0d62aaf48 100644 --- a/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java +++ b/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java @@ -3,7 +3,6 @@ package com.fongmi.android.tv.impl; import androidx.annotation.NonNull; import com.github.catvod.net.OkHttp; -import com.github.catvod.utils.Util; import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.downloader.Request; @@ -19,6 +18,8 @@ import okhttp3.ResponseBody; public final class NewPipeImpl extends Downloader { + public static final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"; + private static class Loader { static volatile NewPipeImpl INSTANCE = new NewPipeImpl(); } @@ -39,7 +40,7 @@ public final class NewPipeImpl extends Downloader { requestBody = RequestBody.create(null, dataToSend); } - okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder().method(httpMethod, requestBody).url(url).addHeader("User-Agent", Util.CHROME); + okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder().method(httpMethod, requestBody).url(url).addHeader("User-Agent", USER_AGENT); for (Map.Entry> pair : headers.entrySet()) { String headerName = pair.getKey(); diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java index a3a818f24..2f216c774 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java @@ -49,7 +49,17 @@ public class Youtube implements Source.Extractor { YoutubeStreamExtractor extractor = new YoutubeStreamExtractor(ServiceList.YouTube, handler); extractor.forceLocalization(NewPipe.getPreferredLocalization()); extractor.fetchPage(); - return StreamType.LIVE_STREAM.equals(extractor.getStreamType()) ? extractor.getHlsUrl() : getMpd(extractor); + return StreamType.LIVE_STREAM.equals(extractor.getStreamType()) ? getLive(extractor) : getMpd(extractor); + } + + private String getLive(YoutubeStreamExtractor extractor) throws Exception { + if (!extractor.getHlsUrl().isEmpty()) { + return extractor.getHlsUrl(); + } else if (!extractor.getDashMpdUrl().isEmpty()) { + return extractor.getDashMpdUrl(); + } else { + return ""; + } } private String getMpd(YoutubeStreamExtractor extractor) throws Exception {