音乐解析
可以解析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请求参数
| 参数名 | 类型 | 必填 | 默认值 | 枚举值 | 说明 |
|---|---|---|---|---|---|
| server | string | 是 | netease | netease,tencent,kugou,baidu,kuwo | 音乐平台 |
| type | string | 是 | search | search,song,album,artist,playlist,lrc,url,pic | 操作类型 |
| id | string | 是 | Hello | - | 资源 ID |
| auth | string | 否 | - | - | 认证令牌(仅 lrc/url/pic 类型需要) |
操作类型 [type]
| 字段名 | 类型 | 鉴权 | 说明 |
|---|---|---|---|
| search | string | 否 | 搜索歌曲 |
| song | string | 否 | 获取歌曲详情 |
| album | string | 否 | 获取专辑 |
| artist | string | 否 | 获取歌手 |
| playlist | string | 否 | 获取歌单 |
| lrc | string | 是 | 获取歌词 |
| url | string | 是 | 获取播放链接 |
| pic | string | 是 | 获取封面图片 |
返回响应
| 字段名 | 类型 | 说明 |
|---|---|---|
| name | string | 歌曲名 |
| artist | string | 歌曲作者 |
| pic | string | 歌曲封面 |
| lrc | string | 歌曲歌词 |
鉴权机制
敏感操作(lrc、url、pic)需要提供 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 不能为空"
}