11package org .schabi .newpipe .extractor .services .youtube ;
22
3+ import javax .annotation .Nonnull ;
4+ import javax .annotation .Nullable ;
5+
36import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_ID ;
47import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_NAME ;
58import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .ANDROID_CLIENT_VERSION ;
1619import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_CLIENT_NAME ;
1720import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_ID ;
1821import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_NAME ;
22+ import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_EMBEDDED_CLIENT_VERSION ;
1923import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_HARDCODED_CLIENT_VERSION ;
20- import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_REMIX_HARDCODED_CLIENT_VERSION ;
21-
22- import javax .annotation .Nonnull ;
23- import javax .annotation .Nullable ;
24+ import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_MUSIC_ANALYTICS_CLIENT_ID ;
25+ import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_MUSIC_ANALYTICS_CLIENT_NAME ;
26+ import static org .schabi .newpipe .extractor .services .youtube .ClientsConstants .WEB_MUSIC_ANALYTICS_CLIENT_VERSION ;
2427
2528// TODO: add docs
2629
@@ -38,28 +41,28 @@ public static final class ClientInfo {
3841 @ Nonnull
3942 public String clientVersion ;
4043 @ Nonnull
41- public String clientScreen ;
42- @ Nullable
4344 public String clientId ;
4445 @ Nullable
46+ public String clientScreen ;
47+ @ Nullable
4548 public String visitorData ;
4649
4750 private ClientInfo (@ Nonnull final String clientName ,
4851 @ Nonnull final String clientVersion ,
49- @ Nonnull final String clientScreen ,
50- @ Nullable final String clientId ,
52+ @ Nonnull final String clientId ,
53+ @ Nullable final String clientScreen ,
5154 @ Nullable final String visitorData ) {
5255 this .clientName = clientName ;
5356 this .clientVersion = clientVersion ;
54- this .clientScreen = clientScreen ;
5557 this .clientId = clientId ;
58+ this .clientScreen = clientScreen ;
5659 this .visitorData = visitorData ;
5760 }
5861 }
5962
6063 public static final class DeviceInfo {
6164
62- @ Nonnull
65+ @ Nullable
6366 public String platform ;
6467 @ Nullable
6568 public String deviceMake ;
@@ -71,7 +74,7 @@ public static final class DeviceInfo {
7174 public String osVersion ;
7275 public int androidSdkVersion ;
7376
74- private DeviceInfo (@ Nonnull final String platform ,
77+ private DeviceInfo (@ Nullable final String platform ,
7578 @ Nullable final String deviceMake ,
7679 @ Nullable final String deviceModel ,
7780 @ Nullable final String osName ,
@@ -96,8 +99,8 @@ private InnertubeClientRequestInfo(@Nonnull final ClientInfo clientInfo,
9699 public static InnertubeClientRequestInfo ofWebClient () {
97100 return new InnertubeClientRequestInfo (
98101 new InnertubeClientRequestInfo .ClientInfo (
99- WEB_CLIENT_NAME , WEB_HARDCODED_CLIENT_VERSION , WATCH_CLIENT_SCREEN ,
100- WEB_CLIENT_ID , null ),
102+ WEB_CLIENT_NAME , WEB_HARDCODED_CLIENT_VERSION , WEB_CLIENT_ID ,
103+ WATCH_CLIENT_SCREEN , null ),
101104 new InnertubeClientRequestInfo .DeviceInfo (DESKTOP_CLIENT_PLATFORM , null , null ,
102105 null , null , -1 ));
103106 }
@@ -106,17 +109,27 @@ public static InnertubeClientRequestInfo ofWebClient() {
106109 public static InnertubeClientRequestInfo ofWebEmbeddedPlayerClient () {
107110 return new InnertubeClientRequestInfo (
108111 new InnertubeClientRequestInfo .ClientInfo (WEB_EMBEDDED_CLIENT_NAME ,
109- WEB_REMIX_HARDCODED_CLIENT_VERSION , EMBED_CLIENT_SCREEN ,
110- WEB_EMBEDDED_CLIENT_ID , null ),
112+ WEB_EMBEDDED_CLIENT_VERSION , WEB_EMBEDDED_CLIENT_ID , EMBED_CLIENT_SCREEN ,
113+ null ),
111114 new InnertubeClientRequestInfo .DeviceInfo (DESKTOP_CLIENT_PLATFORM , null , null ,
112115 null , null , -1 ));
113116 }
114117
118+ @ Nonnull
119+ public static InnertubeClientRequestInfo ofWebMusicAnalyticsChartsClient () {
120+ return new InnertubeClientRequestInfo (
121+ new InnertubeClientRequestInfo .ClientInfo (WEB_MUSIC_ANALYTICS_CLIENT_NAME ,
122+ WEB_MUSIC_ANALYTICS_CLIENT_VERSION , WEB_MUSIC_ANALYTICS_CLIENT_ID , null ,
123+ null ),
124+ new InnertubeClientRequestInfo .DeviceInfo (null , null , null ,
125+ null , null , -1 ));
126+ }
127+
115128 @ Nonnull
116129 public static InnertubeClientRequestInfo ofAndroidClient () {
117130 return new InnertubeClientRequestInfo (
118131 new InnertubeClientRequestInfo .ClientInfo (ANDROID_CLIENT_NAME ,
119- ANDROID_CLIENT_VERSION , WATCH_CLIENT_SCREEN , ANDROID_CLIENT_ID , null ),
132+ ANDROID_CLIENT_VERSION , ANDROID_CLIENT_ID , WATCH_CLIENT_SCREEN , null ),
120133 new InnertubeClientRequestInfo .DeviceInfo (MOBILE_CLIENT_PLATFORM , null , null ,
121134 "Android" , "15" , 35 ));
122135 }
@@ -125,7 +138,7 @@ public static InnertubeClientRequestInfo ofAndroidClient() {
125138 public static InnertubeClientRequestInfo ofIosClient () {
126139 return new InnertubeClientRequestInfo (
127140 new InnertubeClientRequestInfo .ClientInfo (IOS_CLIENT_NAME , IOS_CLIENT_VERSION ,
128- WATCH_CLIENT_SCREEN , IOS_CLIENT_ID , null ),
141+ IOS_CLIENT_ID , WATCH_CLIENT_SCREEN , null ),
129142 new InnertubeClientRequestInfo .DeviceInfo (MOBILE_CLIENT_PLATFORM , "Apple" ,
130143 IOS_DEVICE_MODEL , "iOS" , IOS_OS_VERSION , -1 ));
131144 }
0 commit comments