Skip to content

Commit c48d449

Browse files
AudricVStypox
authored andcommitted
[YouTube] Add ability to get TVHTML5 user agent used
Also make YoutubeParsingHelper.getOriginReferrerHeaders public, in order to be used by other extractor classes and improve the name of a parameter of YoutubeParsingHelper.getVisitorDataFromInnertube.
1 parent 0952431 commit c48d449

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static org.schabi.newpipe.extractor.services.youtube.ClientsConstants.IOS_CLIENT_VERSION;
2727
import static org.schabi.newpipe.extractor.services.youtube.ClientsConstants.IOS_DEVICE_MODEL;
2828
import 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;
2930
import static org.schabi.newpipe.extractor.services.youtube.ClientsConstants.WEB_CLIENT_ID;
3031
import static org.schabi.newpipe.extractor.services.youtube.ClientsConstants.WEB_CLIENT_NAME;
3132
import 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

Comments
 (0)