1717import java .util .Map ;
1818
1919import static org .schabi .newpipe .extractor .NewPipe .getDownloader ;
20- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_ID ;
21- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_NAME ;
22- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_VERSION ;
23- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .DESKTOP_CLIENT_PLATFORM ;
24- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .EMBED_CLIENT_SCREEN ;
25- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_CLIENT_ID ;
26- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_CLIENT_NAME ;
27- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_CLIENT_VERSION ;
28- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_DEVICE_MODEL ;
29- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .IOS_OS_VERSION ;
30- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .MOBILE_CLIENT_PLATFORM ;
3120import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_CLIENT_ID ;
32- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_CLIENT_NAME ;
33- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_CLIENT_PLATFORM ;
3421import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_CLIENT_VERSION ;
35- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_DEVICE_MAKE ;
36- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_DEVICE_MODEL_AND_OS_NAME ;
3722import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .TVHTML5_USER_AGENT ;
38- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WATCH_CLIENT_SCREEN ;
39- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_CLIENT_ID ;
40- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_CLIENT_NAME ;
4123import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_ID ;
42- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_NAME ;
4324import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_VERSION ;
44- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_REMIX_HARDCODED_CLIENT_VERSION ;
4525import static org .schabi .newpipe .extractor .services .youtube .YoutubeParsingHelper .CONTENT_CHECK_OK ;
4626import static org .schabi .newpipe .extractor .services .youtube .YoutubeParsingHelper .CPN ;
4727import static org .schabi .newpipe .extractor .services .youtube .YoutubeParsingHelper .DISABLE_PRETTY_PRINT_PARAMETER ;
@@ -75,20 +55,8 @@ public static JsonObject getWebMetadataPlayerResponse(
7555 @ Nonnull final ContentCountry contentCountry ,
7656 @ Nonnull final String videoId ) throws IOException , ExtractionException {
7757 final InnertubeClientRequestInfo innertubeClientRequestInfo =
78- new InnertubeClientRequestInfo (
79- new InnertubeClientRequestInfo .ClientInfo (
80- WEB_CLIENT_NAME ,
81- getClientVersion (),
82- WATCH_CLIENT_SCREEN ,
83- WEB_CLIENT_ID ,
84- null ),
85- new InnertubeClientRequestInfo .DeviceInfo (
86- DESKTOP_CLIENT_PLATFORM ,
87- null ,
88- null ,
89- null ,
90- null ,
91- -1 ));
58+ InnertubeClientRequestInfo .ofWebClient ();
59+ innertubeClientRequestInfo .clientInfo .clientVersion = getClientVersion ();
9260
9361 final Map <String , List <String >> headers = getYouTubeHeaders ();
9462
@@ -122,20 +90,7 @@ public static JsonObject getTvHtml5PlayerResponse(
12290 @ Nonnull final String cpn ,
12391 final int signatureTimestamp ) throws IOException , ExtractionException {
12492 final InnertubeClientRequestInfo innertubeClientRequestInfo =
125- new InnertubeClientRequestInfo (
126- new InnertubeClientRequestInfo .ClientInfo (
127- TVHTML5_CLIENT_NAME ,
128- TVHTML5_CLIENT_VERSION ,
129- WATCH_CLIENT_SCREEN ,
130- TVHTML5_CLIENT_ID ,
131- null ),
132- new InnertubeClientRequestInfo .DeviceInfo (
133- TVHTML5_CLIENT_PLATFORM ,
134- TVHTML5_DEVICE_MAKE ,
135- TVHTML5_DEVICE_MODEL_AND_OS_NAME ,
136- TVHTML5_DEVICE_MODEL_AND_OS_NAME ,
137- "" ,
138- -1 ));
93+ InnertubeClientRequestInfo .ofTvHtml5Client ();
13994
14095 final Map <String , List <String >> headers = new HashMap <>(
14196 getClientHeaders (TVHTML5_CLIENT_ID , TVHTML5_CLIENT_VERSION ));
@@ -175,20 +130,9 @@ public static JsonObject getWebFullPlayerResponse(
175130 @ Nonnull final PoTokenResult webPoTokenResult ,
176131 final int signatureTimestamp ) throws IOException , ExtractionException {
177132 final InnertubeClientRequestInfo innertubeClientRequestInfo =
178- new InnertubeClientRequestInfo (
179- new InnertubeClientRequestInfo .ClientInfo (
180- WEB_CLIENT_NAME ,
181- getClientVersion (),
182- WATCH_CLIENT_SCREEN ,
183- WEB_CLIENT_ID ,
184- webPoTokenResult .visitorData ),
185- new InnertubeClientRequestInfo .DeviceInfo (
186- DESKTOP_CLIENT_PLATFORM ,
187- null ,
188- null ,
189- null ,
190- null ,
191- -1 ));
133+ InnertubeClientRequestInfo .ofWebClient ();
134+ innertubeClientRequestInfo .clientInfo .clientVersion = getClientVersion ();
135+ innertubeClientRequestInfo .clientInfo .visitorData = webPoTokenResult .visitorData ;
192136
193137 final JsonBuilder <JsonObject > builder = prepareJsonBuilder (localization , contentCountry ,
194138 innertubeClientRequestInfo , null );
@@ -199,7 +143,7 @@ public static JsonObject getWebFullPlayerResponse(
199143
200144 addPoToken (builder , webPoTokenResult .playerRequestPoToken );
201145
202- final byte [] body = JsonWriter .string (builder .end (). done ())
146+ final byte [] body = JsonWriter .string (builder .done ())
203147 .getBytes (StandardCharsets .UTF_8 );
204148
205149 final String url = YOUTUBEI_V1_URL + PLAYER + "?" + DISABLE_PRETTY_PRINT_PARAMETER ;
@@ -218,20 +162,7 @@ public static JsonObject getWebEmbeddedPlayerResponse(
218162 @ Nullable final PoTokenResult webEmbeddedPoTokenResult ,
219163 final int signatureTimestamp ) throws IOException , ExtractionException {
220164 final InnertubeClientRequestInfo innertubeClientRequestInfo =
221- new InnertubeClientRequestInfo (
222- new InnertubeClientRequestInfo .ClientInfo (
223- WEB_EMBEDDED_CLIENT_NAME ,
224- WEB_REMIX_HARDCODED_CLIENT_VERSION ,
225- EMBED_CLIENT_SCREEN ,
226- WEB_EMBEDDED_CLIENT_ID ,
227- null ),
228- new InnertubeClientRequestInfo .DeviceInfo (
229- DESKTOP_CLIENT_PLATFORM ,
230- null ,
231- null ,
232- null ,
233- null ,
234- -1 ));
165+ InnertubeClientRequestInfo .ofWebEmbeddedPlayerClient ();
235166
236167 final Map <String , List <String >> headers = new HashMap <>(
237168 getClientHeaders (WEB_EMBEDDED_CLIENT_ID , WEB_EMBEDDED_CLIENT_VERSION ));
@@ -273,20 +204,8 @@ public static JsonObject getAndroidPlayerResponse(
273204 @ Nonnull final PoTokenResult androidPoTokenResult )
274205 throws IOException , ExtractionException {
275206 final InnertubeClientRequestInfo innertubeClientRequestInfo =
276- new InnertubeClientRequestInfo (
277- new InnertubeClientRequestInfo .ClientInfo (
278- ANDROID_CLIENT_NAME ,
279- ANDROID_CLIENT_VERSION ,
280- WATCH_CLIENT_SCREEN ,
281- ANDROID_CLIENT_ID ,
282- androidPoTokenResult .visitorData ),
283- new InnertubeClientRequestInfo .DeviceInfo (
284- MOBILE_CLIENT_PLATFORM ,
285- null ,
286- null ,
287- "Android" ,
288- "15" ,
289- 35 ));
207+ InnertubeClientRequestInfo .ofAndroidClient ();
208+ innertubeClientRequestInfo .clientInfo .visitorData = androidPoTokenResult .visitorData ;
290209
291210 final Map <String , List <String >> headers =
292211 getMobileClientHeaders (getAndroidUserAgent (localization ));
@@ -314,20 +233,7 @@ public static JsonObject getAndroidReelPlayerResponse(
314233 @ Nonnull final String videoId ,
315234 @ Nonnull final String cpn ) throws IOException , ExtractionException {
316235 final InnertubeClientRequestInfo innertubeClientRequestInfo =
317- new InnertubeClientRequestInfo (
318- new InnertubeClientRequestInfo .ClientInfo (
319- ANDROID_CLIENT_NAME ,
320- ANDROID_CLIENT_VERSION ,
321- WATCH_CLIENT_SCREEN ,
322- ANDROID_CLIENT_ID ,
323- null ),
324- new InnertubeClientRequestInfo .DeviceInfo (
325- MOBILE_CLIENT_PLATFORM ,
326- null ,
327- null ,
328- "Android" ,
329- "15" ,
330- 35 ));
236+ InnertubeClientRequestInfo .ofAndroidClient ();
331237
332238 final Map <String , List <String >> headers =
333239 getMobileClientHeaders (getAndroidUserAgent (localization ));
@@ -367,20 +273,7 @@ public static JsonObject getIosPlayerResponse(@Nonnull final ContentCountry cont
367273 @ Nullable final PoTokenResult iosPoTokenResult )
368274 throws IOException , ExtractionException {
369275 final InnertubeClientRequestInfo innertubeClientRequestInfo =
370- new InnertubeClientRequestInfo (
371- new InnertubeClientRequestInfo .ClientInfo (
372- IOS_CLIENT_NAME ,
373- IOS_CLIENT_VERSION ,
374- WATCH_CLIENT_SCREEN ,
375- IOS_CLIENT_ID ,
376- null ),
377- new InnertubeClientRequestInfo .DeviceInfo (
378- MOBILE_CLIENT_PLATFORM ,
379- "Apple" ,
380- IOS_DEVICE_MODEL ,
381- "iOS" ,
382- IOS_OS_VERSION ,
383- -1 ));
276+ InnertubeClientRequestInfo .ofIosClient ();
384277
385278 final Map <String , List <String >> headers =
386279 getMobileClientHeaders (getIosUserAgent (localization ));
0 commit comments