@sansenjian/qq-music-api 2.2.7 → 2.2.9

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 (116) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +2 -0
  3. package/dist/app.js +24 -5
  4. package/dist/config/service-config.js +37 -0
  5. package/dist/jest.config.js +14 -2
  6. package/dist/middlewares/fallback-middleware.js +29 -0
  7. package/dist/module/apis/music/getMusicPlay.js +187 -0
  8. package/dist/module/apis/u_common.js +8 -2
  9. package/dist/module/apis/user/getUserPlaylists.js +5 -5
  10. package/dist/module/index.js +3 -1
  11. package/dist/package.json +4 -1
  12. package/dist/routers/context/batchGetSongInfo.js +11 -16
  13. package/dist/routers/context/batchGetSongLists.js +18 -20
  14. package/dist/routers/context/getAlbumInfo.js +10 -17
  15. package/dist/routers/context/getComments.js +12 -19
  16. package/dist/routers/context/getDailyRecommend.js +5 -17
  17. package/dist/routers/context/getHotkey.js +7 -8
  18. package/dist/routers/context/getMusicPlay.js +23 -81
  19. package/dist/routers/context/getMv.js +16 -22
  20. package/dist/routers/context/getMvPlay.js +48 -49
  21. package/dist/routers/context/getPersonalRecommend.js +13 -25
  22. package/dist/routers/context/getPlaylistTags.js +20 -26
  23. package/dist/routers/context/getRanks.js +9 -16
  24. package/dist/routers/context/getSingerAlbum.js +16 -22
  25. package/dist/routers/context/getSingerHotsong.js +16 -22
  26. package/dist/routers/context/getSingerList.js +9 -21
  27. package/dist/routers/context/getSongInfo.js +9 -16
  28. package/dist/routers/context/getSongListCategories.js +6 -7
  29. package/dist/routers/context/getSongListDetail.js +6 -8
  30. package/dist/routers/context/getUserAvatar.js +20 -33
  31. package/dist/routers/context/getUserPlaylists.js +6 -3
  32. package/dist/routers/context/index.js +94 -103
  33. package/dist/routers/util.js +31 -0
  34. package/dist/scripts/run-tests-with-flags.js +139 -0
  35. package/dist/util/cookie.js +15 -7
  36. package/dist/util/cookieResolver.js +66 -0
  37. package/dist/util/request.js +15 -6
  38. package/docs-dist/404.html +2 -2
  39. package/docs-dist/CHANGELOG-ARCHITECTURE.html +6 -6
  40. package/docs-dist/COOKIE_CONFIG_GUIDE.html +6 -6
  41. package/docs-dist/FALLBACK_MODE_GUIDE.html +101 -0
  42. package/docs-dist/README.html +6 -6
  43. package/docs-dist/TEST_USER_PLAYLISTS.html +6 -6
  44. package/docs-dist/USER_AVATAR_GUIDE.html +6 -6
  45. package/docs-dist/api/comments.html +6 -6
  46. package/docs-dist/api/index.html +6 -6
  47. package/docs-dist/api/music.html +6 -6
  48. package/docs-dist/api/other.html +6 -6
  49. package/docs-dist/api/playlist.html +6 -6
  50. package/docs-dist/api/rank.html +6 -6
  51. package/docs-dist/api/search.html +6 -6
  52. package/docs-dist/api/singer.html +6 -6
  53. package/docs-dist/api/user.html +6 -6
  54. package/docs-dist/assets/{CHANGELOG-ARCHITECTURE.md.BOe0ZtyR.js → CHANGELOG-ARCHITECTURE.md.r40JGJZK.js} +1 -1
  55. package/docs-dist/assets/{CHANGELOG-ARCHITECTURE.md.BOe0ZtyR.lean.js → CHANGELOG-ARCHITECTURE.md.r40JGJZK.lean.js} +1 -1
  56. package/docs-dist/assets/{COOKIE_CONFIG_GUIDE.md.D68AwXR2.js → COOKIE_CONFIG_GUIDE.md.BVXl7WHu.js} +1 -1
  57. package/docs-dist/assets/{COOKIE_CONFIG_GUIDE.md.D68AwXR2.lean.js → COOKIE_CONFIG_GUIDE.md.BVXl7WHu.lean.js} +1 -1
  58. package/docs-dist/assets/FALLBACK_MODE_GUIDE.md.BBdcIdh_.js +75 -0
  59. package/docs-dist/assets/FALLBACK_MODE_GUIDE.md.BBdcIdh_.lean.js +1 -0
  60. package/docs-dist/assets/{README.md.ZJQGJ1Gb.js → README.md.D6Tw0nRd.js} +1 -1
  61. package/docs-dist/assets/{README.md.ZJQGJ1Gb.lean.js → README.md.D6Tw0nRd.lean.js} +1 -1
  62. package/docs-dist/assets/{TEST_USER_PLAYLISTS.md.C02575X2.js → TEST_USER_PLAYLISTS.md.DSt20Igj.js} +1 -1
  63. package/docs-dist/assets/{TEST_USER_PLAYLISTS.md.C02575X2.lean.js → TEST_USER_PLAYLISTS.md.DSt20Igj.lean.js} +1 -1
  64. package/docs-dist/assets/{USER_AVATAR_GUIDE.md.BOqjn5Cm.js → USER_AVATAR_GUIDE.md.CVHPs2Dn.js} +1 -1
  65. package/docs-dist/assets/{USER_AVATAR_GUIDE.md.BOqjn5Cm.lean.js → USER_AVATAR_GUIDE.md.CVHPs2Dn.lean.js} +1 -1
  66. package/docs-dist/assets/{api_comments.md.DADvndEA.js → api_comments.md.79Q_C8Qp.js} +1 -1
  67. package/docs-dist/assets/{api_comments.md.DADvndEA.lean.js → api_comments.md.79Q_C8Qp.lean.js} +1 -1
  68. package/docs-dist/assets/{api_index.md.D5IASxxG.js → api_index.md.CU3By8tw.js} +1 -1
  69. package/docs-dist/assets/{api_index.md.D5IASxxG.lean.js → api_index.md.CU3By8tw.lean.js} +1 -1
  70. package/docs-dist/assets/{api_music.md.BgB8NmZq.js → api_music.md.B1AzLePX.js} +1 -1
  71. package/docs-dist/assets/{api_music.md.BgB8NmZq.lean.js → api_music.md.B1AzLePX.lean.js} +1 -1
  72. package/docs-dist/assets/{api_other.md.BkRWXX2z.js → api_other.md.DCg4bzA7.js} +1 -1
  73. package/docs-dist/assets/{api_other.md.BkRWXX2z.lean.js → api_other.md.DCg4bzA7.lean.js} +1 -1
  74. package/docs-dist/assets/{api_playlist.md.Dc0hTrZ4.js → api_playlist.md.8ACJ3QqD.js} +1 -1
  75. package/docs-dist/assets/{api_playlist.md.Dc0hTrZ4.lean.js → api_playlist.md.8ACJ3QqD.lean.js} +1 -1
  76. package/docs-dist/assets/{api_rank.md.DRisCFyT.js → api_rank.md.B8IP2ZRy.js} +1 -1
  77. package/docs-dist/assets/{api_rank.md.DRisCFyT.lean.js → api_rank.md.B8IP2ZRy.lean.js} +1 -1
  78. package/docs-dist/assets/{api_search.md.DNnMUZK0.js → api_search.md.DO9J6nvp.js} +1 -1
  79. package/docs-dist/assets/{api_search.md.DNnMUZK0.lean.js → api_search.md.DO9J6nvp.lean.js} +1 -1
  80. package/docs-dist/assets/{api_singer.md.DCmuxQkk.js → api_singer.md.CcL32xuN.js} +1 -1
  81. package/docs-dist/assets/{api_singer.md.DCmuxQkk.lean.js → api_singer.md.CcL32xuN.lean.js} +1 -1
  82. package/docs-dist/assets/{api_user.md.Cjm9GG3z.js → api_user.md.Cb7Ky3Sn.js} +1 -1
  83. package/docs-dist/assets/{api_user.md.Cjm9GG3z.lean.js → api_user.md.Cb7Ky3Sn.lean.js} +1 -1
  84. package/docs-dist/assets/{app.Dx_1wB58.js → app.CSainqD9.js} +1 -1
  85. package/docs-dist/assets/chunks/@localSearchIndexroot.BKleDIv-.js +1 -0
  86. package/docs-dist/assets/chunks/{VPLocalSearchBox.DwKWtsdX.js → VPLocalSearchBox.BUBaq7tw.js} +1 -1
  87. package/docs-dist/assets/chunks/framework.aJbMEiY9.js +19 -0
  88. package/docs-dist/assets/chunks/{theme.pGVgJ9Cx.js → theme.CzMhU0Ps.js} +2 -2
  89. package/docs-dist/assets/{guide_architecture.md.DGtNyuMH.js → guide_architecture.md.CzgqynmB.js} +1 -1
  90. package/docs-dist/assets/{guide_architecture.md.DGtNyuMH.lean.js → guide_architecture.md.CzgqynmB.lean.js} +1 -1
  91. package/docs-dist/assets/{guide_authentication.md.mtI5LfCw.js → guide_authentication.md.a8yTA8Xe.js} +1 -1
  92. package/docs-dist/assets/{guide_authentication.md.mtI5LfCw.lean.js → guide_authentication.md.a8yTA8Xe.lean.js} +1 -1
  93. package/docs-dist/assets/{guide_index.md.B-0SG46T.js → guide_index.md.BgUUL6fI.js} +1 -1
  94. package/docs-dist/assets/{guide_index.md.B-0SG46T.lean.js → guide_index.md.BgUUL6fI.lean.js} +1 -1
  95. package/docs-dist/assets/{guide_installation.md.k-KpAfxv.js → guide_installation.md.BCZ4jBl_.js} +1 -1
  96. package/docs-dist/assets/guide_installation.md.BCZ4jBl_.lean.js +1 -0
  97. package/docs-dist/assets/{guide_quickstart.md.Bff_KFOD.js → guide_quickstart.md.9-4dA6wS.js} +1 -1
  98. package/docs-dist/assets/guide_quickstart.md.9-4dA6wS.lean.js +1 -0
  99. package/docs-dist/assets/{index.md.xrs-uIyo.js → index.md.z0hAJioN.js} +1 -1
  100. package/docs-dist/assets/{index.md.xrs-uIyo.lean.js → index.md.z0hAJioN.lean.js} +1 -1
  101. package/docs-dist/assets/{reference_response-format.md.DKYTK6uJ.js → reference_response-format.md.VvQTLDZr.js} +1 -1
  102. package/docs-dist/assets/{reference_response-format.md.DKYTK6uJ.lean.js → reference_response-format.md.VvQTLDZr.lean.js} +1 -1
  103. package/docs-dist/guide/architecture.html +6 -6
  104. package/docs-dist/guide/authentication.html +6 -6
  105. package/docs-dist/guide/index.html +6 -6
  106. package/docs-dist/guide/installation.html +6 -6
  107. package/docs-dist/guide/quickstart.html +6 -6
  108. package/docs-dist/hashmap.json +1 -1
  109. package/docs-dist/index.html +5 -5
  110. package/docs-dist/reference/response-format.html +6 -6
  111. package/docs-dist/version.json +3 -3
  112. package/package.json +4 -1
  113. package/docs-dist/assets/chunks/@localSearchIndexroot.CMY5EIwU.js +0 -1
  114. package/docs-dist/assets/chunks/framework.o40iizuP.js +0 -19
  115. package/docs-dist/assets/guide_installation.md.k-KpAfxv.lean.js +0 -1
  116. package/docs-dist/assets/guide_quickstart.md.Bff_KFOD.lean.js +0 -1
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.o40iizuP.js";const g=JSON.parse('{"title":"音乐相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/music.md","filePath":"api/music.md","lastUpdated":1772969060000}'),n={name:"api/music.md"};function l(p,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h(`<h1 id="音乐相关-api" tabindex="-1">音乐相关 API <a class="header-anchor" href="#音乐相关-api" aria-label="Permalink to &quot;音乐相关 API&quot;">​</a></h1><p>音乐播放、歌词、专辑等相关接口。</p><h2 id="获取音乐播放-url" tabindex="-1">获取音乐播放 URL <a class="header-anchor" href="#获取音乐播放-url" aria-label="Permalink to &quot;获取音乐播放 URL&quot;">​</a></h2><p>获取歌曲播放地址。</p><p><strong>接口:</strong> <code>GET /getMusicPlay</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>songmid</td><td>string</td><td>是</td><td>歌曲 MID</td></tr><tr><td>songid</td><td>number</td><td>否</td><td>歌曲 ID</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMusicPlay?songmid=003rJSwm3TechU</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
1
+ import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.aJbMEiY9.js";const g=JSON.parse('{"title":"音乐相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/music.md","filePath":"api/music.md","lastUpdated":1773499772000}'),n={name:"api/music.md"};function l(p,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h(`<h1 id="音乐相关-api" tabindex="-1">音乐相关 API <a class="header-anchor" href="#音乐相关-api" aria-label="Permalink to &quot;音乐相关 API&quot;">​</a></h1><p>音乐播放、歌词、专辑等相关接口。</p><h2 id="获取音乐播放-url" tabindex="-1">获取音乐播放 URL <a class="header-anchor" href="#获取音乐播放-url" aria-label="Permalink to &quot;获取音乐播放 URL&quot;">​</a></h2><p>获取歌曲播放地址。</p><p><strong>接口:</strong> <code>GET /getMusicPlay</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>songmid</td><td>string</td><td>是</td><td>歌曲 MID</td></tr><tr><td>songid</td><td>number</td><td>否</td><td>歌曲 ID</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMusicPlay?songmid=003rJSwm3TechU</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">code</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
3
3
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">msg</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">success</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
4
4
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">data</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.o40iizuP.js";const g=JSON.parse('{"title":"音乐相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/music.md","filePath":"api/music.md","lastUpdated":1772969060000}'),n={name:"api/music.md"};function l(p,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h("",38)])])}const y=i(n,[["render",l]]);export{g as __pageData,y as default};
1
+ import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.aJbMEiY9.js";const g=JSON.parse('{"title":"音乐相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/music.md","filePath":"api/music.md","lastUpdated":1773499772000}'),n={name:"api/music.md"};function l(p,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h("",38)])])}const y=i(n,[["render",l]]);export{g as __pageData,y as default};
@@ -1,4 +1,4 @@
1
- import{_ as s,o as a,c as i,ag as e}from"./chunks/framework.o40iizuP.js";const c=JSON.parse('{"title":"其他接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/other.md","filePath":"api/other.md","lastUpdated":1772969060000}'),d={name:"api/other.md"};function h(n,t,l,o,p,r){return a(),i("div",null,[...t[0]||(t[0]=[e(`<h1 id="其他接口" tabindex="-1">其他接口 <a class="header-anchor" href="#其他接口" aria-label="Permalink to &quot;其他接口&quot;">​</a></h1><p>本页整理了 MV、图片、数字专辑、下载、扫码登录、电台、推荐等接口。</p><h2 id="mv-相关" tabindex="-1">MV 相关 <a class="header-anchor" href="#mv-相关" aria-label="Permalink to &quot;MV 相关&quot;">​</a></h2><h3 id="获取-mv-列表" tabindex="-1">获取 MV 列表 <a class="header-anchor" href="#获取-mv-列表" aria-label="Permalink to &quot;获取 MV 列表&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMv</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>area_id</td><td>number</td><td>否</td><td>地区 ID,默认 15</td></tr><tr><td>version_id</td><td>number</td><td>否</td><td>版本 ID,默认 7</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>返回数量,默认 20</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码,默认 0</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMv?area_id=1&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="获取-mv-播放地址" tabindex="-1">获取 MV 播放地址 <a class="header-anchor" href="#获取-mv-播放地址" aria-label="Permalink to &quot;获取 MV 播放地址&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMvPlay</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>vid</td><td>string</td><td>是</td><td>MV 视频 ID</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMvPlay?vid=001J5QJL1pRQYB</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>返回说明:</strong></p><p>成功时会在响应中的 <code>playLists</code> 字段下按清晰度聚合播放地址,通常包含 <code>f10</code>、<code>f20</code>、<code>f30</code>、<code>f40</code> 等分组。</p><p><strong>注意事项:</strong></p><ul><li><code>vid</code> 缺失时会返回 <code>400</code></li><li>当上游 MV URL 数据为空时,当前实现会返回 <code>502</code></li><li>当前实现会同时聚合 <code>mp4</code> 与 <code>hls</code> 的 <code>freeflow_url</code> 数据</li></ul><h3 id="按标签获取-mv" tabindex="-1">按标签获取 MV <a class="header-anchor" href="#按标签获取-mv" aria-label="Permalink to &quot;按标签获取 MV&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMvByTag</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>tag</td><td>string</td><td>是</td><td>MV 标签</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMvByTag?tag=流行&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="图片相关" tabindex="-1">图片相关 <a class="header-anchor" href="#图片相关" aria-label="Permalink to &quot;图片相关&quot;">​</a></h2><h3 id="获取图片-url" tabindex="-1">获取图片 URL <a class="header-anchor" href="#获取图片-url" aria-label="Permalink to &quot;获取图片 URL&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getImageUrl</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>是</td><td>图片资源 ID</td></tr><tr><td>size</td><td>string</td><td>否</td><td>图片尺寸,默认 <code>300x300</code></td></tr><tr><td>maxAge</td><td>number</td><td>否</td><td>缓存时间,默认 <code>2592000</code></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getImageUrl?id=004AlfUb0cVkN1&amp;size=500x500</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="数字专辑" tabindex="-1">数字专辑 <a class="header-anchor" href="#数字专辑" aria-label="Permalink to &quot;数字专辑&quot;">​</a></h2><h3 id="获取数字专辑列表" tabindex="-1">获取数字专辑列表 <a class="header-anchor" href="#获取数字专辑列表" aria-label="Permalink to &quot;获取数字专辑列表&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getDigitalAlbumLists</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>limit</td><td>number</td><td>否</td><td>数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getDigitalAlbumLists?limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="下载相关" tabindex="-1">下载相关 <a class="header-anchor" href="#下载相关" aria-label="Permalink to &quot;下载相关&quot;">​</a></h2><h3 id="下载-qq-音乐资源地址" tabindex="-1">下载 QQ 音乐资源地址 <a class="header-anchor" href="#下载-qq-音乐资源地址" aria-label="Permalink to &quot;下载 QQ 音乐资源地址&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /downloadQQMusic</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>songmid</td><td>string</td><td>是</td><td>歌曲 MID</td></tr><tr><td>quality</td><td>string</td><td>否</td><td>音质,如 <code>128</code>、<code>m4a</code>、<code>flac</code></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/downloadQQMusic?songmid=003rJSwm3TechU&amp;quality=128</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="用户与扫码登录" tabindex="-1">用户与扫码登录 <a class="header-anchor" href="#用户与扫码登录" aria-label="Permalink to &quot;用户与扫码登录&quot;">​</a></h2><h3 id="获取-qq-登录二维码" tabindex="-1">获取 QQ 登录二维码 <a class="header-anchor" href="#获取-qq-登录二维码" aria-label="Permalink to &quot;获取 QQ 登录二维码&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getQQLoginQr</code></p><p><strong>兼容接口:</strong> <code>GET /user/getQQLoginQr</code></p><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getQQLoginQr</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="检查扫码登录状态" tabindex="-1">检查扫码登录状态 <a class="header-anchor" href="#检查扫码登录状态" aria-label="Permalink to &quot;检查扫码登录状态&quot;">​</a></h3><p><strong>接口:</strong> <code>POST /checkQQLoginQr</code></p><p><strong>兼容接口:</strong> <code>POST /user/checkQQLoginQr</code></p><p><strong>请求体参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>qrsig</td><td>string</td><td>是</td><td>二维码签名</td></tr><tr><td>ptqrtoken</td><td>string</td><td>否</td><td>轮询状态时使用的 token</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -X</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> POST</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/checkQQLoginQr</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> \\</span></span>
1
+ import{_ as s,o as a,c as i,ag as e}from"./chunks/framework.aJbMEiY9.js";const c=JSON.parse('{"title":"其他接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/other.md","filePath":"api/other.md","lastUpdated":1773499772000}'),d={name:"api/other.md"};function h(n,t,l,o,p,r){return a(),i("div",null,[...t[0]||(t[0]=[e(`<h1 id="其他接口" tabindex="-1">其他接口 <a class="header-anchor" href="#其他接口" aria-label="Permalink to &quot;其他接口&quot;">​</a></h1><p>本页整理了 MV、图片、数字专辑、下载、扫码登录、电台、推荐等接口。</p><h2 id="mv-相关" tabindex="-1">MV 相关 <a class="header-anchor" href="#mv-相关" aria-label="Permalink to &quot;MV 相关&quot;">​</a></h2><h3 id="获取-mv-列表" tabindex="-1">获取 MV 列表 <a class="header-anchor" href="#获取-mv-列表" aria-label="Permalink to &quot;获取 MV 列表&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMv</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>area_id</td><td>number</td><td>否</td><td>地区 ID,默认 15</td></tr><tr><td>version_id</td><td>number</td><td>否</td><td>版本 ID,默认 7</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>返回数量,默认 20</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码,默认 0</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMv?area_id=1&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="获取-mv-播放地址" tabindex="-1">获取 MV 播放地址 <a class="header-anchor" href="#获取-mv-播放地址" aria-label="Permalink to &quot;获取 MV 播放地址&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMvPlay</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>vid</td><td>string</td><td>是</td><td>MV 视频 ID</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMvPlay?vid=001J5QJL1pRQYB</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>返回说明:</strong></p><p>成功时会在响应中的 <code>playLists</code> 字段下按清晰度聚合播放地址,通常包含 <code>f10</code>、<code>f20</code>、<code>f30</code>、<code>f40</code> 等分组。</p><p><strong>注意事项:</strong></p><ul><li><code>vid</code> 缺失时会返回 <code>400</code></li><li>当上游 MV URL 数据为空时,当前实现会返回 <code>502</code></li><li>当前实现会同时聚合 <code>mp4</code> 与 <code>hls</code> 的 <code>freeflow_url</code> 数据</li></ul><h3 id="按标签获取-mv" tabindex="-1">按标签获取 MV <a class="header-anchor" href="#按标签获取-mv" aria-label="Permalink to &quot;按标签获取 MV&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getMvByTag</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>tag</td><td>string</td><td>是</td><td>MV 标签</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getMvByTag?tag=流行&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="图片相关" tabindex="-1">图片相关 <a class="header-anchor" href="#图片相关" aria-label="Permalink to &quot;图片相关&quot;">​</a></h2><h3 id="获取图片-url" tabindex="-1">获取图片 URL <a class="header-anchor" href="#获取图片-url" aria-label="Permalink to &quot;获取图片 URL&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getImageUrl</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>是</td><td>图片资源 ID</td></tr><tr><td>size</td><td>string</td><td>否</td><td>图片尺寸,默认 <code>300x300</code></td></tr><tr><td>maxAge</td><td>number</td><td>否</td><td>缓存时间,默认 <code>2592000</code></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getImageUrl?id=004AlfUb0cVkN1&amp;size=500x500</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="数字专辑" tabindex="-1">数字专辑 <a class="header-anchor" href="#数字专辑" aria-label="Permalink to &quot;数字专辑&quot;">​</a></h2><h3 id="获取数字专辑列表" tabindex="-1">获取数字专辑列表 <a class="header-anchor" href="#获取数字专辑列表" aria-label="Permalink to &quot;获取数字专辑列表&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getDigitalAlbumLists</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>limit</td><td>number</td><td>否</td><td>数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getDigitalAlbumLists?limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="下载相关" tabindex="-1">下载相关 <a class="header-anchor" href="#下载相关" aria-label="Permalink to &quot;下载相关&quot;">​</a></h2><h3 id="下载-qq-音乐资源地址" tabindex="-1">下载 QQ 音乐资源地址 <a class="header-anchor" href="#下载-qq-音乐资源地址" aria-label="Permalink to &quot;下载 QQ 音乐资源地址&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /downloadQQMusic</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>songmid</td><td>string</td><td>是</td><td>歌曲 MID</td></tr><tr><td>quality</td><td>string</td><td>否</td><td>音质,如 <code>128</code>、<code>m4a</code>、<code>flac</code></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/downloadQQMusic?songmid=003rJSwm3TechU&amp;quality=128</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h2 id="用户与扫码登录" tabindex="-1">用户与扫码登录 <a class="header-anchor" href="#用户与扫码登录" aria-label="Permalink to &quot;用户与扫码登录&quot;">​</a></h2><h3 id="获取-qq-登录二维码" tabindex="-1">获取 QQ 登录二维码 <a class="header-anchor" href="#获取-qq-登录二维码" aria-label="Permalink to &quot;获取 QQ 登录二维码&quot;">​</a></h3><p><strong>接口:</strong> <code>GET /getQQLoginQr</code></p><p><strong>兼容接口:</strong> <code>GET /user/getQQLoginQr</code></p><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getQQLoginQr</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="检查扫码登录状态" tabindex="-1">检查扫码登录状态 <a class="header-anchor" href="#检查扫码登录状态" aria-label="Permalink to &quot;检查扫码登录状态&quot;">​</a></h3><p><strong>接口:</strong> <code>POST /checkQQLoginQr</code></p><p><strong>兼容接口:</strong> <code>POST /user/checkQQLoginQr</code></p><p><strong>请求体参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>qrsig</td><td>string</td><td>是</td><td>二维码签名</td></tr><tr><td>ptqrtoken</td><td>string</td><td>否</td><td>轮询状态时使用的 token</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -X</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> POST</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/checkQQLoginQr</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> \\</span></span>
2
2
  <span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -H</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">Content-Type: application/json</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> \\</span></span>
3
3
  <span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -d</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &#39;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">{&quot;qrsig&quot;:&quot;你的 qrsig&quot;,&quot;ptqrtoken&quot;:&quot;你的 ptqrtoken&quot;}</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&#39;</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">提示</p><p>如果你通过前一个接口获取二维码,通常需要保留响应中的关键字段,再传给登录状态检查接口。</p></div><div class="warning custom-block"><p class="custom-block-title">已知失败分支</p><p>当前实现会对超时、二维码失效、提取不到 <code>checkSigUrl</code>、提取不到 <code>p_skey</code>、授权跳转缺少 <code>code</code> 等场景返回明确错误。</p></div><h2 id="批量接口" tabindex="-1">批量接口 <a class="header-anchor" href="#批量接口" aria-label="Permalink to &quot;批量接口&quot;">​</a></h2><h3 id="批量获取歌曲信息" tabindex="-1">批量获取歌曲信息 <a class="header-anchor" href="#批量获取歌曲信息" aria-label="Permalink to &quot;批量获取歌曲信息&quot;">​</a></h3><p><strong>接口:</strong> <code>POST /batchGetSongInfo</code></p><p><strong>请求体参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>songs</td><td>array</td><td>否</td><td>歌曲列表,元素格式为 <code>[song_mid, song_id]</code></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -X</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> POST</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/batchGetSongInfo</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> \\</span></span>
4
4
  <span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -H</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">Content-Type: application/json</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> \\</span></span>
@@ -1 +1 @@
1
- import{_ as s,o as a,c as i,ag as e}from"./chunks/framework.o40iizuP.js";const c=JSON.parse('{"title":"其他接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/other.md","filePath":"api/other.md","lastUpdated":1772969060000}'),d={name:"api/other.md"};function h(n,t,l,o,p,r){return a(),i("div",null,[...t[0]||(t[0]=[e("",95)])])}const g=s(d,[["render",h]]);export{c as __pageData,g as default};
1
+ import{_ as s,o as a,c as i,ag as e}from"./chunks/framework.aJbMEiY9.js";const c=JSON.parse('{"title":"其他接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/other.md","filePath":"api/other.md","lastUpdated":1773499772000}'),d={name:"api/other.md"};function h(n,t,l,o,p,r){return a(),i("div",null,[...t[0]||(t[0]=[e("",95)])])}const g=s(d,[["render",h]]);export{c as __pageData,g as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"歌单相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/playlist.md","filePath":"api/playlist.md","lastUpdated":1772969060000}'),h={name:"api/playlist.md"};function p(l,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="歌单相关-api" tabindex="-1">歌单相关 API <a class="header-anchor" href="#歌单相关-api" aria-label="Permalink to &quot;歌单相关 API&quot;">​</a></h1><p>歌单分类、歌单详情、新歌专辑等接口。</p><h2 id="获取歌单列表" tabindex="-1">获取歌单列表 <a class="header-anchor" href="#获取歌单列表" aria-label="Permalink to &quot;获取歌单列表&quot;">​</a></h2><p>获取歌单列表,支持分类筛选。</p><p><strong>接口:</strong> <code>GET /getSongLists</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>categoryId</td><td>number</td><td>否</td><td>分类 ID</td></tr><tr><td>sortId</td><td>number</td><td>否</td><td>排序方式</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSongLists?limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"歌单相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/playlist.md","filePath":"api/playlist.md","lastUpdated":1773499772000}'),h={name:"api/playlist.md"};function p(l,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="歌单相关-api" tabindex="-1">歌单相关 API <a class="header-anchor" href="#歌单相关-api" aria-label="Permalink to &quot;歌单相关 API&quot;">​</a></h1><p>歌单分类、歌单详情、新歌专辑等接口。</p><h2 id="获取歌单列表" tabindex="-1">获取歌单列表 <a class="header-anchor" href="#获取歌单列表" aria-label="Permalink to &quot;获取歌单列表&quot;">​</a></h2><p>获取歌单列表,支持分类筛选。</p><p><strong>接口:</strong> <code>GET /getSongLists</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>categoryId</td><td>number</td><td>否</td><td>分类 ID</td></tr><tr><td>sortId</td><td>number</td><td>否</td><td>排序方式</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSongLists?limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">code</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
3
3
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">msg</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">success</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
4
4
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">data</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"歌单相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/playlist.md","filePath":"api/playlist.md","lastUpdated":1772969060000}'),h={name:"api/playlist.md"};function p(l,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",45)])])}const y=i(h,[["render",p]]);export{o as __pageData,y as default};
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"歌单相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/playlist.md","filePath":"api/playlist.md","lastUpdated":1773499772000}'),h={name:"api/playlist.md"};function p(l,s,k,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",45)])])}const y=i(h,[["render",p]]);export{o as __pageData,y as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"排行榜 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/rank.md","filePath":"api/rank.md","lastUpdated":1772969060000}'),h={name:"api/rank.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="排行榜-api" tabindex="-1">排行榜 API <a class="header-anchor" href="#排行榜-api" aria-label="Permalink to &quot;排行榜 API&quot;">​</a></h1><p>各种音乐排行榜接口。</p><h2 id="获取排行榜列表" tabindex="-1">获取排行榜列表 <a class="header-anchor" href="#获取排行榜列表" aria-label="Permalink to &quot;获取排行榜列表&quot;">​</a></h2><p>获取所有排行榜列表或具体榜单详情。</p><p><strong>接口:</strong> <code>GET /getRanks</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>topId</td><td>number</td><td>否</td><td>榜单 ID(不传返回所有榜单)</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>返回数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 获取所有榜单</span></span>
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"排行榜 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/rank.md","filePath":"api/rank.md","lastUpdated":1773499772000}'),h={name:"api/rank.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="排行榜-api" tabindex="-1">排行榜 API <a class="header-anchor" href="#排行榜-api" aria-label="Permalink to &quot;排行榜 API&quot;">​</a></h1><p>各种音乐排行榜接口。</p><h2 id="获取排行榜列表" tabindex="-1">获取排行榜列表 <a class="header-anchor" href="#获取排行榜列表" aria-label="Permalink to &quot;获取排行榜列表&quot;">​</a></h2><p>获取所有排行榜列表或具体榜单详情。</p><p><strong>接口:</strong> <code>GET /getRanks</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>topId</td><td>number</td><td>否</td><td>榜单 ID(不传返回所有榜单)</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>返回数量限制</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 获取所有榜单</span></span>
2
2
  <span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getRanks</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span>
3
3
  <span class="line"></span>
4
4
  <span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 获取具体榜单</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"排行榜 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/rank.md","filePath":"api/rank.md","lastUpdated":1772969060000}'),h={name:"api/rank.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",15)])])}const y=i(h,[["render",l]]);export{o as __pageData,y as default};
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"排行榜 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/rank.md","filePath":"api/rank.md","lastUpdated":1773499772000}'),h={name:"api/rank.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",15)])])}const y=i(h,[["render",l]]);export{o as __pageData,y as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"搜索 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/search.md","filePath":"api/search.md","lastUpdated":1772969060000}'),h={name:"api/search.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="搜索-api" tabindex="-1">搜索 API <a class="header-anchor" href="#搜索-api" aria-label="Permalink to &quot;搜索 API&quot;">​</a></h1><p>歌曲、歌手、专辑、歌单搜索接口。</p><h2 id="搜索" tabindex="-1">搜索 <a class="header-anchor" href="#搜索" aria-label="Permalink to &quot;搜索&quot;">​</a></h2><p>支持关键词搜索,返回歌曲、歌手、专辑等信息。</p><p><strong>接口:</strong> <code>GET /getSearchByKey</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>key</td><td>string</td><td>是</td><td>搜索关键词</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr><tr><td>catZhida</td><td>number</td><td>否</td><td>是否开启智能搜索</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSearchByKey?key=周杰伦&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"搜索 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/search.md","filePath":"api/search.md","lastUpdated":1773499772000}'),h={name:"api/search.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n(`<h1 id="搜索-api" tabindex="-1">搜索 API <a class="header-anchor" href="#搜索-api" aria-label="Permalink to &quot;搜索 API&quot;">​</a></h1><p>歌曲、歌手、专辑、歌单搜索接口。</p><h2 id="搜索" tabindex="-1">搜索 <a class="header-anchor" href="#搜索" aria-label="Permalink to &quot;搜索&quot;">​</a></h2><p>支持关键词搜索,返回歌曲、歌手、专辑等信息。</p><p><strong>接口:</strong> <code>GET /getSearchByKey</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>key</td><td>string</td><td>是</td><td>搜索关键词</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr><tr><td>catZhida</td><td>number</td><td>否</td><td>是否开启智能搜索</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSearchByKey?key=周杰伦&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">code</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
3
3
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">msg</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">success</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
4
4
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">data</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.o40iizuP.js";const o=JSON.parse('{"title":"搜索 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/search.md","filePath":"api/search.md","lastUpdated":1772969060000}'),h={name:"api/search.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",31)])])}const y=i(h,[["render",l]]);export{o as __pageData,y as default};
1
+ import{_ as i,o as a,c as t,ag as n}from"./chunks/framework.aJbMEiY9.js";const o=JSON.parse('{"title":"搜索 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/search.md","filePath":"api/search.md","lastUpdated":1773499772000}'),h={name:"api/search.md"};function l(k,s,p,e,d,r){return a(),t("div",null,[...s[0]||(s[0]=[n("",31)])])}const y=i(h,[["render",l]]);export{o as __pageData,y as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as t,c as a,ag as h}from"./chunks/framework.o40iizuP.js";const g=JSON.parse('{"title":"歌手相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/singer.md","filePath":"api/singer.md","lastUpdated":1772969060000}'),n={name:"api/singer.md"};function e(l,s,p,d,k,r){return t(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="歌手相关-api" tabindex="-1">歌手相关 API <a class="header-anchor" href="#歌手相关-api" aria-label="Permalink to &quot;歌手相关 API&quot;">​</a></h1><p>歌手列表、歌手详情、热门歌曲、MV 等接口。</p><h2 id="获取歌手列表" tabindex="-1">获取歌手列表 <a class="header-anchor" href="#获取歌手列表" aria-label="Permalink to &quot;获取歌手列表&quot;">​</a></h2><p>获取歌手列表,支持筛选。</p><p><strong>接口:</strong> <code>GET /getSingerList</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>area</td><td>number</td><td>否</td><td>地区(-1=全部,2=华语,3=欧美等)</td></tr><tr><td>sex</td><td>number</td><td>否</td><td>性别(-1=全部,1=男,2=女)</td></tr><tr><td>genre</td><td>number</td><td>否</td><td>流派(-1=全部,1=流行,2=摇滚等)</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSingerList?area=-1&amp;sex=-1&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
1
+ import{_ as i,o as t,c as a,ag as h}from"./chunks/framework.aJbMEiY9.js";const g=JSON.parse('{"title":"歌手相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/singer.md","filePath":"api/singer.md","lastUpdated":1773499772000}'),n={name:"api/singer.md"};function e(l,s,p,d,k,r){return t(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="歌手相关-api" tabindex="-1">歌手相关 API <a class="header-anchor" href="#歌手相关-api" aria-label="Permalink to &quot;歌手相关 API&quot;">​</a></h1><p>歌手列表、歌手详情、热门歌曲、MV 等接口。</p><h2 id="获取歌手列表" tabindex="-1">获取歌手列表 <a class="header-anchor" href="#获取歌手列表" aria-label="Permalink to &quot;获取歌手列表&quot;">​</a></h2><p>获取歌手列表,支持筛选。</p><p><strong>接口:</strong> <code>GET /getSingerList</code></p><p><strong>参数:</strong></p><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td>area</td><td>number</td><td>否</td><td>地区(-1=全部,2=华语,3=欧美等)</td></tr><tr><td>sex</td><td>number</td><td>否</td><td>性别(-1=全部,1=男,2=女)</td></tr><tr><td>genre</td><td>number</td><td>否</td><td>流派(-1=全部,1=流行,2=摇滚等)</td></tr><tr><td>page</td><td>number</td><td>否</td><td>页码</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>每页数量</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/getSingerList?area=-1&amp;sex=-1&amp;limit=20</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">code</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
3
3
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">msg</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">success</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
4
4
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">data</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as t,c as a,ag as h}from"./chunks/framework.o40iizuP.js";const g=JSON.parse('{"title":"歌手相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/singer.md","filePath":"api/singer.md","lastUpdated":1772969060000}'),n={name:"api/singer.md"};function e(l,s,p,d,k,r){return t(),a("div",null,[...s[0]||(s[0]=[h("",57)])])}const c=i(n,[["render",e]]);export{g as __pageData,c as default};
1
+ import{_ as i,o as t,c as a,ag as h}from"./chunks/framework.aJbMEiY9.js";const g=JSON.parse('{"title":"歌手相关 API","description":"","frontmatter":{},"headers":[],"relativePath":"api/singer.md","filePath":"api/singer.md","lastUpdated":1773499772000}'),n={name:"api/singer.md"};function e(l,s,p,d,k,r){return t(),a("div",null,[...s[0]||(s[0]=[h("",57)])])}const c=i(n,[["render",e]]);export{g as __pageData,c as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.o40iizuP.js";const c=JSON.parse('{"title":"用户接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/user.md","filePath":"api/user.md","lastUpdated":1772969060000}'),n={name:"api/user.md"};function l(e,s,k,p,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h(`<h1 id="用户接口" tabindex="-1">用户接口 <a class="header-anchor" href="#用户接口" aria-label="Permalink to &quot;用户接口&quot;">​</a></h1><p>本页整理与用户信息、登录、头像、歌单获取相关的接口能力。</p><h2 id="接口总览" tabindex="-1">接口总览 <a class="header-anchor" href="#接口总览" aria-label="Permalink to &quot;接口总览&quot;">​</a></h2><ul><li><code>GET /user/getUserPlaylists</code></li><li><code>GET /user/getUserAvatar</code></li><li><code>GET /user/getQQLoginQr</code></li><li><code>POST /user/checkQQLoginQr</code></li></ul><h2 id="获取用户歌单" tabindex="-1">获取用户歌单 <a class="header-anchor" href="#获取用户歌单" aria-label="Permalink to &quot;获取用户歌单&quot;">​</a></h2><h3 id="接口" tabindex="-1">接口 <a class="header-anchor" href="#接口" aria-label="Permalink to &quot;接口&quot;">​</a></h3><p><code>GET /user/getUserPlaylists</code></p><h3 id="说明" tabindex="-1">说明 <a class="header-anchor" href="#说明" aria-label="Permalink to &quot;说明&quot;">​</a></h3><p>获取指定用户的歌单列表。该接口通常与登录态配置配合使用。</p><h3 id="参数" tabindex="-1">参数 <a class="header-anchor" href="#参数" aria-label="Permalink to &quot;参数&quot;">​</a></h3><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>uin</td><td>string</td><td>是</td><td>-</td><td>QQ 用户号码</td></tr><tr><td>offset</td><td>number</td><td>否</td><td>0</td><td>偏移量</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>30</td><td>返回数量</td></tr></tbody></table><h3 id="请求示例" tabindex="-1">请求示例 <a class="header-anchor" href="#请求示例" aria-label="Permalink to &quot;请求示例&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/user/getUserPlaylists?uin=123456789&amp;offset=0&amp;limit=30</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="响应示例" tabindex="-1">响应示例 <a class="header-anchor" href="#响应示例" aria-label="Permalink to &quot;响应示例&quot;">​</a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
1
+ import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.aJbMEiY9.js";const c=JSON.parse('{"title":"用户接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/user.md","filePath":"api/user.md","lastUpdated":1773499772000}'),n={name:"api/user.md"};function l(e,s,k,p,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h(`<h1 id="用户接口" tabindex="-1">用户接口 <a class="header-anchor" href="#用户接口" aria-label="Permalink to &quot;用户接口&quot;">​</a></h1><p>本页整理与用户信息、登录、头像、歌单获取相关的接口能力。</p><h2 id="接口总览" tabindex="-1">接口总览 <a class="header-anchor" href="#接口总览" aria-label="Permalink to &quot;接口总览&quot;">​</a></h2><ul><li><code>GET /user/getUserPlaylists</code></li><li><code>GET /user/getUserAvatar</code></li><li><code>GET /user/getQQLoginQr</code></li><li><code>POST /user/checkQQLoginQr</code></li></ul><h2 id="获取用户歌单" tabindex="-1">获取用户歌单 <a class="header-anchor" href="#获取用户歌单" aria-label="Permalink to &quot;获取用户歌单&quot;">​</a></h2><h3 id="接口" tabindex="-1">接口 <a class="header-anchor" href="#接口" aria-label="Permalink to &quot;接口&quot;">​</a></h3><p><code>GET /user/getUserPlaylists</code></p><h3 id="说明" tabindex="-1">说明 <a class="header-anchor" href="#说明" aria-label="Permalink to &quot;说明&quot;">​</a></h3><p>获取指定用户的歌单列表。该接口通常与登录态配置配合使用。</p><h3 id="参数" tabindex="-1">参数 <a class="header-anchor" href="#参数" aria-label="Permalink to &quot;参数&quot;">​</a></h3><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>必填</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>uin</td><td>string</td><td>是</td><td>-</td><td>QQ 用户号码</td></tr><tr><td>offset</td><td>number</td><td>否</td><td>0</td><td>偏移量</td></tr><tr><td>limit</td><td>number</td><td>否</td><td>30</td><td>返回数量</td></tr></tbody></table><h3 id="请求示例" tabindex="-1">请求示例 <a class="header-anchor" href="#请求示例" aria-label="Permalink to &quot;请求示例&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">curl</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">http://localhost:3200/user/getUserPlaylists?uin=123456789&amp;offset=0&amp;limit=30</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span></code></pre></div><h3 id="响应示例" tabindex="-1">响应示例 <a class="header-anchor" href="#响应示例" aria-label="Permalink to &quot;响应示例&quot;">​</a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">code</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span></span>
3
3
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">data</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
4
4
  <span class="line"><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;"> &quot;</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">playlists</span><span style="--shiki-light:#99841877;--shiki-dark:#B8A96577;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> [</span></span>
@@ -1 +1 @@
1
- import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.o40iizuP.js";const c=JSON.parse('{"title":"用户接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/user.md","filePath":"api/user.md","lastUpdated":1772969060000}'),n={name:"api/user.md"};function l(e,s,k,p,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h("",62)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default};
1
+ import{_ as i,o as a,c as t,ag as h}from"./chunks/framework.aJbMEiY9.js";const c=JSON.parse('{"title":"用户接口","description":"","frontmatter":{},"headers":[],"relativePath":"api/user.md","filePath":"api/user.md","lastUpdated":1773499772000}'),n={name:"api/user.md"};function l(e,s,k,p,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h("",62)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default};
@@ -1 +1 @@
1
- import{t as p}from"./chunks/theme.pGVgJ9Cx.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.o40iizuP.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
1
+ import{t as p}from"./chunks/theme.CzMhU0Ps.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.aJbMEiY9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};