From f117c1defc6eb337bf33b945459a93a2804fdf72 Mon Sep 17 00:00:00 2001 From: sunipan Date: Mon, 11 Dec 2023 14:26:34 -0800 Subject: [PATCH] added isLiveDvrEnabled to YoutubeStreamExtractor --- .../youtube/extractors/YoutubeStreamExtractor.java | 5 +++++ .../newpipe/extractor/stream/StreamExtractor.java | 9 +++++++++ .../newpipe/extractor/stream/StreamInfo.java | 14 ++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java index be008fa23..06feb09d1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java @@ -1579,6 +1579,11 @@ public class YoutubeStreamExtractor extends StreamExtractor { .getArray("contents")); } + @Override + public boolean isLiveDvrEnabled() throws ParsingException { + return playerResponse.getObject("videoDetails").getBoolean("isLiveDvrEnabled"); + } + /** * Enable or disable the fetch of the Android client for all stream types. * diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java index 170291740..90346e0ae 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java @@ -581,6 +581,15 @@ public abstract class StreamExtractor extends Extractor { return false; } + /** + * Whether the stream is scrubbable backwards. + * + * @return whether the stream is scrubbable backwards + */ + public boolean isLiveDvrEnabled() throws ParsingException { + return false; + } + public enum Privacy { PUBLIC, UNLISTED, diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java index b54c69afc..701fc5e41 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java @@ -273,6 +273,11 @@ public class StreamInfo extends Info { } catch (final Exception e) { streamInfo.addError(e); } + try { + streamInfo.setLiveDvrEnabled(extractor.isLiveDvrEnabled()); + } catch (final Exception e) { + streamInfo.addError(e); + } // Additional info try { @@ -381,6 +386,7 @@ public class StreamInfo extends Info { private List streamSegments = List.of(); private List metaInfo = List.of(); private boolean shortFormContent = false; + private boolean isLiveDvrEnabled = false; /** * Preview frames, e.g. for the storyboard / seekbar thumbnail preview @@ -727,4 +733,12 @@ public class StreamInfo extends Info { public void setShortFormContent(final boolean isShortFormContent) { this.shortFormContent = isShortFormContent; } + + public boolean isLiveDvrEnabled() { + return isLiveDvrEnabled; + } + + public void setLiveDvrEnabled(final boolean isLiveDvrEnabled) { + this.isLiveDvrEnabled = isLiveDvrEnabled; + } }