diff --git a/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java b/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java index 38b94bdc..a3896a67 100644 --- a/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java +++ b/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java @@ -441,7 +441,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { @Override @Nonnull public List getSubtitlesDefault() throws IOException, ExtractionException { - return getSubtitles(SubtitlesFormat.VTT); + return getSubtitles(SubtitlesFormat.TTML); } @Override @@ -457,7 +457,17 @@ public class YoutubeStreamExtractor extends StreamExtractor { @Override public StreamType getStreamType() throws ParsingException { - //todo: if implementing livestream support this value should be generated dynamically + assertPageFetched(); + if (playerArgs == null) return StreamType.NONE; + + try { + if (playerArgs.has("ps") && playerArgs.get("ps").toString().equals("live") || + playerArgs.get(URL_ENCODED_FMT_STREAM_MAP).toString().isEmpty()) { + return StreamType.LIVE_STREAM; + } + } catch (Exception e) { + throw new ParsingException("Could not get hls manifest url", e); + } return StreamType.VIDEO_STREAM; } @@ -547,7 +557,6 @@ public class YoutubeStreamExtractor extends StreamExtractor { doc = Jsoup.parse(pageContent, getCleanUrl()); final String playerUrl; - // TODO: use embedded videos to fetch DASH manifest for all videos // Check if the video is age restricted if (pageContent.contains("