2626import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_CLIENT_VERSION ;
2727import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_DEVICE_MODEL ;
2828import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_USER_AGENT_VERSION ;
29+ import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_USER_AGENT ;
2930import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_CLIENT_ID ;
3031import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_CLIENT_NAME ;
3132import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_HARDCODED_CLIENT_VERSION ;
@@ -1134,6 +1135,17 @@ public static String getIosUserAgent(@Nullable final Localization localization)
11341135 + ")" ;
11351136 }
11361137
1138+ /**
1139+ * Get the user-agent string used as the user-agent for InnerTube requests with the HTML5 TV
1140+ * client.
1141+ *
1142+ * @return the user-agent used for InnerTube requests with the TVHTML5 client
1143+ */
1144+ @ Nonnull
1145+ public static String getTvHtml5UserAgent () {
1146+ return TVHTML5_USER_AGENT ;
1147+ }
1148+
11371149 /**
11381150 * Returns a {@link Map} containing the required YouTube Music headers.
11391151 */
@@ -1172,7 +1184,7 @@ public static Map<String, List<String>> getClientInfoHeaders()
11721184 *
11731185 * @param url The URL to be set as the origin and referrer.
11741186 */
1175- static Map <String , List <String >> getOriginReferrerHeaders (@ Nonnull final String url ) {
1187+ public static Map <String , List <String >> getOriginReferrerHeaders (@ Nonnull final String url ) {
11761188 final var urlList = List .of (url );
11771189 return Map .of ("Origin" , urlList , "Referer" , urlList );
11781190 }
@@ -1496,12 +1508,13 @@ public static AudioTrackType extractAudioTrackType(final String streamUrl) {
14961508 }
14971509 }
14981510
1511+ @ Nonnull
14991512 public static String getVisitorDataFromInnertube (
15001513 @ Nonnull final InnertubeClientRequestInfo innertubeClientRequestInfo ,
15011514 @ Nonnull final Localization localization ,
15021515 @ Nonnull final ContentCountry contentCountry ,
15031516 @ Nonnull final Map <String , List <String >> httpHeaders ,
1504- @ Nonnull final String innerTubeDomain ,
1517+ @ Nonnull final String innertubeDomainAndVersionEndpoint ,
15051518 @ Nullable final String embedUrl ,
15061519 final boolean useGuideEndpoint ) throws IOException , ExtractionException {
15071520 final JsonBuilder <JsonObject > builder = prepareJsonBuilder (
@@ -1512,8 +1525,9 @@ public static String getVisitorDataFromInnertube(
15121525
15131526 final String visitorData = JsonUtils .toJsonObject (getValidJsonResponseBody (getDownloader ()
15141527 .postWithContentTypeJson (
1515- innerTubeDomain + (useGuideEndpoint ? "guide" : "visitor_id" )
1516- + "?" + DISABLE_PRETTY_PRINT_PARAMETER ,
1528+ innertubeDomainAndVersionEndpoint
1529+ + (useGuideEndpoint ? "guide" : "visitor_id" ) + "?"
1530+ + DISABLE_PRETTY_PRINT_PARAMETER ,
15171531 httpHeaders , body )))
15181532 .getObject ("responseContext" )
15191533 .getString ("visitorData" );
0 commit comments