From 4644e1744b336f5bc8c3400351d2344c94346fa8 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Fri, 31 Jan 2025 21:26:41 +0100 Subject: [PATCH] [YouTube] Add signatureTimestamp argument to TVHTML5 client requests This argument, which has been forgot, is required to get valid streaming URLs with this client. --- .../extractor/services/youtube/YoutubeStreamHelper.java | 5 ++++- .../services/youtube/extractors/YoutubeStreamExtractor.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamHelper.java index 1b17058a1..9f005299b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamHelper.java @@ -119,7 +119,8 @@ public final class YoutubeStreamHelper { @Nonnull final Localization localization, @Nonnull final ContentCountry contentCountry, @Nonnull final String videoId, - @Nonnull final String cpn) throws IOException, ExtractionException { + @Nonnull final String cpn, + final int signatureTimestamp) throws IOException, ExtractionException { final InnertubeClientRequestInfo innertubeClientRequestInfo = new InnertubeClientRequestInfo( new InnertubeClientRequestInfo.ClientInfo( @@ -154,6 +155,8 @@ public final class YoutubeStreamHelper { addVideoIdCpnAndOkChecks(builder, videoId, cpn); + addPlaybackContext(builder, BASE_YT_DESKTOP_WATCH_URL + videoId, signatureTimestamp); + final byte[] body = JsonWriter.string(builder.done()) .getBytes(StandardCharsets.UTF_8); 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 e2a49f7da..76ef2771b 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 @@ -941,7 +941,8 @@ public class YoutubeStreamExtractor extends StreamExtractor { final JsonObject tvHtml5PlayerResponse = YoutubeStreamHelper.getTvHtml5PlayerResponse( - localization, contentCountry, videoId, html5Cpn); + localization, contentCountry, videoId, html5Cpn, + YoutubeJavaScriptPlayerManager.getSignatureTimestamp(videoId)); if (isPlayerResponseNotValid(tvHtml5PlayerResponse, videoId)) { throw new ExtractionException("TVHTML5 player response is not valid");