QQ音樂API koa2實現 - 全介面實現

Rain120發表於2019-06-04

QQMusicAPI

QQ音樂API koa2 版本, 通過Web網頁版請求QQ音樂介面資料, 有問題請提issue, 或者你有其他想法歡迎PR.

Github

知乎

環境要求

因為本專案採用的是`koa2`, 所以請確保你的`node`版本是7.6.0+

node -v
複製程式碼

安裝

git@github.com:Rain120/qq-music-api.git
npm install
複製程式碼

專案啟動

// npm i -g nodemon
npm run start

// or don't install nodemon
node app.js
複製程式碼

專案監聽埠是3200

使用文件

使用apis詳見文件

關於本人

Rain120: 前端菜鳥, 入職前端1年, 公司的技術棧是React, 因為公司官網由我重構過, 我使用的Vue.js重構的。目前正在脫坑, 求大佬內推呀

API結構圖

qq-music

API介面

koa介面說明(引數, 地址, 效果圖)

獲取QQ音樂產品的下載地址

介面說明: 呼叫此介面, 可獲取QQ音樂標準產品下載連結

介面地址: /downloadQQMusic

呼叫例子: /downloadQQMusic

示例截圖:

獲取QQ音樂產品的下載地址

獲取歌單分類

介面說明: 呼叫此介面, 可獲取歌單分類, 包含category資訊

介面地址: /getSongListCategories

呼叫例子: /getSongListCategories

SortID
sortId: 1, sortName: 預設
sortId: 2, sortName: 最新
sortId: 3, sortName: 最熱
sortId: 4, sortName: 評分
sortId: 5, sortName: none
複製程式碼

歌單分類(categoryId & categoryName)

1. 熱門
1.1
  "categoryId": 10000000,
  "categoryName": 全部,
複製程式碼
2. 語種
2.1
  "categoryId": 167,
  "categoryName": "英語",
2.2
  "categoryId": 168,
  "categoryName": "韓語",
2.3
  "categoryId": 166,
  "categoryName": "粵語",
2.4
  "categoryId": 169,
  "categoryName": "日語",
2.5
  "categoryId": 170,
  "categoryName": "小語種",
2.6
  "categoryId": 203,
  "categoryName": "閩南語",
2.7
  "categoryId": 204,
  "categoryName": "法語",
2.8
  "categoryId": 205,
  "categoryName": "拉丁語",
複製程式碼
3. 流派
3.1
  "categoryId": 6,
  "categoryName": "流行",
3.2
  "categoryId": 15,
  "categoryName": "輕音樂",
3.3
  "categoryId": 11,
  "categoryName": "搖滾",
3.4
  "categoryId": 28,
  "categoryName": "民謠",
3.5
  "categoryId": 8,
  "categoryName": "R&B",
3.6
  "categoryId": 153,
  "categoryName": "嘻哈",
3.7
  "categoryId": 24,
  "categoryName": "電子",
3.8
  "categoryId": 27,
  "categoryName": "古典",
3.9
  "categoryId": 18,
  "categoryName": "鄉村",
3.10
  "categoryId": 22,
  "categoryName": "藍調",
3.11
  "categoryId": 21,
  "categoryName": "爵士",
3.12
  "categoryId": 164,
  "categoryName": "新世紀",
3.13
  "categoryId": 25,
  "categoryName": "拉丁",
3.14
  "categoryId": 218,
  "categoryName": "後搖",
3.15
  "categoryId": 219,
  "categoryName": "中國傳統",
3.16
  "categoryId": 220,
  "categoryName": "世界音樂",
複製程式碼
4. 主題
4.1
  "categoryId": 39,
  "categoryName": "ACG",
4.2
  "categoryId": 136,
  "categoryName": "經典",
4.3
  "categoryId": 146,
  "categoryName": "網路歌曲",
4.4
  "categoryId": 133,
  "categoryName": "影視",
4.5
  "categoryId": 141,
  "categoryName": "KTV熱歌",
4.6
  "categoryId": 131,
  "categoryName": "兒歌",
4.7
  "categoryId": 145,
  "categoryName": "中國風",
4.8
  "categoryId": 194,
  "categoryName": "古風",
4.9
  "categoryId": 148,
  "categoryName": "情歌",
4.10
  "categoryId": 196,
  "categoryName": "城市",
4.11
  "categoryId": 197,
  "categoryName": "現場音樂",
4.12
  "categoryId": 199,
  "categoryName": "背景音樂",
4.13
  "categoryId": 200,
  "categoryName": "佛教音樂",
4.14
  "categoryId": 201,
  "categoryName": "UP主",
4.15
  "categoryId": 202,
  "categoryName": "樂器",
4.16
  "categoryId": 14,
  "categoryName": "DJ",
複製程式碼
5. 心情
5.1
  "categoryId": 52,
  "categoryName": "傷感",
5.2
  "categoryId": 122,
  "categoryName": "安靜",
5.3
  "categoryId": 117,
  "categoryName": "快樂",
5.4
  "categoryId": 116,
  "categoryName": "治癒",
5.5
  "categoryId": 125,
  "categoryName": "勵志",
5.6
  "categoryId": 59,
  "categoryName": "甜蜜",
5.7
  "categoryId": 55,
  "categoryName": "寂寞",
5.8
  "categoryId": 126,
  "categoryName": "宣洩",
5.9
  "categoryId": 68,
  "categoryName": "思念",
複製程式碼
6. 場景
6.1
  "categoryId": 78,
  "categoryName": "睡前",
6.2
  "categoryId": 102,
  "categoryName": "夜店",
6.3
  "categoryId": 101,
  "categoryName": "學習",
6.4
  "categoryId": 99,
  "categoryName": "運動",
6.5
  "categoryId": 99,
  "categoryName": "運動",
6.6
  "categoryId": 76,
  "categoryName": "約會",
6.7
  "categoryId": 94,
  "categoryName": "工作",
6.8
  "categoryId": 81,
  "categoryName": "旅行",
6.9
  "categoryId": 103,
  "categoryName": "派對",
6.10
  "categoryId": 222,
  "categoryName": "婚禮",
6.11
  "categoryId": 223,
  "categoryName": "咖啡館",
6.12
  "categoryId": 224,
  "categoryName": "跳舞",
6.13
  "categoryId": 16,
  "categoryName": "校園",
複製程式碼

示例截圖:

獲取歌單分類

獲取歌單列表

介面說明: 呼叫此介面, 可獲取歌單列表

引數列表:

  • 必選引數

categoryId: 類別id

  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 20

sortId: 最新, 最熱,評分, 預設為5

介面地址: /getSongLists

呼叫例子: /getSongLists?categoryId=10000000

示例截圖:

獲取歌單列表

獲取歌單列表

獲取歌單列表-帶引數

獲取歌單列表-帶引數

獲取歌單詳情

介面說明: 呼叫此介面, 可獲取歌單詳情

引數列表:

  • 必選引數

disstid: 歌單id

介面地址: /getSongListDetail

呼叫例子: /getSongListDetail?disstid=7011264340

示例截圖:

獲取歌單詳情

獲取MV標籤

介面說明: 呼叫此介面, 可獲取MV標籤

介面地址: /getMvByTag

呼叫例子: /getMvByTag

示例截圖:

獲取MV標籤

獲取MV播放資訊

介面說明: 呼叫此介面, 可獲取MV播放資訊

引數列表:

  • 必選引數

vid: video id

介面地址: /getMvPlay

呼叫例子: /getMvPlay?vid=u00222le4ox

示例截圖:

獲取MV播放資訊

獲取歌手MV

介面說明: 呼叫此介面, 可獲取歌手MV

引數列表:

  • 必選引數

singermid: 歌手id

  • 可選引數

order: 當前MV型別, 預設為time

  • listen: 歌手專輯音樂MV

  • time: 粉絲上傳MV視訊

limit: 取出歌單數量, 預設為5

介面地址: /getSingerMV

呼叫例子: /getSingerMV?singermid=0025NhlN2yWrP4&order=all&limit=5

示例截圖:

獲取歌手MV - default

獲取歌手MV - belong

獲取歌手MV - fans

獲取相似歌手

介面說明: 呼叫此介面, 可獲取相似歌手

引數列表:

  • 必選引數

singermid: 歌手id

介面地址: /getSimilarSinger

呼叫例子: /getSimilarSinger?singermid=0025NhlN2yWrP4

示例截圖:

獲取相似歌手

獲取歌手資訊

介面說明: 呼叫此介面, 可獲取歌手資訊

引數列表:

  • 必選引數

singermid: 歌手id

介面地址: /getSingerDesc

呼叫例子: /getSingerDesc?singermid=0025NhlN2yWrP4

示例截圖:

獲取歌手資訊

獲取歌手被關注數量資訊

介面說明: 呼叫此介面, 可獲取歌手被關注數量資訊

引數列表:

  • 必選引數

singermid: 歌手id

介面地址: /getSingerStarNum

呼叫例子: /getSingerStarNum?singermid=0025NhlN2yWrP4

示例截圖:

獲取歌手被關注數量資訊

獲取電臺列表

介面說明: 呼叫此介面, 可獲取電臺列表, 分類

介面地址: /getRadioLists

呼叫例子: /getRadioLists

示例截圖:

獲取電臺列表

獲取專輯

介面說明: 呼叫此介面, 可獲取專輯資訊(專輯列表、詳情)

引數列表:

  • 必選引數

albummid: 專輯id

介面地址: /getAlbumInfo

呼叫例子: /getAlbumInfo?albummid=0016l2F430zMux

示例截圖:

獲取專輯

獲取數字專輯

介面說明: 呼叫此介面, 可獲取數字專輯, 輪播圖banner, 專輯列表等資訊, 詳見API結構圖

介面地址: /getDigitalAlbumLists

呼叫例子: /getDigitalAlbumLists

示例截圖:

獲取數字專輯

獲取歌曲歌詞

介面說明: 呼叫此介面, 可獲取歌曲歌詞

引數列表:

  • 必選引數

songmid: 專輯id

  • 可選引數

isFormat: 是否格式化歌詞, 預設值為 false

介面地址: /getLyric

呼叫例子: /getLyric?songmid=003rJSwm3TechU

示例截圖:

獲取歌曲歌詞 - 未格式化

獲取歌曲歌詞 - 格式化

獲取MV

介面說明: 呼叫此介面, 可獲取MV以及其Tag資訊

引數列表:

  • 必選引數

area_id: 區域id, 預設值為全部(15)

Area
"area": [
  {
    "id": 15,
    "name": "全部"
  },
  {
    "id": 16,
    "name": "內地"
  },
  {
    "id": 17,
    "name": "港臺"
  },
  {
    "id": 18,
    "name": "歐美"
  },
  {
    "id": 19,
    "name": "韓國"
  },
  {
    "id": 20,
    "name": "日本"
  }
]
複製程式碼

version_id: 版本id, 預設值為全部(7)

Version
"version": [
  {
    "id": 7,
    "name": "全部"
  },
  {
    "id": 8,
    "name": "MV"
  },
  {
    "id": 9,
    "name": "現場"
  },
  {
    "id": 10,
    "name": "翻唱"
  },
  {
    "id": 11,
    "name": "舞蹈"
  },
  {
    "id": 12,
    "name": "影視"
  },
  {
    "id": 13,
    "name": "綜藝"
  },
  {
    "id": 14,
    "name": "兒歌"
  }
]
複製程式碼
  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 20

介面地址: /getMv

呼叫例子: /getMv

示例截圖:

獲取MV

獲取新碟資訊

介面說明: 呼叫此介面, 可獲取新碟資訊

引數列表:

  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 20

介面地址: /getNewDisks

呼叫例子: /getNewDisks

示例截圖:

獲取新碟資訊

獲取歌手專輯

介面說明: 呼叫此介面, 可獲取歌手專輯

引數列表:

  • 必選引數

singermid: 歌手id

  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 20

介面地址: /getSingerAlbum

呼叫例子: /getSingerAlbum?singermid=0025NhlN2yWrP4

示例截圖:

獲取歌手專輯

獲取歌曲VKey

介面說明: 呼叫此介面, 可獲取歌曲VKey

引數列表:

  • 必選引數

songmid: 歌曲id

介面地址: /getMusicVKey

呼叫例子: /getMusicVKey?songmid=0025NhlN2yWrP4

示例截圖:

獲取歌曲VKey

獲取搜尋熱詞

介面說明: 呼叫此介面, 可獲取搜尋熱詞

介面地址: /getHotkey

呼叫例子: /getHotkey

示例截圖:

獲取搜尋熱詞

獲取關鍵字搜尋提示

介面說明: 呼叫此介面, 可獲取獲取關鍵字搜尋提示

引數列表:

  • 必選引數

key: 搜尋關鍵字

介面地址: /getSmartbox

呼叫例子: /getSmartbox?key=周杰倫

示例截圖:

獲取獲取關鍵字搜尋提示

獲取搜尋結果

介面說明: 呼叫此介面, 可獲取獲取搜尋結果

引數列表(部分引數待註釋):

  • 必選引數

key: 搜尋關鍵字

catZhida: 0表示歌曲, 2表示歌手, 3表示專輯, 預設值為1

  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 10

介面地址: /getSearchByKey

呼叫例子: /getSearchByKey?key=周杰倫

示例截圖:

獲取獲取搜尋結果

獲取首頁推薦

介面說明: 呼叫此介面, 可獲取首頁推薦

介面地址: /getRecommend

呼叫例子: /getRecommend

示例截圖:

獲取首頁推薦

獲取排行榜單列表

介面說明: 呼叫此介面, 可獲取排行榜單列表

  • 可選引數

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 10

介面地址: /getTopLists

呼叫例子: /getTopLists

示例截圖:

獲取排行榜單列表

獲取排行榜單詳情

介面說明: 呼叫此介面, 可獲取排行榜單詳情

  • 可選引數

topId: 榜單id

page: 當前頁數, 預設為1

limit: 取出歌單數量, 預設為 10

介面地址: /getRanks

呼叫例子: /getRanks

示例截圖:

獲取排行榜單詳情

獲取評論資訊(cmd代表的意思沒太弄明白)

介面說明: 呼叫此介面, 可獲取評論資訊

  • 可選引數 id: 專輯或者歌單請求結果的id

  • 可選引數

rootcommentid: 榜單id

cid:

pagenum: 當前頁數, 預設為0

pagesize: 取出評論數量, 預設為 25

cmd:

reqtype:

biztype:

介面地址: /getComments

呼叫例子: /getComments?id=8220&rootcommentid=album_8220_1003310416_1558068713

示例截圖:

獲取評論資訊 - id獲取

獲取評論資訊

獲取評論資訊 - 帶params

獲取票務資訊

介面說明: 呼叫此介面, 可獲取票務資訊

介面地址: /getTicketInfo

呼叫例子: /getTicketInfo

示例截圖:

獲取票務資訊

關於專案

靈感來自

Binaryify/NeteaseCloudMusicApi

Vue2.0開發企業級移動端音樂Web App

參考內容

Koa 2

Axios

阮一峰老師 - HTTP Referer 教程

專案不足

  1. 因為本人沒寫過unit test, 所以本專案尚未新增unit test, 等有時間再新增;

  2. 登入獲取個人資訊等介面都沒做

相關文章