Skip to content

音乐解析

可以解析QQ音乐、网易云音乐、酷狗、百度、酷我等音乐

接口地址

http
https://api.nxvav.cn/api/music/

请求示例

Shell
curl --location --request GET "https://api.nxvav.cn/api/music"
JavaScript
var requestOptions = {
   method: 'GET',
   redirect: 'follow'
};

fetch("https://api.nxvav.cn/api/music", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));
Java
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("https://api.nxvav.cn/api/music")
   .asString();
Swift
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

var semaphore = DispatchSemaphore (value: 0)

var request = URLRequest(url: URL(string: "https://api.nxvav.cn/api/music")!,timeoutInterval: Double.infinity)
request.httpMethod = "GET"

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
   guard let data = data else {
      print(String(describing: error))
      semaphore.signal()
      return
   }
   print(String(data: data, encoding: .utf8)!)
   semaphore.signal()
}

task.resume()
semaphore.wait()
Go
package main

import (
   "fmt"
   "net/http"
   "io/ioutil"
)

func main() {

   url := "https://api.nxvav.cn/api/music"
   method := "GET"

   client := &http.Client {
   }
   req, err := http.NewRequest(method, url, nil)

   if err != nil {
      fmt.Println(err)
      return
   }
   res, err := client.Do(req)
   if err != nil {
      fmt.Println(err)
      return
   }
   defer res.Body.Close()

   body, err := ioutil.ReadAll(res.Body)
   if err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(body))
}
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://api.nxvav.cn/api/music',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'GET',
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Python
import requests

url = "https://api.nxvav.cn/api/music"

payload={}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
C
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
   curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
   curl_easy_setopt(curl, CURLOPT_URL, "https://api.nxvav.cn/api/music");
   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
   struct curl_slist *headers = NULL;
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
   res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
C#
var client = new RestClient("https://api.nxvav.cn/api/music");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Ruby
require "uri"
require "net/http"

url = URI("https://api.nxvav.cn/api/music")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)

response = https.request(request)
puts response.read_body

请求参数

参数名类型必填默认值枚举值说明
serverstringneteasenetease,tencent,kugou,baidu,kuwo音乐平台
typestringsearchsearch,song,album,artist,playlist,lrc,url,pic操作类型
idstringHello-资源 ID
authstring--认证令牌(仅 lrc/url/pic 类型需要)

操作类型 [type]

字段名类型鉴权说明
searchstring搜索歌曲
songstring获取歌曲详情
albumstring获取专辑
artiststring获取歌手
playliststring获取歌单
lrcstring获取歌词
urlstring获取播放链接
picstring获取封面图片

返回响应

字段名类型说明
namestring歌曲名
artiststring歌曲作者
picstring歌曲封面
lrcstring歌曲歌词

鉴权机制

敏感操作(lrcurlpic)需要提供 HMAC-SHA1 签名的 token:

js
// Token 计算公式
token = HMAC - SHA1(TOKEN, server + type + id);

示例(使用 Node.js):

js
const crypto = require("crypto");

function generateToken(server, type, id, secret = "token") {
  const message = `${server}${type}${id}`;
  return crypto.createHmac("sha1", secret).update(message).digest("hex");
}

const token = generateToken("netease", "url", "123456");

返回示例

json
[
  {
    "title": "歌曲名称",
    "author": "艺术家1 / 艺术家2",
    "url": "https://api.nxvav.cn/api/music/?server=netease&type=url&id=xxx&auth=xxx",
    "pic": "https://api.nxvav.cn/api/music/?server=netease&type=pic&id=xxx&auth=xxx",
    "lrc": "https://api.nxvav.cn/api/music/?server=netease&type=lrc&id=xxx&auth=xxx"
  }
]
json
{
  "code": 400,
  "message": "参数 text 不能为空"
}