@neteasecloudmusicapienhanced/api 4.29.11

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 (412) hide show
  1. package/LICENSE +21 -0
  2. package/README.MD +178 -0
  3. package/app.js +18 -0
  4. package/data/deviceid.txt +24641 -0
  5. package/generateConfig.js +24 -0
  6. package/interface.d.ts +1834 -0
  7. package/main.js +63 -0
  8. package/module/activate_init_profile.js +9 -0
  9. package/module/aidj_content_rcmd.js +28 -0
  10. package/module/album.js +6 -0
  11. package/module/album_detail.js +12 -0
  12. package/module/album_detail_dynamic.js +12 -0
  13. package/module/album_list.js +16 -0
  14. package/module/album_list_style.js +15 -0
  15. package/module/album_new.js +11 -0
  16. package/module/album_newest.js +6 -0
  17. package/module/album_privilege.js +9 -0
  18. package/module/album_songsaleboard.js +19 -0
  19. package/module/album_sub.js +10 -0
  20. package/module/album_sublist.js +11 -0
  21. package/module/api.js +21 -0
  22. package/module/artist_album.js +15 -0
  23. package/module/artist_desc.js +9 -0
  24. package/module/artist_detail.js +10 -0
  25. package/module/artist_detail_dynamic.js +9 -0
  26. package/module/artist_fans.js +11 -0
  27. package/module/artist_follow_count.js +13 -0
  28. package/module/artist_list.js +33 -0
  29. package/module/artist_mv.js +12 -0
  30. package/module/artist_new_mv.js +12 -0
  31. package/module/artist_new_song.js +12 -0
  32. package/module/artist_songs.js +12 -0
  33. package/module/artist_sub.js +11 -0
  34. package/module/artist_sublist.js +11 -0
  35. package/module/artist_top_song.js +8 -0
  36. package/module/artist_video.js +15 -0
  37. package/module/artists.js +6 -0
  38. package/module/audio_match.js +19 -0
  39. package/module/avatar_upload.js +22 -0
  40. package/module/banner.js +16 -0
  41. package/module/batch.js +12 -0
  42. package/module/broadcast_category_region_get.js +11 -0
  43. package/module/broadcast_channel_collect_list.js +12 -0
  44. package/module/broadcast_channel_currentinfo.js +13 -0
  45. package/module/broadcast_channel_list.js +13 -0
  46. package/module/broadcast_sub.js +12 -0
  47. package/module/calendar.js +8 -0
  48. package/module/captcha_sent.js +11 -0
  49. package/module/captcha_verify.js +11 -0
  50. package/module/cellphone_existence_check.js +10 -0
  51. package/module/check_music.js +30 -0
  52. package/module/cloud.js +146 -0
  53. package/module/cloud_import.js +39 -0
  54. package/module/cloud_match.js +13 -0
  55. package/module/cloudsearch.js +13 -0
  56. package/module/comment.js +30 -0
  57. package/module/comment_album.js +16 -0
  58. package/module/comment_dj.js +16 -0
  59. package/module/comment_event.js +15 -0
  60. package/module/comment_floor.js +16 -0
  61. package/module/comment_hot.js +18 -0
  62. package/module/comment_hug_list.js +20 -0
  63. package/module/comment_like.js +20 -0
  64. package/module/comment_music.js +16 -0
  65. package/module/comment_mv.js +16 -0
  66. package/module/comment_new.js +37 -0
  67. package/module/comment_playlist.js +16 -0
  68. package/module/comment_video.js +16 -0
  69. package/module/countries_code_list.js +6 -0
  70. package/module/creator_authinfo_get.js +6 -0
  71. package/module/daily_signin.js +16 -0
  72. package/module/digitalAlbum_detail.js +13 -0
  73. package/module/digitalAlbum_ordering.js +22 -0
  74. package/module/digitalAlbum_purchased.js +15 -0
  75. package/module/digitalAlbum_sales.js +13 -0
  76. package/module/djRadio_top.js +15 -0
  77. package/module/dj_banner.js +6 -0
  78. package/module/dj_category_excludehot.js +10 -0
  79. package/module/dj_category_recommend.js +10 -0
  80. package/module/dj_catelist.js +6 -0
  81. package/module/dj_detail.js +9 -0
  82. package/module/dj_hot.js +10 -0
  83. package/module/dj_paygift.js +15 -0
  84. package/module/dj_personalize_recommend.js +12 -0
  85. package/module/dj_program.js +12 -0
  86. package/module/dj_program_detail.js +9 -0
  87. package/module/dj_program_toplist.js +10 -0
  88. package/module/dj_program_toplist_hours.js +13 -0
  89. package/module/dj_radio_hot.js +11 -0
  90. package/module/dj_recommend.js +6 -0
  91. package/module/dj_recommend_type.js +32 -0
  92. package/module/dj_sub.js +10 -0
  93. package/module/dj_sublist.js +11 -0
  94. package/module/dj_subscriber.js +12 -0
  95. package/module/dj_today_perfered.js +13 -0
  96. package/module/dj_toplist.js +14 -0
  97. package/module/dj_toplist_hours.js +10 -0
  98. package/module/dj_toplist_newcomer.js +9 -0
  99. package/module/dj_toplist_pay.js +9 -0
  100. package/module/dj_toplist_popular.js +10 -0
  101. package/module/eapi_decrypt.js +27 -0
  102. package/module/event.js +10 -0
  103. package/module/event_del.js +9 -0
  104. package/module/event_forward.js +11 -0
  105. package/module/fanscenter_basicinfo_age_get.js +6 -0
  106. package/module/fanscenter_basicinfo_gender_get.js +10 -0
  107. package/module/fanscenter_basicinfo_province_get.js +10 -0
  108. package/module/fanscenter_overview_get.js +6 -0
  109. package/module/fanscenter_trend_list.js +10 -0
  110. package/module/fm_trash.js +11 -0
  111. package/module/follow.js +11 -0
  112. package/module/get_userids.js +7 -0
  113. package/module/history_recommend_songs.js +11 -0
  114. package/module/history_recommend_songs_detail.js +13 -0
  115. package/module/homepage_block_page.js +8 -0
  116. package/module/homepage_dragon_ball.js +10 -0
  117. package/module/hot_topic.js +10 -0
  118. package/module/hug_comment.js +16 -0
  119. package/module/inner_version.js +16 -0
  120. package/module/like.js +13 -0
  121. package/module/likelist.js +9 -0
  122. package/module/listen_data_realtime_report.js +11 -0
  123. package/module/listen_data_report.js +12 -0
  124. package/module/listen_data_today_song.js +9 -0
  125. package/module/listen_data_total.js +9 -0
  126. package/module/listen_data_year_report.js +9 -0
  127. package/module/listentogether_accept.js +13 -0
  128. package/module/listentogether_end.js +9 -0
  129. package/module/listentogether_heatbeat.js +12 -0
  130. package/module/listentogether_play_command.js +21 -0
  131. package/module/listentogether_room_check.js +9 -0
  132. package/module/listentogether_room_create.js +9 -0
  133. package/module/listentogether_status.js +10 -0
  134. package/module/listentogether_sync_list_command.js +26 -0
  135. package/module/listentogether_sync_playlist_get.js +13 -0
  136. package/module/login.js +41 -0
  137. package/module/login_cellphone.js +40 -0
  138. package/module/login_qr_check.js +29 -0
  139. package/module/login_qr_create.js +30 -0
  140. package/module/login_qr_key.js +19 -0
  141. package/module/login_refresh.js +21 -0
  142. package/module/login_status.js +21 -0
  143. package/module/logout.js +6 -0
  144. package/module/lyric.js +14 -0
  145. package/module/lyric_new.js +17 -0
  146. package/module/mlog_music_rcmd.js +13 -0
  147. package/module/mlog_to_video.js +13 -0
  148. package/module/mlog_url.js +11 -0
  149. package/module/msg_comments.js +17 -0
  150. package/module/msg_forwards.js +11 -0
  151. package/module/msg_notices.js +10 -0
  152. package/module/msg_private.js +11 -0
  153. package/module/msg_private_history.js +12 -0
  154. package/module/msg_recentcontact.js +11 -0
  155. package/module/music_first_listen_info.js +13 -0
  156. package/module/musician_cloudbean.js +7 -0
  157. package/module/musician_cloudbean_obtain.js +14 -0
  158. package/module/musician_data_overview.js +11 -0
  159. package/module/musician_play_trend.js +14 -0
  160. package/module/musician_sign.js +7 -0
  161. package/module/musician_tasks.js +11 -0
  162. package/module/musician_tasks_new.js +11 -0
  163. package/module/mv_all.js +16 -0
  164. package/module/mv_detail.js +9 -0
  165. package/module/mv_detail_info.js +14 -0
  166. package/module/mv_exclusive_rcmd.js +10 -0
  167. package/module/mv_first.js +12 -0
  168. package/module/mv_sub.js +11 -0
  169. package/module/mv_sublist.js +15 -0
  170. package/module/mv_url.js +14 -0
  171. package/module/nickname_check.js +7 -0
  172. package/module/personal_fm.js +6 -0
  173. package/module/personal_fm_mode.js +14 -0
  174. package/module/personalized.js +16 -0
  175. package/module/personalized_djprogram.js +10 -0
  176. package/module/personalized_mv.js +6 -0
  177. package/module/personalized_newsong.js +15 -0
  178. package/module/personalized_privatecontent.js +10 -0
  179. package/module/personalized_privatecontent_list.js +15 -0
  180. package/module/pl_count.js +6 -0
  181. package/module/playlist_category_list.js +11 -0
  182. package/module/playlist_catlist.js +6 -0
  183. package/module/playlist_cover_update.js +32 -0
  184. package/module/playlist_create.js +11 -0
  185. package/module/playlist_delete.js +9 -0
  186. package/module/playlist_desc_update.js +10 -0
  187. package/module/playlist_detail.js +11 -0
  188. package/module/playlist_detail_dynamic.js +11 -0
  189. package/module/playlist_detail_rcmd_get.js +11 -0
  190. package/module/playlist_highquality_tags.js +10 -0
  191. package/module/playlist_hot.js +6 -0
  192. package/module/playlist_import_name_task_create.js +62 -0
  193. package/module/playlist_import_task_status.js +11 -0
  194. package/module/playlist_mylike.js +12 -0
  195. package/module/playlist_name_update.js +10 -0
  196. package/module/playlist_order_update.js +13 -0
  197. package/module/playlist_privacy.js +10 -0
  198. package/module/playlist_subscribe.js +14 -0
  199. package/module/playlist_subscribers.js +11 -0
  200. package/module/playlist_tags_update.js +10 -0
  201. package/module/playlist_track_add.js +16 -0
  202. package/module/playlist_track_all.js +31 -0
  203. package/module/playlist_track_delete.js +20 -0
  204. package/module/playlist_tracks.js +45 -0
  205. package/module/playlist_update.js +13 -0
  206. package/module/playlist_update_playcount.js +9 -0
  207. package/module/playlist_video_recent.js +9 -0
  208. package/module/playmode_intelligence_list.js +13 -0
  209. package/module/playmode_song_vector.js +8 -0
  210. package/module/program_recommend.js +15 -0
  211. package/module/rebind.js +16 -0
  212. package/module/recent_listen_list.js +7 -0
  213. package/module/recommend_resource.js +10 -0
  214. package/module/recommend_songs.js +11 -0
  215. package/module/recommend_songs_dislike.js +14 -0
  216. package/module/record_recent_album.js +11 -0
  217. package/module/record_recent_dj.js +11 -0
  218. package/module/record_recent_playlist.js +11 -0
  219. package/module/record_recent_song.js +11 -0
  220. package/module/record_recent_video.js +11 -0
  221. package/module/record_recent_voice.js +11 -0
  222. package/module/register_anonimous.js +52 -0
  223. package/module/register_cellphone.js +15 -0
  224. package/module/related_allvideo.js +14 -0
  225. package/module/related_playlist.js +32 -0
  226. package/module/resource_like.js +14 -0
  227. package/module/scrobble.js +26 -0
  228. package/module/search.js +21 -0
  229. package/module/search_default.js +6 -0
  230. package/module/search_hot.js +9 -0
  231. package/module/search_hot_detail.js +6 -0
  232. package/module/search_match.js +18 -0
  233. package/module/search_multimatch.js +14 -0
  234. package/module/search_suggest.js +14 -0
  235. package/module/send_album.js +12 -0
  236. package/module/send_playlist.js +12 -0
  237. package/module/send_song.js +12 -0
  238. package/module/send_text.js +11 -0
  239. package/module/setting.js +7 -0
  240. package/module/share_resource.js +11 -0
  241. package/module/sheet_list.js +9 -0
  242. package/module/sheet_preview.js +8 -0
  243. package/module/sign_happy_info.js +5 -0
  244. package/module/signin_progress.js +13 -0
  245. package/module/simi_artist.js +12 -0
  246. package/module/simi_mv.js +9 -0
  247. package/module/simi_playlist.js +15 -0
  248. package/module/simi_song.js +15 -0
  249. package/module/simi_user.js +11 -0
  250. package/module/song_chorus.js +11 -0
  251. package/module/song_detail.js +11 -0
  252. package/module/song_downlist.js +11 -0
  253. package/module/song_download_url.js +10 -0
  254. package/module/song_download_url_v1.js +13 -0
  255. package/module/song_dynamic_cover.js +9 -0
  256. package/module/song_like_check.js +9 -0
  257. package/module/song_lyrics_mark.js +9 -0
  258. package/module/song_lyrics_mark_add.js +12 -0
  259. package/module/song_lyrics_mark_del.js +9 -0
  260. package/module/song_lyrics_mark_user_page.js +14 -0
  261. package/module/song_monthdownlist.js +11 -0
  262. package/module/song_music_detail.js +9 -0
  263. package/module/song_order_update.js +12 -0
  264. package/module/song_purchased.js +14 -0
  265. package/module/song_red_count.js +9 -0
  266. package/module/song_singledownlist.js +11 -0
  267. package/module/song_url.js +26 -0
  268. package/module/song_url_match.js +35 -0
  269. package/module/song_url_ncmget.js +75 -0
  270. package/module/song_url_unblock.js +35 -0
  271. package/module/song_url_v1.js +54 -0
  272. package/module/song_wiki_summary.js +8 -0
  273. package/module/starpick_comments_summary.js +12 -0
  274. package/module/style_album.js +16 -0
  275. package/module/style_artist.js +16 -0
  276. package/module/style_detail.js +9 -0
  277. package/module/style_list.js +7 -0
  278. package/module/style_playlist.js +16 -0
  279. package/module/style_preference.js +11 -0
  280. package/module/style_song.js +12 -0
  281. package/module/summary_annual.js +12 -0
  282. package/module/threshold_detail_get.js +10 -0
  283. package/module/top_album.js +22 -0
  284. package/module/top_artists.js +11 -0
  285. package/module/top_list.js +20 -0
  286. package/module/top_mv.js +12 -0
  287. package/module/top_playlist.js +22 -0
  288. package/module/top_playlist_highquality.js +16 -0
  289. package/module/top_song.js +16 -0
  290. package/module/topic_detail.js +7 -0
  291. package/module/topic_detail_event_hot.js +7 -0
  292. package/module/topic_sublist.js +11 -0
  293. package/module/toplist.js +6 -0
  294. package/module/toplist_artist.js +12 -0
  295. package/module/toplist_detail.js +6 -0
  296. package/module/toplist_detail_v2.js +6 -0
  297. package/module/ugc_album_get.js +8 -0
  298. package/module/ugc_artist_get.js +8 -0
  299. package/module/ugc_artist_search.js +10 -0
  300. package/module/ugc_detail.js +17 -0
  301. package/module/ugc_mv_get.js +8 -0
  302. package/module/ugc_song_get.js +8 -0
  303. package/module/ugc_user_devote.js +6 -0
  304. package/module/user_account.js +5 -0
  305. package/module/user_audio.js +9 -0
  306. package/module/user_binding.js +9 -0
  307. package/module/user_bindingcellphone.js +15 -0
  308. package/module/user_cloud.js +10 -0
  309. package/module/user_cloud_del.js +9 -0
  310. package/module/user_cloud_detail.js +10 -0
  311. package/module/user_comment_history.js +15 -0
  312. package/module/user_detail.js +15 -0
  313. package/module/user_detail_new.js +20 -0
  314. package/module/user_dj.js +14 -0
  315. package/module/user_event.js +12 -0
  316. package/module/user_follow_mixed.js +23 -0
  317. package/module/user_followeds.js +17 -0
  318. package/module/user_follows.js +15 -0
  319. package/module/user_level.js +7 -0
  320. package/module/user_medal.js +11 -0
  321. package/module/user_mutualfollow_get.js +9 -0
  322. package/module/user_playlist.js +12 -0
  323. package/module/user_record.js +10 -0
  324. package/module/user_replacephone.js +14 -0
  325. package/module/user_social_status.js +11 -0
  326. package/module/user_social_status_edit.js +16 -0
  327. package/module/user_social_status_rcmd.js +5 -0
  328. package/module/user_social_status_support.js +5 -0
  329. package/module/user_subcount.js +6 -0
  330. package/module/user_update.js +15 -0
  331. package/module/verify_getQr.js +39 -0
  332. package/module/verify_qrcodestatus.js +12 -0
  333. package/module/video_category_list.js +15 -0
  334. package/module/video_detail.js +13 -0
  335. package/module/video_detail_info.js +14 -0
  336. package/module/video_group.js +16 -0
  337. package/module/video_group_list.js +11 -0
  338. package/module/video_sub.js +14 -0
  339. package/module/video_timeline_all.js +17 -0
  340. package/module/video_timeline_recommend.js +13 -0
  341. package/module/video_url.js +10 -0
  342. package/module/vip_growthpoint.js +11 -0
  343. package/module/vip_growthpoint_details.js +14 -0
  344. package/module/vip_growthpoint_get.js +13 -0
  345. package/module/vip_info.js +12 -0
  346. package/module/vip_info_v2.js +12 -0
  347. package/module/vip_tasks.js +11 -0
  348. package/module/vip_timemachine.js +17 -0
  349. package/module/voice_delete.js +7 -0
  350. package/module/voice_detail.js +7 -0
  351. package/module/voice_lyric.js +7 -0
  352. package/module/voice_upload.js +186 -0
  353. package/module/voicelist_detail.js +11 -0
  354. package/module/voicelist_list.js +13 -0
  355. package/module/voicelist_list_search.js +14 -0
  356. package/module/voicelist_search.js +14 -0
  357. package/module/voicelist_trans.js +15 -0
  358. package/module/weblog.js +10 -0
  359. package/module/yunbei.js +6 -0
  360. package/module/yunbei_expense.js +8 -0
  361. package/module/yunbei_info.js +5 -0
  362. package/module/yunbei_rcmd_song.js +17 -0
  363. package/module/yunbei_rcmd_song_history.js +16 -0
  364. package/module/yunbei_receipt.js +8 -0
  365. package/module/yunbei_sign.js +5 -0
  366. package/module/yunbei_task_finish.js +12 -0
  367. package/module/yunbei_tasks.js +9 -0
  368. package/module/yunbei_tasks_todo.js +9 -0
  369. package/module/yunbei_today.js +5 -0
  370. package/package.json +104 -0
  371. package/plugins/songUpload.js +61 -0
  372. package/plugins/upload.js +37 -0
  373. package/public/api.html +127 -0
  374. package/public/audio_match_demo/afp.js +1627 -0
  375. package/public/audio_match_demo/afp.wasm.js +5 -0
  376. package/public/audio_match_demo/index.html +199 -0
  377. package/public/audio_match_demo/rec.js +49 -0
  378. package/public/avatar_update.html +73 -0
  379. package/public/cloud.html +104 -0
  380. package/public/docs/.nojekyll +0 -0
  381. package/public/docs/_coverpage.md +13 -0
  382. package/public/docs/favicon.ico +0 -0
  383. package/public/docs/home.md +4857 -0
  384. package/public/docs/icon.png +0 -0
  385. package/public/docs/index.html +47 -0
  386. package/public/docs/ncmapireborn.png +0 -0
  387. package/public/docs/sw.js +90 -0
  388. package/public/eapi_decrypt.html +77 -0
  389. package/public/home.html +41 -0
  390. package/public/index.html +313 -0
  391. package/public/listen_together_host.html +324 -0
  392. package/public/login.html +47 -0
  393. package/public/playlist_cover_update.html +77 -0
  394. package/public/playlist_import.html +262 -0
  395. package/public/qrlogin-nocookie.html +72 -0
  396. package/public/qrlogin.html +71 -0
  397. package/public/static/docs.png +0 -0
  398. package/public/static/eapi_params.png +0 -0
  399. package/public/static/eapi_response.png +0 -0
  400. package/public/static/screenshot1.png +0 -0
  401. package/public/unblock_test.html +123 -0
  402. package/public/voice_upload.html +128 -0
  403. package/server.js +366 -0
  404. package/util/apicache.js +833 -0
  405. package/util/client-sign.js +169 -0
  406. package/util/config.json +20 -0
  407. package/util/crypto.js +135 -0
  408. package/util/index.js +159 -0
  409. package/util/logger.js +29 -0
  410. package/util/memory-cache.js +71 -0
  411. package/util/option.js +14 -0
  412. package/util/request.js +364 -0
@@ -0,0 +1,324 @@
1
+ <!-- eslint-disable prettier/prettier -->
2
+ <!DOCTYPE html>
3
+ <html lang="zh">
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>一起听</title>
8
+ <script src="https://unpkg.com/petite-vue"></script>
9
+ <script src="https://fastly.jsdelivr.net/npm/axios@0.26.1/dist/axios.min.js"></script>
10
+ <link
11
+ rel="stylesheet"
12
+ href="https://unpkg.com/mdui@1.0.2/dist/css/mdui.min.css"
13
+ />
14
+ <script src="https://unpkg.com/mdui@1.0.2/dist/js/mdui.min.js"></script>
15
+ </head>
16
+
17
+ <body class="mdui-container">
18
+ <div>
19
+ <a href="/qrlogin.html"> 如果没登录,请先登录 </a>
20
+ </div>
21
+ <h1>一起听 - 主机模式</h1>
22
+ <div>消息: {{message}}</div>
23
+ <audio id="player" autoplay controls></audio>
24
+ <br />
25
+ <br />
26
+ <button v-if="!account.login" @click="login">获取登录状态</button>
27
+ <div>您的当前登录账号为: {{account.nickname}}</div>
28
+ <br />
29
+ <div v-if="account.login">
30
+ <button v-if="!roomInfo.roomId" @click="createRoom">创建房间</button>
31
+ <details>
32
+ <summary>加入房间</summary>
33
+ <div><span>房间ID: </span><input v-model="roomInfo.roomId" /></div>
34
+ <div>
35
+ <span>邀请者 ID: </span><input v-model="roomInfo.inviterId" />
36
+ </div>
37
+ <button @click="joinRoom">点击加入</button>
38
+ </details>
39
+
40
+ <div v-if="roomInfo.roomId">
41
+ <div>
42
+ 分享链接为:
43
+ https://st.music.163.com/listen-together/share/?songId=1372188635&roomId={{roomInfo.roomId}}&inviterId={{roomInfo.inviterId}}
44
+ </div>
45
+ <br />
46
+ <button @click="refreshRoom">刷新房间状态</button>
47
+ <div>在线用户:</div>
48
+ <ul class="mdui-list">
49
+ <li
50
+ v-for="user in roomInfo.roomUsers"
51
+ class="mdui-list-item mdui-ripple"
52
+ >
53
+ <div class="mdui-list-item-avatar">
54
+ <img :src="user.avatarUrl" />
55
+ </div>
56
+ <div class="mdui-list-item-content">{{user.nickname}}</div>
57
+ </li>
58
+ </ul>
59
+ <button v-if="roomInfo.roomId" @click="closeRoom">关闭房间</button>
60
+ </div>
61
+ </div>
62
+ <button @click="playTrack">播放</button>
63
+ <button @click="pauseTrack">暂停</button>
64
+ <button @click="seekTrack">同步进度</button>
65
+ <details>
66
+ <summary>播放列表</summary>
67
+ <br />
68
+ <div>
69
+ <span>歌单ID: </span><input v-model="playlistInfo.playlistId" />
70
+ </div>
71
+ <button @click="loadPlaylist">加载歌单到播放列表</button>
72
+ <span>{{playlistInfo.playlistName}}</span>
73
+ <br />
74
+ <br />
75
+ <div>歌单内容:</div>
76
+ <ul class="mdui-list">
77
+ <li
78
+ @click="gotoTrack(track.id)"
79
+ v-for="track in playlistInfo.playlistTracks"
80
+ class="mdui-list-item mdui-ripple"
81
+ >
82
+ <div class="mdui-list-item-avatar">
83
+ <img :src="track.al.picUrl" />
84
+ </div>
85
+ <div class="mdui-list-item-content">{{track.name}}</div>
86
+ </li>
87
+ </ul>
88
+ </details>
89
+ </body>
90
+ <script>
91
+ const logger = require('../util/logger.js')
92
+ PetiteVue.createApp({
93
+ message: '请点击获取登录状态',
94
+ account: {
95
+ login: false,
96
+ userId: 0,
97
+ nickname: '未登录',
98
+ },
99
+ roomInfo: {
100
+ roomId: null,
101
+ inviterId: 0,
102
+ roomUsers: [],
103
+ },
104
+ playlistInfo: {
105
+ playlistId: 0,
106
+ playlistName: '未获取',
107
+ playlistTrackIds: [],
108
+ playlistTracks: [],
109
+ },
110
+ playingInfo: {
111
+ trackId: 0,
112
+ status: 'PLAY',
113
+ progress: 1,
114
+ },
115
+ clientSeq: 1,
116
+ login: async function () {
117
+ const res = await axios({
118
+ url: `/login/status?timestamp=${new Date().getTime()}`,
119
+ method: 'get',
120
+ data: {
121
+ cookie: localStorage.getItem('cookie'),
122
+ },
123
+ })
124
+ if (res.data.data.code != 200) {
125
+ alert('请先使用登录 API 登录到网易云音乐')
126
+ } else {
127
+ this.account.userId = res.data.data.profile.userId
128
+ this.account.nickname = res.data.data.profile.nickname
129
+ this.account.login = true
130
+ this.message = '成功登录, 请创建房间'
131
+ }
132
+ },
133
+ joinRoom: async function () {
134
+ const res = await axios({
135
+ url: 'listentogether/accept',
136
+ method: 'post',
137
+ data: {
138
+ roomId: this.roomInfo.roomId,
139
+ inviterId: this.roomInfo.inviterId,
140
+ cookie: localStorage.getItem('cookie'),
141
+ },
142
+ })
143
+ logger.info(res)
144
+ if (res.data.code != 200) {
145
+ this.message = '加入房间出现问题: ' + res.data.message
146
+ } else {
147
+ this.message = '加入房间成功: ' + this.roomInfo.roomId
148
+ const res2 = await axios({
149
+ url: 'listentogether/room/check',
150
+ method: 'post',
151
+ data: {
152
+ roomId: this.roomInfo.roomId,
153
+ cookie: localStorage.getItem('cookie'),
154
+ },
155
+ })
156
+ logger.info(res2)
157
+ const res3 = await axios({
158
+ url: 'listentogether/sync/playlist/get',
159
+ method: 'post',
160
+ data: {
161
+ roomId: this.roomInfo.roomId,
162
+ cookie: localStorage.getItem('cookie'),
163
+ },
164
+ })
165
+
166
+ this.playlistInfo.playlistName = '其他人的歌单'
167
+ this.playlistInfo.playlistTrackIds =
168
+ res3.data.data.playlist.displayList.result.join(',')
169
+ const resa = await axios({
170
+ url: '/song/detail',
171
+ method: 'post',
172
+ data: {
173
+ ids: this.playlistInfo.playlistTrackIds,
174
+ cookie: localStorage.getItem('cookie'),
175
+ },
176
+ })
177
+ logger.info(resa)
178
+ this.playlistInfo.playlistTracks = resa.data.songs
179
+ }
180
+ },
181
+ createRoom: async function () {
182
+ const res = await axios({
183
+ url: 'listentogether/room/create',
184
+ method: 'get',
185
+ data: {
186
+ cookie: localStorage.getItem('cookie'),
187
+ },
188
+ })
189
+ logger.info(res)
190
+ if (res.data.code != 200) {
191
+ this.message = '创建房间出现问题: ' + res.data.message
192
+ } else {
193
+ this.message = '创建房间成功: ' + res.data.data.roomInfo.roomId
194
+ this.roomInfo.inviterId = this.account.userId
195
+ this.roomInfo.roomId = res.data.data.roomInfo.roomId
196
+ const res2 = await axios({
197
+ url: 'listentogether/room/check',
198
+ method: 'post',
199
+ data: {
200
+ roomId: this.roomInfo.roomId,
201
+ cookie: localStorage.getItem('cookie'),
202
+ },
203
+ })
204
+ logger.info(res2)
205
+ }
206
+ },
207
+ refreshRoom: async function () {
208
+ const res = await axios({
209
+ url: '/listentogether/status',
210
+ data: {
211
+ cookie: localStorage.getItem('cookie'),
212
+ },
213
+ })
214
+ logger.info(res)
215
+ if (res.data.code != 200 || !res.data.data.inRoom) {
216
+ this.message = '房间状态获取失败, 可能退出了房间'
217
+ } else {
218
+ this.roomInfo.roomUsers = res.data.data.roomInfo.roomUsers
219
+ }
220
+ },
221
+ closeRoom: async function () {
222
+ const res = await axios({
223
+ url: '/listentogether/end',
224
+ method: 'post',
225
+ data: {
226
+ roomId: this.roomInfo.roomId,
227
+ cookie: localStorage.getItem('cookie'),
228
+ },
229
+ })
230
+ logger.info(res)
231
+ if (res.data.code != 200 || !res.data.data.success) {
232
+ this.message = '房间关闭失败'
233
+ } else {
234
+ this.message = '房间关闭成功'
235
+ this.roomInfo.roomId = null
236
+ }
237
+ },
238
+ loadPlaylist: async function () {
239
+ const res = await axios({
240
+ url: '/playlist/detail',
241
+ method: 'post',
242
+ data: {
243
+ id: this.playlistInfo.playlistId,
244
+ cookie: localStorage.getItem('cookie'),
245
+ },
246
+ })
247
+ logger.info(res)
248
+ this.playlistInfo.playlistName = res.data.playlist.name
249
+ this.playlistInfo.playlistTrackIds = res.data.playlist.trackIds
250
+ .map((track) => track.id)
251
+ .join(',')
252
+ const resa = await axios({
253
+ url: '/song/detail',
254
+ method: 'post',
255
+ data: {
256
+ ids: this.playlistInfo.playlistTrackIds,
257
+ cookie: localStorage.getItem('cookie'),
258
+ },
259
+ })
260
+ logger.info(resa)
261
+ this.playlistInfo.playlistTracks = resa.data.songs
262
+ if (this.roomInfo.roomId) {
263
+ const resb = await axios({
264
+ url: 'listentogether/sync/list/command',
265
+ method: 'post',
266
+ data: {
267
+ roomId: this.roomInfo.roomId,
268
+ commandType: 'REPLACE',
269
+ userId: this.account.userId,
270
+ version: this.clientSeq++,
271
+ playMode: 'ORDER_LOOP',
272
+ displayList: this.playlistInfo.playlistTrackIds,
273
+ randomList: this.playlistInfo.playlistTrackIds,
274
+ cookie: localStorage.getItem('cookie'),
275
+ },
276
+ })
277
+ logger.info(resb)
278
+ }
279
+ },
280
+ gotoTrack: async function (trackId) {
281
+ this.playingInfo.trackId = trackId
282
+ if (this.roomInfo.roomId) {
283
+ await this.playCommand('GOTO')
284
+ }
285
+ document.getElementById('player').src =
286
+ 'https://music.163.com/song/media/outer/url?id=' + trackId + '.mp3'
287
+ },
288
+ playTrack: async function () {
289
+ this.playingInfo.status = 'PLAY'
290
+ await this.playCommand('PLAY')
291
+ document.getElementById('player').play()
292
+ },
293
+ pauseTrack: async function () {
294
+ this.playingInfo.status = 'PAUSE'
295
+ await this.playCommand('PAUSE')
296
+ document.getElementById('player').pause()
297
+ },
298
+ seekTrack: async function () {
299
+ this.playingInfo.status = 'PLAY'
300
+ await this.playCommand('seek')
301
+ document.getElementById('player').play()
302
+ },
303
+ playCommand: async function (action) {
304
+ const res = await axios({
305
+ url: 'listentogether/play/command',
306
+ method: 'post',
307
+ data: {
308
+ roomId: this.roomInfo.roomId,
309
+ progress: Math.floor(
310
+ document.getElementById('player').currentTime * 1000,
311
+ ),
312
+ commandType: action,
313
+ formerSongId: '-1',
314
+ targetSongId: this.playingInfo.trackId,
315
+ clientSeq: this.clientSeq++,
316
+ playStatus: this.playingInfo.status,
317
+ cookie: localStorage.getItem('cookie'),
318
+ },
319
+ })
320
+ logger.info(res)
321
+ },
322
+ }).mount()
323
+ </script>
324
+ </html>
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>登录</title>
8
+ </head>
9
+
10
+ <body>
11
+ <script src="https://fastly.jsdelivr.net/npm/axios@0.26.1/dist/axios.min.js"></script>
12
+ <script>
13
+ const phone = '' // 这里填手机号
14
+ const password = '' // 这里填密码
15
+ const fileUpdateTime = {}
16
+ if (!phone || !password) {
17
+ const msg = '请设置你的手机号码和密码'
18
+ alert(msg)
19
+ throw new Error(msg)
20
+ }
21
+
22
+ async function login() {
23
+ const res = await axios({
24
+ url: `/login/cellphone`,
25
+ method: 'post',
26
+ data: {
27
+ phone: phone,
28
+ password: password,
29
+ },
30
+ })
31
+ return res.data.cookie
32
+ }
33
+ async function main() {
34
+ const cookieToken = await login()
35
+ const res = await axios({
36
+ url: `/login/status`,
37
+ method: 'post',
38
+ data: {
39
+ cookie: cookieToken,
40
+ },
41
+ })
42
+ }
43
+ main()
44
+ </script>
45
+ </body>
46
+
47
+ </html>
@@ -0,0 +1,77 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>歌单封面上传</title>
8
+ </head>
9
+
10
+ <body>
11
+ <div>
12
+ <a href="/qrlogin-nocookie.html">
13
+ 如果没登录,请先登录
14
+ </a>
15
+ </div>
16
+ <input id="file" type="file" name="filename" />
17
+ <img id="playlist_cover" style="height: 200px; width: 200px; border-radius: 50%" />
18
+ <script src="https://fastly.jsdelivr.net/npm/axios@0.26.1/dist/axios.min.js"></script>
19
+ <script>
20
+ const playlist_id = ''
21
+ if (!playlist_id) {
22
+ const msg = '请设置你的歌单id'
23
+ alert(msg)
24
+ throw new Error(msg)
25
+ }
26
+
27
+ main()
28
+ async function main() {
29
+ document.querySelector('input[type="file"]').addEventListener(
30
+ 'change',
31
+ function (e) {
32
+ var file = this.files[0]
33
+ upload(file)
34
+ },
35
+ false,
36
+ )
37
+ const res = await axios({
38
+ url: `/playlist/detail?id=${playlist_id}&timestamp=${Date.now()}`,
39
+ })
40
+ document.querySelector('#playlist_cover').src = res.data.playlist.coverImgUrl
41
+ }
42
+
43
+ async function upload(file) {
44
+ var formData = new FormData()
45
+ formData.append('imgFile', file)
46
+ const imgSize = await getImgSize(file)
47
+ const res = await axios({
48
+ method: 'post',
49
+ url: `/playlist/cover/update?id=${playlist_id}&cookie=${localStorage.getItem('cookie')}&imgSize=${imgSize.width
50
+ }&imgX=0&imgY=0&timestamp=${Date.now()}`,
51
+ headers: {
52
+ 'Content-Type': 'multipart/form-data',
53
+ },
54
+ data: formData,
55
+ })
56
+ document.querySelector('#playlist_cover').src = res.data.data.url
57
+ }
58
+ function getImgSize(file) {
59
+ return new Promise((resolve, reject) => {
60
+ let reader = new FileReader()
61
+ reader.readAsDataURL(file)
62
+ reader.onload = function (theFile) {
63
+ let image = new Image()
64
+ image.src = theFile.target.result
65
+ image.onload = function () {
66
+ resolve({
67
+ width: this.width,
68
+ height: this.height,
69
+ })
70
+ }
71
+ }
72
+ })
73
+ }
74
+ </script>
75
+ </body>
76
+
77
+ </html>