youtubei 1.0.0-rc.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/README.md +8 -2
  2. package/dist/cjs/common/index.js +2 -4
  3. package/dist/cjs/{classes/Client → common/shared/HTTP}/HTTP.js +12 -6
  4. package/dist/cjs/common/shared/HTTP/index.js +13 -0
  5. package/dist/cjs/{classes/SearchResult/proto/SearchProto.js → common/shared/Shelf/Shelf.js} +0 -0
  6. package/dist/cjs/common/shared/Shelf/index.js +13 -0
  7. package/dist/cjs/{classes → common/shared}/Thumbnails/Thumbnails.js +2 -2
  8. package/dist/cjs/{classes → common/shared}/Thumbnails/index.js +0 -0
  9. package/dist/cjs/common/shared/index.js +15 -0
  10. package/dist/cjs/common/{decorators.js → utils/decorators.js} +0 -0
  11. package/dist/cjs/common/{helper.js → utils/helper.js} +0 -0
  12. package/dist/cjs/common/utils/index.js +16 -0
  13. package/dist/cjs/common/{mixins.js → utils/mixins.js} +0 -0
  14. package/dist/cjs/common/{types.js → utils/types.js} +0 -0
  15. package/dist/cjs/index.js +3 -1
  16. package/dist/cjs/music/MusicAlbumCompact/MusicAlbumCompact.js +12 -0
  17. package/dist/cjs/music/MusicAlbumCompact/index.js +13 -0
  18. package/dist/cjs/music/MusicArtistCompact/MusicArtistCompact.js +12 -0
  19. package/dist/cjs/music/MusicArtistCompact/index.js +13 -0
  20. package/dist/cjs/music/MusicBase/MusicBase.js +10 -0
  21. package/dist/cjs/music/MusicBase/index.js +13 -0
  22. package/dist/cjs/music/MusicBaseAlbum/MusicBaseAlbum.js +12 -0
  23. package/dist/cjs/music/MusicBaseAlbum/index.js +13 -0
  24. package/dist/cjs/music/MusicBaseArtist/MusicBaseArtist.js +12 -0
  25. package/dist/cjs/music/MusicBaseArtist/index.js +13 -0
  26. package/dist/cjs/music/MusicBaseChannel/MusicBaseChannel.js +7 -0
  27. package/dist/cjs/music/MusicBaseChannel/index.js +13 -0
  28. package/dist/cjs/music/MusicClient/MusicClient.js +71 -0
  29. package/dist/cjs/music/MusicClient/MusicSearchResultParser.js +126 -0
  30. package/dist/cjs/music/MusicClient/index.js +14 -0
  31. package/dist/cjs/music/MusicLyrics/MusicLyrics.js +13 -0
  32. package/dist/cjs/music/MusicLyrics/index.js +13 -0
  33. package/dist/cjs/music/MusicPlaylistCompact/MusicPlaylistCompact.js +12 -0
  34. package/dist/cjs/music/MusicPlaylistCompact/index.js +13 -0
  35. package/dist/cjs/music/MusicSongCompact/MusicSongCompact.js +12 -0
  36. package/dist/cjs/music/MusicSongCompact/index.js +13 -0
  37. package/dist/cjs/music/MusicVideoCompact/MusicVideoCompact.js +12 -0
  38. package/dist/cjs/music/MusicVideoCompact/index.js +13 -0
  39. package/dist/cjs/music/constants.js +7 -0
  40. package/dist/cjs/music/index.js +23 -0
  41. package/dist/cjs/{classes → youtube}/Base/Base.js +0 -0
  42. package/dist/cjs/{classes → youtube}/Base/index.js +0 -0
  43. package/dist/cjs/{classes → youtube}/BaseChannel/BaseChannel.js +0 -0
  44. package/dist/cjs/{classes → youtube}/BaseChannel/BaseChannelParser.js +1 -2
  45. package/dist/cjs/{classes → youtube}/BaseChannel/ChannelPlaylists.js +1 -1
  46. package/dist/cjs/{classes → youtube}/BaseChannel/ChannelVideos.js +1 -1
  47. package/dist/cjs/{classes → youtube}/BaseChannel/index.js +0 -0
  48. package/dist/cjs/{classes → youtube}/BaseVideo/BaseVideo.js +0 -0
  49. package/dist/cjs/{classes → youtube}/BaseVideo/BaseVideoParser.js +4 -4
  50. package/dist/cjs/{classes → youtube}/BaseVideo/VideoRelated.js +1 -1
  51. package/dist/cjs/{classes → youtube}/BaseVideo/index.js +0 -0
  52. package/dist/cjs/{classes → youtube}/Channel/Channel.js +0 -0
  53. package/dist/cjs/{classes → youtube}/Channel/ChannelParser.js +5 -5
  54. package/dist/cjs/{classes → youtube}/Channel/index.js +0 -0
  55. package/dist/cjs/{classes → youtube}/Chat/Chat.js +0 -0
  56. package/dist/cjs/{classes → youtube}/Chat/ChatParser.js +0 -0
  57. package/dist/cjs/{classes → youtube}/Chat/index.js +0 -0
  58. package/dist/cjs/{classes → youtube}/Client/Client.js +3 -3
  59. package/dist/cjs/{classes → youtube}/Client/index.js +0 -0
  60. package/dist/cjs/{classes → youtube}/Comment/Comment.js +0 -0
  61. package/dist/cjs/{classes → youtube}/Comment/CommentParser.js +1 -2
  62. package/dist/cjs/{classes → youtube}/Comment/CommentReplies.js +1 -1
  63. package/dist/cjs/{classes → youtube}/Comment/index.js +0 -0
  64. package/dist/cjs/{classes → youtube}/Continuable/Continuable.js +0 -0
  65. package/dist/cjs/{classes → youtube}/Continuable/index.js +0 -0
  66. package/dist/cjs/{classes → youtube}/LiveVideo/LiveVideo.js +1 -1
  67. package/dist/cjs/{classes → youtube}/LiveVideo/LiveVideoParser.js +0 -0
  68. package/dist/cjs/{classes → youtube}/LiveVideo/index.js +0 -0
  69. package/dist/cjs/{classes → youtube}/MixPlaylist/MixPlaylist.js +0 -0
  70. package/dist/cjs/{classes → youtube}/MixPlaylist/MixPlaylistParser.js +0 -0
  71. package/dist/cjs/{classes → youtube}/MixPlaylist/index.js +0 -0
  72. package/dist/cjs/{classes → youtube}/Playlist/Playlist.js +0 -0
  73. package/dist/cjs/{classes → youtube}/Playlist/PlaylistParser.js +1 -2
  74. package/dist/cjs/{classes → youtube}/Playlist/PlaylistVideos.js +1 -1
  75. package/dist/cjs/{classes → youtube}/Playlist/index.js +0 -0
  76. package/dist/cjs/{classes → youtube}/PlaylistCompact/PlaylistCompact.js +0 -0
  77. package/dist/cjs/{classes → youtube}/PlaylistCompact/PlaylistCompactParser.js +1 -2
  78. package/dist/cjs/{classes → youtube}/PlaylistCompact/index.js +0 -0
  79. package/dist/cjs/{classes → youtube}/Reply/Reply.js +0 -0
  80. package/dist/cjs/{classes → youtube}/Reply/ReplyParser.js +2 -2
  81. package/dist/cjs/{classes → youtube}/Reply/index.js +0 -0
  82. package/dist/cjs/{classes → youtube}/SearchResult/SearchResult.js +1 -1
  83. package/dist/cjs/{classes → youtube}/SearchResult/SearchResultParser.js +0 -0
  84. package/dist/cjs/{classes → youtube}/SearchResult/index.js +0 -0
  85. package/dist/cjs/youtube/SearchResult/proto/SearchProto.js +2 -0
  86. package/dist/cjs/{classes → youtube}/SearchResult/proto/index.js +0 -0
  87. package/dist/cjs/{classes → youtube}/Transcript/Transcript.js +0 -0
  88. package/dist/cjs/{classes → youtube}/Transcript/TranscriptParser.js +0 -0
  89. package/dist/cjs/{classes → youtube}/Transcript/index.js +0 -0
  90. package/dist/cjs/{classes → youtube}/Transcript/proto/TranscriptParamsProto.js +0 -0
  91. package/dist/cjs/{classes → youtube}/Transcript/proto/index.js +0 -0
  92. package/dist/cjs/{classes → youtube}/Video/Video.js +0 -0
  93. package/dist/cjs/{classes → youtube}/Video/VideoComments.js +1 -1
  94. package/dist/cjs/{classes → youtube}/Video/VideoParser.js +1 -2
  95. package/dist/cjs/{classes → youtube}/Video/index.js +0 -0
  96. package/dist/cjs/{classes → youtube}/VideoCompact/VideoCompact.js +0 -0
  97. package/dist/cjs/{classes → youtube}/VideoCompact/VideoCompactParser.js +2 -3
  98. package/dist/cjs/{classes → youtube}/VideoCompact/index.js +0 -0
  99. package/dist/cjs/{constants.js → youtube/constants.js} +2 -1
  100. package/dist/cjs/{classes → youtube}/index.js +0 -1
  101. package/dist/esm/common/index.js +2 -4
  102. package/dist/esm/{classes/Client → common/shared/HTTP}/HTTP.js +12 -6
  103. package/dist/esm/common/shared/HTTP/index.js +1 -0
  104. package/dist/esm/{classes/SearchResult/proto/SearchProto.js → common/shared/Shelf/Shelf.js} +0 -0
  105. package/dist/esm/common/shared/Shelf/index.js +1 -0
  106. package/dist/esm/{classes → common/shared}/Thumbnails/Thumbnails.js +1 -1
  107. package/dist/esm/{classes → common/shared}/Thumbnails/index.js +0 -0
  108. package/dist/esm/common/shared/index.js +3 -0
  109. package/dist/esm/common/{decorators.js → utils/decorators.js} +0 -0
  110. package/dist/esm/common/{helper.js → utils/helper.js} +0 -0
  111. package/dist/esm/common/utils/index.js +4 -0
  112. package/dist/esm/common/{mixins.js → utils/mixins.js} +0 -0
  113. package/dist/esm/common/{types.js → utils/types.js} +0 -0
  114. package/dist/esm/index.js +3 -1
  115. package/dist/esm/music/MusicAlbumCompact/MusicAlbumCompact.js +25 -0
  116. package/dist/esm/music/MusicAlbumCompact/index.js +1 -0
  117. package/dist/esm/music/MusicArtistCompact/MusicArtistCompact.js +25 -0
  118. package/dist/esm/music/MusicArtistCompact/index.js +1 -0
  119. package/dist/esm/music/MusicBase/MusicBase.js +8 -0
  120. package/dist/esm/music/MusicBase/index.js +1 -0
  121. package/dist/esm/music/MusicBaseAlbum/MusicBaseAlbum.js +25 -0
  122. package/dist/esm/music/MusicBaseAlbum/index.js +1 -0
  123. package/dist/esm/music/MusicBaseArtist/MusicBaseArtist.js +25 -0
  124. package/dist/esm/music/MusicBaseArtist/index.js +1 -0
  125. package/dist/esm/music/MusicBaseChannel/MusicBaseChannel.js +22 -0
  126. package/dist/esm/music/MusicBaseChannel/index.js +1 -0
  127. package/dist/esm/music/MusicClient/MusicClient.js +122 -0
  128. package/dist/esm/music/MusicClient/MusicSearchResultParser.js +148 -0
  129. package/dist/esm/music/MusicClient/index.js +2 -0
  130. package/dist/esm/music/MusicLyrics/MusicLyrics.js +11 -0
  131. package/dist/esm/music/MusicLyrics/index.js +1 -0
  132. package/dist/esm/music/MusicPlaylistCompact/MusicPlaylistCompact.js +25 -0
  133. package/dist/esm/music/MusicPlaylistCompact/index.js +1 -0
  134. package/dist/esm/music/MusicSongCompact/MusicSongCompact.js +25 -0
  135. package/dist/esm/music/MusicSongCompact/index.js +1 -0
  136. package/dist/esm/music/MusicVideoCompact/MusicVideoCompact.js +25 -0
  137. package/dist/esm/music/MusicVideoCompact/index.js +1 -0
  138. package/dist/esm/music/constants.js +4 -0
  139. package/dist/esm/music/index.js +11 -0
  140. package/dist/esm/{classes → youtube}/Base/Base.js +0 -0
  141. package/dist/esm/{classes → youtube}/Base/index.js +0 -0
  142. package/dist/esm/{classes → youtube}/BaseChannel/BaseChannel.js +0 -0
  143. package/dist/esm/{classes → youtube}/BaseChannel/BaseChannelParser.js +1 -2
  144. package/dist/esm/{classes → youtube}/BaseChannel/ChannelPlaylists.js +1 -1
  145. package/dist/esm/{classes → youtube}/BaseChannel/ChannelVideos.js +1 -1
  146. package/dist/esm/{classes → youtube}/BaseChannel/index.js +0 -0
  147. package/dist/esm/{classes → youtube}/BaseVideo/BaseVideo.js +0 -0
  148. package/dist/esm/{classes → youtube}/BaseVideo/BaseVideoParser.js +3 -3
  149. package/dist/esm/{classes → youtube}/BaseVideo/VideoRelated.js +1 -1
  150. package/dist/esm/{classes → youtube}/BaseVideo/index.js +0 -0
  151. package/dist/esm/{classes → youtube}/Channel/Channel.js +0 -0
  152. package/dist/esm/{classes → youtube}/Channel/ChannelParser.js +1 -1
  153. package/dist/esm/{classes → youtube}/Channel/index.js +0 -0
  154. package/dist/esm/{classes → youtube}/Chat/Chat.js +0 -0
  155. package/dist/esm/{classes → youtube}/Chat/ChatParser.js +0 -0
  156. package/dist/esm/{classes → youtube}/Chat/index.js +0 -0
  157. package/dist/esm/{classes → youtube}/Client/Client.js +3 -3
  158. package/dist/esm/{classes → youtube}/Client/index.js +0 -0
  159. package/dist/esm/{classes → youtube}/Comment/Comment.js +0 -0
  160. package/dist/esm/{classes → youtube}/Comment/CommentParser.js +1 -2
  161. package/dist/esm/{classes → youtube}/Comment/CommentReplies.js +1 -1
  162. package/dist/esm/{classes → youtube}/Comment/index.js +0 -0
  163. package/dist/esm/{classes → youtube}/Continuable/Continuable.js +0 -0
  164. package/dist/esm/{classes → youtube}/Continuable/index.js +0 -0
  165. package/dist/esm/{classes → youtube}/LiveVideo/LiveVideo.js +1 -1
  166. package/dist/esm/{classes → youtube}/LiveVideo/LiveVideoParser.js +0 -0
  167. package/dist/esm/{classes → youtube}/LiveVideo/index.js +0 -0
  168. package/dist/esm/{classes → youtube}/MixPlaylist/MixPlaylist.js +0 -0
  169. package/dist/esm/{classes → youtube}/MixPlaylist/MixPlaylistParser.js +0 -0
  170. package/dist/esm/{classes → youtube}/MixPlaylist/index.js +0 -0
  171. package/dist/esm/{classes → youtube}/Playlist/Playlist.js +0 -0
  172. package/dist/esm/{classes → youtube}/Playlist/PlaylistParser.js +1 -2
  173. package/dist/esm/{classes → youtube}/Playlist/PlaylistVideos.js +1 -1
  174. package/dist/esm/{classes → youtube}/Playlist/index.js +0 -0
  175. package/dist/esm/{classes → youtube}/PlaylistCompact/PlaylistCompact.js +0 -0
  176. package/dist/esm/{classes → youtube}/PlaylistCompact/PlaylistCompactParser.js +1 -2
  177. package/dist/esm/{classes → youtube}/PlaylistCompact/index.js +0 -0
  178. package/dist/esm/{classes → youtube}/Reply/Reply.js +0 -0
  179. package/dist/esm/{classes → youtube}/Reply/ReplyParser.js +1 -1
  180. package/dist/esm/{classes → youtube}/Reply/index.js +0 -0
  181. package/dist/esm/{classes → youtube}/SearchResult/SearchResult.js +1 -1
  182. package/dist/esm/{classes → youtube}/SearchResult/SearchResultParser.js +0 -0
  183. package/dist/esm/{classes → youtube}/SearchResult/index.js +0 -0
  184. package/dist/esm/youtube/SearchResult/proto/SearchProto.js +1 -0
  185. package/dist/esm/{classes → youtube}/SearchResult/proto/index.js +0 -0
  186. package/dist/esm/{classes → youtube}/Transcript/Transcript.js +0 -0
  187. package/dist/esm/{classes → youtube}/Transcript/TranscriptParser.js +0 -0
  188. package/dist/esm/{classes → youtube}/Transcript/index.js +0 -0
  189. package/dist/esm/{classes → youtube}/Transcript/proto/TranscriptParamsProto.js +0 -0
  190. package/dist/esm/{classes → youtube}/Transcript/proto/index.js +0 -0
  191. package/dist/esm/{classes → youtube}/Video/Video.js +0 -0
  192. package/dist/esm/{classes → youtube}/Video/VideoComments.js +1 -1
  193. package/dist/esm/{classes → youtube}/Video/VideoParser.js +1 -2
  194. package/dist/esm/{classes → youtube}/Video/index.js +0 -0
  195. package/dist/esm/{classes → youtube}/VideoCompact/VideoCompact.js +0 -0
  196. package/dist/esm/{classes → youtube}/VideoCompact/VideoCompactParser.js +1 -2
  197. package/dist/esm/{classes → youtube}/VideoCompact/index.js +0 -0
  198. package/dist/esm/{constants.js → youtube/constants.js} +1 -0
  199. package/dist/esm/{classes → youtube}/index.js +0 -1
  200. package/dist/typings/common/index.d.ts +2 -4
  201. package/dist/typings/{classes/Client → common/shared/HTTP}/HTTP.d.ts +17 -2
  202. package/dist/typings/common/shared/HTTP/index.d.ts +1 -0
  203. package/dist/typings/common/shared/Shelf/Shelf.d.ts +4 -0
  204. package/dist/typings/common/shared/Shelf/index.d.ts +1 -0
  205. package/dist/typings/{classes → common/shared}/Thumbnails/Thumbnails.d.ts +0 -0
  206. package/dist/typings/{classes → common/shared}/Thumbnails/index.d.ts +0 -0
  207. package/dist/typings/common/shared/index.d.ts +3 -0
  208. package/dist/typings/common/{decorators.d.ts → utils/decorators.d.ts} +0 -0
  209. package/dist/typings/common/{helper.d.ts → utils/helper.d.ts} +0 -0
  210. package/dist/typings/common/utils/index.d.ts +4 -0
  211. package/dist/typings/common/{mixins.d.ts → utils/mixins.d.ts} +0 -0
  212. package/dist/typings/common/{types.d.ts → utils/types.d.ts} +0 -0
  213. package/dist/typings/index.d.ts +3 -1
  214. package/dist/typings/music/MusicAlbumCompact/MusicAlbumCompact.d.ts +19 -0
  215. package/dist/typings/music/MusicAlbumCompact/index.d.ts +1 -0
  216. package/dist/typings/music/MusicArtistCompact/MusicArtistCompact.d.ts +12 -0
  217. package/dist/typings/music/MusicArtistCompact/index.d.ts +1 -0
  218. package/dist/typings/music/MusicBase/MusicBase.d.ts +11 -0
  219. package/dist/typings/music/MusicBase/index.d.ts +1 -0
  220. package/dist/typings/music/MusicBaseAlbum/MusicBaseAlbum.d.ts +13 -0
  221. package/dist/typings/music/MusicBaseAlbum/index.d.ts +1 -0
  222. package/dist/typings/music/MusicBaseArtist/MusicBaseArtist.d.ts +13 -0
  223. package/dist/typings/music/MusicBaseArtist/index.d.ts +1 -0
  224. package/dist/typings/music/MusicBaseChannel/MusicBaseChannel.d.ts +3 -0
  225. package/dist/typings/music/MusicBaseChannel/index.d.ts +1 -0
  226. package/dist/typings/music/MusicClient/MusicClient.d.ts +36 -0
  227. package/dist/typings/music/MusicClient/MusicSearchResultParser.d.ts +16 -0
  228. package/dist/typings/music/MusicClient/index.d.ts +2 -0
  229. package/dist/typings/music/MusicLyrics/MusicLyrics.d.ts +17 -0
  230. package/dist/typings/music/MusicLyrics/index.d.ts +1 -0
  231. package/dist/typings/music/MusicPlaylistCompact/MusicPlaylistCompact.d.ts +24 -0
  232. package/dist/typings/music/MusicPlaylistCompact/index.d.ts +1 -0
  233. package/dist/typings/music/MusicSongCompact/MusicSongCompact.d.ts +28 -0
  234. package/dist/typings/music/MusicSongCompact/index.d.ts +1 -0
  235. package/dist/typings/music/MusicVideoCompact/MusicVideoCompact.d.ts +24 -0
  236. package/dist/typings/music/MusicVideoCompact/index.d.ts +1 -0
  237. package/dist/typings/music/constants.d.ts +4 -0
  238. package/dist/typings/music/index.d.ts +11 -0
  239. package/dist/typings/{classes → youtube}/Base/Base.d.ts +0 -0
  240. package/dist/typings/{classes → youtube}/Base/index.d.ts +0 -0
  241. package/dist/typings/{classes → youtube}/BaseChannel/BaseChannel.d.ts +1 -2
  242. package/dist/typings/{classes → youtube}/BaseChannel/BaseChannelParser.d.ts +0 -0
  243. package/dist/typings/{classes → youtube}/BaseChannel/ChannelPlaylists.d.ts +0 -0
  244. package/dist/typings/{classes → youtube}/BaseChannel/ChannelVideos.d.ts +0 -0
  245. package/dist/typings/{classes → youtube}/BaseChannel/index.d.ts +0 -0
  246. package/dist/typings/{classes → youtube}/BaseVideo/BaseVideo.d.ts +1 -2
  247. package/dist/typings/{classes → youtube}/BaseVideo/BaseVideoParser.d.ts +0 -0
  248. package/dist/typings/{classes → youtube}/BaseVideo/VideoRelated.d.ts +0 -0
  249. package/dist/typings/{classes → youtube}/BaseVideo/index.d.ts +0 -0
  250. package/dist/typings/{classes → youtube}/Channel/Channel.d.ts +5 -8
  251. package/dist/typings/{classes → youtube}/Channel/ChannelParser.d.ts +2 -2
  252. package/dist/typings/{classes → youtube}/Channel/index.d.ts +0 -0
  253. package/dist/typings/{classes → youtube}/Chat/Chat.d.ts +0 -0
  254. package/dist/typings/{classes → youtube}/Chat/ChatParser.d.ts +0 -0
  255. package/dist/typings/{classes → youtube}/Chat/index.d.ts +0 -0
  256. package/dist/typings/{classes → youtube}/Client/Client.d.ts +1 -1
  257. package/dist/typings/{classes → youtube}/Client/index.d.ts +0 -0
  258. package/dist/typings/{classes → youtube}/Comment/Comment.d.ts +0 -0
  259. package/dist/typings/{classes → youtube}/Comment/CommentParser.d.ts +0 -0
  260. package/dist/typings/{classes → youtube}/Comment/CommentReplies.d.ts +0 -0
  261. package/dist/typings/{classes → youtube}/Comment/index.d.ts +0 -0
  262. package/dist/typings/{classes → youtube}/Continuable/Continuable.d.ts +0 -0
  263. package/dist/typings/{classes → youtube}/Continuable/index.d.ts +0 -0
  264. package/dist/typings/{classes → youtube}/LiveVideo/LiveVideo.d.ts +0 -0
  265. package/dist/typings/{classes → youtube}/LiveVideo/LiveVideoParser.d.ts +0 -0
  266. package/dist/typings/{classes → youtube}/LiveVideo/index.d.ts +0 -0
  267. package/dist/typings/{classes → youtube}/MixPlaylist/MixPlaylist.d.ts +0 -0
  268. package/dist/typings/{classes → youtube}/MixPlaylist/MixPlaylistParser.d.ts +0 -0
  269. package/dist/typings/{classes → youtube}/MixPlaylist/index.d.ts +0 -0
  270. package/dist/typings/{classes → youtube}/Playlist/Playlist.d.ts +0 -0
  271. package/dist/typings/{classes → youtube}/Playlist/PlaylistParser.d.ts +0 -0
  272. package/dist/typings/{classes → youtube}/Playlist/PlaylistVideos.d.ts +0 -0
  273. package/dist/typings/{classes → youtube}/Playlist/index.d.ts +0 -0
  274. package/dist/typings/{classes → youtube}/PlaylistCompact/PlaylistCompact.d.ts +1 -2
  275. package/dist/typings/{classes → youtube}/PlaylistCompact/PlaylistCompactParser.d.ts +0 -0
  276. package/dist/typings/{classes → youtube}/PlaylistCompact/index.d.ts +0 -0
  277. package/dist/typings/{classes → youtube}/Reply/Reply.d.ts +0 -0
  278. package/dist/typings/{classes → youtube}/Reply/ReplyParser.d.ts +0 -0
  279. package/dist/typings/{classes → youtube}/Reply/index.d.ts +0 -0
  280. package/dist/typings/{classes → youtube}/SearchResult/SearchResult.d.ts +0 -0
  281. package/dist/typings/{classes → youtube}/SearchResult/SearchResultParser.d.ts +0 -0
  282. package/dist/typings/{classes → youtube}/SearchResult/index.d.ts +0 -0
  283. package/dist/typings/{classes → youtube}/SearchResult/proto/SearchProto.d.ts +0 -0
  284. package/dist/typings/{classes → youtube}/SearchResult/proto/index.d.ts +0 -0
  285. package/dist/typings/{classes → youtube}/Transcript/Transcript.d.ts +0 -0
  286. package/dist/typings/{classes → youtube}/Transcript/TranscriptParser.d.ts +0 -0
  287. package/dist/typings/{classes → youtube}/Transcript/index.d.ts +0 -0
  288. package/dist/typings/{classes → youtube}/Transcript/proto/TranscriptParamsProto.d.ts +0 -0
  289. package/dist/typings/{classes → youtube}/Transcript/proto/index.d.ts +0 -0
  290. package/dist/typings/{classes → youtube}/Video/Video.d.ts +1 -2
  291. package/dist/typings/{classes → youtube}/Video/VideoComments.d.ts +0 -0
  292. package/dist/typings/{classes → youtube}/Video/VideoParser.d.ts +0 -0
  293. package/dist/typings/{classes → youtube}/Video/index.d.ts +0 -0
  294. package/dist/typings/{classes → youtube}/VideoCompact/VideoCompact.d.ts +1 -2
  295. package/dist/typings/{classes → youtube}/VideoCompact/VideoCompactParser.d.ts +0 -0
  296. package/dist/typings/{classes → youtube}/VideoCompact/index.d.ts +0 -0
  297. package/dist/typings/{constants.d.ts → youtube/constants.d.ts} +1 -0
  298. package/dist/typings/{classes → youtube}/index.d.ts +0 -1
  299. package/package.json +1 -1
package/README.md CHANGED
@@ -11,7 +11,9 @@
11
11
  ```
12
12
  npm i youtubei
13
13
  ```
14
+
14
15
  or use the dev build directly from GitHub:
16
+
15
17
  ```
16
18
  npm i git://github.com/suspiciouslookingowl/youtubei.git#dist
17
19
  ```
@@ -19,11 +21,12 @@ npm i git://github.com/suspiciouslookingowl/youtubei.git#dist
19
21
  ## Example
20
22
 
21
23
  ```js
22
- const { Client } = require("youtubei");
24
+ const { Client, MusicClient } = require("youtubei");
23
25
  // or for TS / ES6
24
- import { Client } from "youtubei";
26
+ import { Client, MusicClient } from "youtubei";
25
27
 
26
28
  const youtube = new Client();
29
+ const music = new MusicClient();
27
30
 
28
31
  const run = async () => {
29
32
  const videos = await youtube.search("Never gonna give you up", {
@@ -48,6 +51,9 @@ const run = async () => {
48
51
  console.log(playlist.videos.items.length); // 200 videos;
49
52
  await playlist.videos.next(0); // load the rest videos in the playlist
50
53
 
54
+ // search using music client
55
+ const shelves = await music.search("Never gonna give you up");
56
+ console.log(shelves);
51
57
  };
52
58
 
53
59
  run();
@@ -10,7 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./decorators"), exports);
14
- __exportStar(require("./helper"), exports);
15
- __exportStar(require("./mixins"), exports);
16
- __exportStar(require("./types"), exports);
13
+ __exportStar(require("./shared"), exports);
14
+ __exportStar(require("./utils"), exports);
@@ -15,12 +15,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.HTTP = void 0;
16
16
  const node_fetch_1 = __importDefault(require("node-fetch"));
17
17
  const url_1 = require("url");
18
- const constants_1 = require("../../constants");
18
+ /**
19
+ * @hidden
20
+ */
19
21
  class HTTP {
20
22
  constructor(options) {
23
+ this.apiKey = options.apiKey;
24
+ this.baseUrl = options.baseUrl;
25
+ this.clientName = options.clientName;
26
+ this.clientVersion = options.clientVersion;
21
27
  this.cookie = options.initialCookie || "";
22
28
  this.defaultHeaders = {
23
- "x-youtube-client-version": constants_1.INNERTUBE_CLIENT_VERSION,
29
+ "x-youtube-client-version": this.clientVersion,
24
30
  "x-youtube-client-name": "1",
25
31
  "content-type": "application/json",
26
32
  "accept-encoding": "gzip, deflate, br",
@@ -35,15 +41,15 @@ class HTTP {
35
41
  }
36
42
  post(url, options) {
37
43
  return __awaiter(this, void 0, void 0, function* () {
38
- return yield this.request(url, Object.assign(Object.assign({}, options), { method: "POST", params: Object.assign({ key: constants_1.INNERTUBE_API_KEY, prettyPrint: "false" }, options === null || options === void 0 ? void 0 : options.params), data: Object.assign({ context: {
39
- client: Object.assign({ clientName: "WEB", clientVersion: constants_1.INNERTUBE_CLIENT_VERSION }, this.defaultClientOptions),
44
+ return yield this.request(url, Object.assign(Object.assign({}, options), { method: "POST", params: Object.assign({ key: this.apiKey, prettyPrint: "false" }, options === null || options === void 0 ? void 0 : options.params), data: Object.assign({ context: {
45
+ client: Object.assign({ clientName: this.clientName, clientVersion: this.clientVersion }, this.defaultClientOptions),
40
46
  } }, options === null || options === void 0 ? void 0 : options.data) }));
41
47
  });
42
48
  }
43
49
  request(url, partialOptions) {
44
50
  return __awaiter(this, void 0, void 0, function* () {
45
- const options = Object.assign(Object.assign(Object.assign({}, partialOptions), this.defaultFetchOptions), { headers: Object.assign(Object.assign(Object.assign(Object.assign({}, this.defaultHeaders), { cookie: this.cookie }), partialOptions.headers), this.defaultFetchOptions.headers), body: partialOptions.data ? JSON.stringify(partialOptions.data) : undefined });
46
- const finalUrl = `https://${constants_1.BASE_URL}/${url}?${new url_1.URLSearchParams(partialOptions.params)}`;
51
+ const options = Object.assign(Object.assign(Object.assign({}, partialOptions), this.defaultFetchOptions), { headers: Object.assign(Object.assign(Object.assign(Object.assign({}, this.defaultHeaders), { cookie: this.cookie, referer: `https://${this.baseUrl}/` }), partialOptions.headers), this.defaultFetchOptions.headers), body: partialOptions.data ? JSON.stringify(partialOptions.data) : undefined });
52
+ const finalUrl = `https://${this.baseUrl}/${url}?${new url_1.URLSearchParams(partialOptions.params)}`;
47
53
  const response = yield node_fetch_1.default(finalUrl, options);
48
54
  const data = yield response.json();
49
55
  this.parseCookie(response);
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./HTTP"), exports);
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./Shelf"), exports);
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var Thumbnails_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.Thumbnails = void 0;
11
- const common_1 = require("../../common");
11
+ const utils_1 = require("../../utils");
12
12
  /**
13
13
  * Represents Thumbnails, usually found inside Playlist / Channel / Video, etc.
14
14
  *
@@ -62,6 +62,6 @@ let Thumbnails = Thumbnails_1 = class Thumbnails extends Array {
62
62
  }
63
63
  };
64
64
  Thumbnails = Thumbnails_1 = __decorate([
65
- common_1.extendsBuiltIn()
65
+ utils_1.extendsBuiltIn()
66
66
  ], Thumbnails);
67
67
  exports.Thumbnails = Thumbnails;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./HTTP"), exports);
14
+ __exportStar(require("./Shelf"), exports);
15
+ __exportStar(require("./Thumbnails"), exports);
File without changes
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./decorators"), exports);
14
+ __exportStar(require("./helper"), exports);
15
+ __exportStar(require("./mixins"), exports);
16
+ __exportStar(require("./types"), exports);
File without changes
File without changes
package/dist/cjs/index.js CHANGED
@@ -10,4 +10,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./classes"), exports);
13
+ __exportStar(require("./common/shared"), exports);
14
+ __exportStar(require("./music"), exports);
15
+ __exportStar(require("./youtube"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicAlbumCompact = void 0;
4
+ const MusicBaseAlbum_1 = require("../MusicBaseAlbum");
5
+ class MusicAlbumCompact extends MusicBaseAlbum_1.MusicBaseAlbum {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicAlbumCompact = MusicAlbumCompact;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicAlbumCompact"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicArtistCompact = void 0;
4
+ const MusicBaseArtist_1 = require("../MusicBaseArtist/MusicBaseArtist");
5
+ class MusicArtistCompact extends MusicBaseArtist_1.MusicBaseArtist {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicArtistCompact = MusicArtistCompact;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicArtistCompact"), exports);
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicBase = void 0;
4
+ class MusicBase {
5
+ /** @hidden */
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ }
10
+ exports.MusicBase = MusicBase;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicBase"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicBaseAlbum = void 0;
4
+ const MusicBase_1 = require("../MusicBase");
5
+ class MusicBaseAlbum extends MusicBase_1.MusicBase {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr.client);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicBaseAlbum = MusicBaseAlbum;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicBaseAlbum"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicBaseArtist = void 0;
4
+ const MusicBase_1 = require("../MusicBase");
5
+ class MusicBaseArtist extends MusicBase_1.MusicBase {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr.client);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicBaseArtist = MusicBaseArtist;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicBaseArtist"), exports);
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicBaseChannel = void 0;
4
+ const MusicBaseArtist_1 = require("../MusicBaseArtist");
5
+ class MusicBaseChannel extends MusicBaseArtist_1.MusicBaseArtist {
6
+ }
7
+ exports.MusicBaseChannel = MusicBaseChannel;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicBaseChannel"), exports);
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MusicClient = void 0;
13
+ const common_1 = require("../../common");
14
+ const MusicLyrics_1 = require("../MusicLyrics");
15
+ const constants_1 = require("../constants");
16
+ const MusicSearchResultParser_1 = require("./MusicSearchResultParser");
17
+ /** Youtube Music Client */
18
+ class MusicClient {
19
+ constructor(options = {}) {
20
+ const fullOptions = Object.assign(Object.assign({ initialCookie: "", fetchOptions: {} }, options), { youtubeClientOptions: Object.assign({ hl: "en", gl: "US" }, options.youtubeClientOptions) });
21
+ this.http = new common_1.HTTP(Object.assign({ apiKey: constants_1.INNERTUBE_API_KEY, baseUrl: constants_1.BASE_URL, clientName: "WEB_REMIX", clientVersion: constants_1.INNERTUBE_CLIENT_VERSION }, fullOptions));
22
+ }
23
+ /**
24
+ * Searches for video, song, album, playlist, or artist
25
+ *
26
+ * @param query The search query
27
+ * @param options Search options
28
+ *
29
+ */
30
+ search(query) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const response = yield this.http.post(`${constants_1.I_END_POINT}/search`, {
33
+ data: { query },
34
+ });
35
+ return MusicSearchResultParser_1.MusicSearchResultParser.parseSearchResult(response.data, this);
36
+ });
37
+ }
38
+ /**
39
+ * Get lyrics of a song
40
+ *
41
+ * @param query The search query
42
+ * @param options Search options
43
+ *
44
+ */
45
+ getLyrics(id) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ // get watch page data to obtain lyric browse id
48
+ const watchResponse = yield this.http.post(`${constants_1.I_END_POINT}/next`, {
49
+ data: { videoId: id },
50
+ });
51
+ const lyricTab = watchResponse.data.contents.singleColumnMusicWatchNextResultsRenderer.tabbedRenderer
52
+ .watchNextTabbedResultsRenderer.tabs[1].tabRenderer;
53
+ if (lyricTab.unselectable)
54
+ return undefined;
55
+ // get lyric data with browse id
56
+ const lyricsBrowseId = lyricTab.endpoint.browseEndpoint.browseId;
57
+ const lyricResponse = yield this.http.post(`${constants_1.I_END_POINT}/browse`, {
58
+ data: { browseId: lyricsBrowseId },
59
+ });
60
+ const data = lyricResponse.data.contents.sectionListRenderer.contents[0]
61
+ .musicDescriptionShelfRenderer;
62
+ const content = data.description.runs[0].text;
63
+ const description = data.footer.runs[0].text;
64
+ return new MusicLyrics_1.MusicLyrics({
65
+ content,
66
+ description,
67
+ });
68
+ });
69
+ }
70
+ }
71
+ exports.MusicClient = MusicClient;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicSearchResultParser = void 0;
4
+ const common_1 = require("../../common");
5
+ const MusicAlbumCompact_1 = require("../MusicAlbumCompact");
6
+ const MusicArtistCompact_1 = require("../MusicArtistCompact");
7
+ const MusicBaseArtist_1 = require("../MusicBaseArtist");
8
+ const MusicBaseChannel_1 = require("../MusicBaseChannel");
9
+ const MusicPlaylistCompact_1 = require("../MusicPlaylistCompact");
10
+ const MusicSongCompact_1 = require("../MusicSongCompact");
11
+ const MusicVideoCompact_1 = require("../MusicVideoCompact");
12
+ class MusicSearchResultParser {
13
+ static parseSearchResult(data, client) {
14
+ const sectionListContents = data.contents.tabbedSearchResultsRenderer.tabs[0].tabRenderer.content
15
+ .sectionListRenderer.contents;
16
+ const shelves = sectionListContents
17
+ .filter((f) => f.musicShelfRenderer)
18
+ .map((m) => m.musicShelfRenderer);
19
+ return shelves.map((m) => ({
20
+ title: m.title.runs.map((r) => r.text).join(),
21
+ items: m.contents.map((c) => MusicSearchResultParser.parseSearchItem(c, client)),
22
+ }));
23
+ }
24
+ static parseSearchItem(content, client) {
25
+ var _a;
26
+ const item = content.musicResponsiveListItemRenderer;
27
+ const playEndpoint = (_a = item.overlay) === null || _a === void 0 ? void 0 : _a.musicItemThumbnailOverlayRenderer.content.musicPlayButtonRenderer.playNavigationEndpoint;
28
+ if (playEndpoint === null || playEndpoint === void 0 ? void 0 : playEndpoint.watchEndpoint) {
29
+ const pageType = playEndpoint.watchEndpoint.watchEndpointMusicSupportedConfigs
30
+ .watchEndpointMusicConfig.musicVideoType;
31
+ return MusicSearchResultParser.parseVideoItem(item, pageType, client);
32
+ }
33
+ else if (playEndpoint === null || playEndpoint === void 0 ? void 0 : playEndpoint.watchPlaylistEndpoint.params) {
34
+ return MusicSearchResultParser.parsePlaylistItem(item, client);
35
+ }
36
+ else if (playEndpoint === null || playEndpoint === void 0 ? void 0 : playEndpoint.watchPlaylistEndpoint) {
37
+ return MusicSearchResultParser.parseAlbumItem(item, client);
38
+ }
39
+ else {
40
+ return MusicSearchResultParser.parseArtistItem(item, client);
41
+ }
42
+ }
43
+ static parseVideoItem(item, pageType, client) {
44
+ const [topColumn, bottomColumn] = item.flexColumns.map((c) => c.musicResponsiveListItemFlexColumnRenderer.text.runs);
45
+ const id = topColumn[0].navigationEndpoint.watchEndpoint.videoId;
46
+ const title = topColumn[0].text;
47
+ const duration = common_1.stripToInt(bottomColumn.at(-1).text) || undefined;
48
+ const thumbnails = new common_1.Thumbnails().load(item.thumbnail.musicThumbnailRenderer.thumbnail.thumbnails);
49
+ const artists = MusicSearchResultParser.parseArtists(bottomColumn, client);
50
+ if (pageType === "MUSIC_VIDEO_TYPE_ATV") {
51
+ const rawAlbum = bottomColumn.find((r) => {
52
+ var _a;
53
+ return ((_a = r.navigationEndpoint) === null || _a === void 0 ? void 0 : _a.browseEndpoint.browseEndpointContextSupportedConfigs.browseEndpointContextMusicConfig.pageType) === "MUSIC_PAGE_TYPE_ALBUM";
54
+ });
55
+ const album = rawAlbum
56
+ ? new MusicAlbumCompact_1.MusicAlbumCompact({
57
+ client,
58
+ id: rawAlbum.navigationEndpoint.browseEndpoint.browseId,
59
+ title: rawAlbum.text,
60
+ })
61
+ : undefined;
62
+ return new MusicSongCompact_1.MusicSongCompact({
63
+ client,
64
+ id,
65
+ album,
66
+ title,
67
+ artists,
68
+ thumbnails,
69
+ duration,
70
+ });
71
+ }
72
+ else {
73
+ return new MusicVideoCompact_1.MusicVideoCompact({ client, id, title, artists, thumbnails, duration });
74
+ }
75
+ }
76
+ static parsePlaylistItem(item, client) {
77
+ const [topColumn, bottomColumn] = item.flexColumns.map((c) => c.musicResponsiveListItemFlexColumnRenderer.text.runs);
78
+ const id = item.overlay.musicItemThumbnailOverlayRenderer.content.musicPlayButtonRenderer
79
+ .playNavigationEndpoint.watchPlaylistEndpoint.playlistId;
80
+ const title = topColumn[0].text;
81
+ const songCount = common_1.stripToInt(bottomColumn.at(-1).text) || undefined;
82
+ const thumbnails = new common_1.Thumbnails().load(item.thumbnail.musicThumbnailRenderer.thumbnail.thumbnails);
83
+ const channel = MusicSearchResultParser.parseChannel(bottomColumn, client);
84
+ return new MusicPlaylistCompact_1.MusicPlaylistCompact({ client, id, title, thumbnails, songCount, channel });
85
+ }
86
+ static parseAlbumItem(item, client) {
87
+ const [topColumn, bottomColumn] = item.flexColumns.map((c) => c.musicResponsiveListItemFlexColumnRenderer.text.runs);
88
+ const id = item.overlay.musicItemThumbnailOverlayRenderer.content.musicPlayButtonRenderer
89
+ .playNavigationEndpoint.watchPlaylistEndpoint.playlistId;
90
+ const title = topColumn[0].text;
91
+ const year = common_1.stripToInt(bottomColumn.at(-1).text) || undefined;
92
+ const thumbnails = new common_1.Thumbnails().load(item.thumbnail.musicThumbnailRenderer.thumbnail.thumbnails);
93
+ const artists = MusicSearchResultParser.parseArtists(bottomColumn, client);
94
+ return new MusicAlbumCompact_1.MusicAlbumCompact({ client, id, title, thumbnails, artists, year });
95
+ }
96
+ static parseArtistItem(item, client) {
97
+ const [topColumn] = item.flexColumns.map((c) => c.musicResponsiveListItemFlexColumnRenderer.text.runs);
98
+ const id = item.navigationEndpoint.browseEndpoint.browseId;
99
+ const name = topColumn[0].text;
100
+ const thumbnails = new common_1.Thumbnails().load(item.thumbnail.musicThumbnailRenderer.thumbnail.thumbnails);
101
+ return new MusicArtistCompact_1.MusicArtistCompact({ client, id, name, thumbnails });
102
+ }
103
+ static parseArtists(items, client) {
104
+ return this.parseArtistOrChannel(items).map((r) => new MusicBaseArtist_1.MusicBaseArtist({
105
+ client,
106
+ name: r.text,
107
+ id: r.navigationEndpoint.browseEndpoint.browseId,
108
+ }));
109
+ }
110
+ static parseChannel(items, client) {
111
+ const [channel] = this.parseArtistOrChannel(items).map((r) => new MusicBaseChannel_1.MusicBaseChannel({
112
+ client,
113
+ name: r.text,
114
+ id: r.navigationEndpoint.browseEndpoint.browseId,
115
+ }));
116
+ return channel;
117
+ }
118
+ static parseArtistOrChannel(items) {
119
+ return items.filter((r) => {
120
+ var _a;
121
+ const pageType = (_a = r.navigationEndpoint) === null || _a === void 0 ? void 0 : _a.browseEndpoint.browseEndpointContextSupportedConfigs.browseEndpointContextMusicConfig.pageType;
122
+ return (pageType === "MUSIC_PAGE_TYPE_ARTIST" || pageType === "MUSIC_PAGE_TYPE_USER_CHANNEL");
123
+ });
124
+ }
125
+ }
126
+ exports.MusicSearchResultParser = MusicSearchResultParser;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicClient"), exports);
14
+ __exportStar(require("./MusicSearchResultParser"), exports);
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicLyrics = void 0;
4
+ /**
5
+ * Represent lyrics of a song
6
+ */
7
+ class MusicLyrics {
8
+ /** @hidden */
9
+ constructor(attr) {
10
+ Object.assign(this, attr);
11
+ }
12
+ }
13
+ exports.MusicLyrics = MusicLyrics;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicLyrics"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicPlaylistCompact = void 0;
4
+ const MusicBase_1 = require("../MusicBase");
5
+ class MusicPlaylistCompact extends MusicBase_1.MusicBase {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr.client);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicPlaylistCompact = MusicPlaylistCompact;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MusicPlaylistCompact"), exports);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicSongCompact = void 0;
4
+ const MusicBase_1 = require("../MusicBase");
5
+ class MusicSongCompact extends MusicBase_1.MusicBase {
6
+ /** @hidden */
7
+ constructor(attr) {
8
+ super(attr.client);
9
+ Object.assign(this, attr);
10
+ }
11
+ }
12
+ exports.MusicSongCompact = MusicSongCompact;