MusicOpenAPI
所有接口均来自互联网,本站不做任何形式的存储,请自行判断版权问题
工作原理
跨站请求伪造 (CSRF), 伪造请求头 , 调用官方 API
功能特性
- 获取推荐歌曲
- 获取推荐歌单
- 获取新歌速递
- 获取排行榜
- 获取歌单详情
- 获取排行榜详情
- 搜索歌曲
- 获取歌曲详情
- 获取歌曲播放链接
- 获取歌曲歌词
接口文档
注意
本项目仅供学习使用,请尊重版权,请勿利用此项目从事商业行为
重要信息
所有接口的 API 域名为:https://openapi.music.xzlei.xyz
获取推荐歌曲
接口地址
/recommend/songs
请求方式
GET/POST
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/recommend/songs";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/recommend/songs")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/recommend/songs"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/recommend/songs";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": [
{
"id": 123456,
"audio_name": "歌曲名称",
"artist": "歌手名称",
"album_name": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash",
"album_id":123456
},
...
]
}
获取推荐歌单
接口地址
/recommend/playlists
请求方式
GET/POST
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/recommend/playlists";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/recommend/playlists")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/recommend/playlists"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/recommend/playlist";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": [
{
"id": 123456,
"name": "歌单名称",
"intro": "歌单简介",
"songTotal": 100,
"cover": "歌单封面链接"
},
...
]
}
获取新歌速递
接口地址
/song/new/songs
请求方式
GET/POST
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/song/new/songs";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/song/new/songs")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/song/new/songs"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/song/new/songs";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": [
{
"id": 123456,
"audio_name": "歌曲名称",
"artist": "歌手名称",
"album_name": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash",
"album_id":123456
},
...
]
}
获取排行榜
接口地址
/toplist
请求方式
GET/POST
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/toplist";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/toplist")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/toplist"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/toplist";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data":[
{
"id": 123456,
"name": "排行榜名称",
"intro": "排行榜简介",
"songTotal": 100,
"cover": "排行榜封面链接"
},
...
]
}
获取歌单详情
接口地址
/playlist/detail
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 歌单id |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/playlist/detail?id=123456";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/playlist/detail?id=123456")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/playlist/detail?id=123456"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/playlist/detail?id=123456";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data":[
{
"id": 123456,
"audio_name": "歌曲名称",
"artist": "歌手名称",
"album_name": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash",
"album_id":123456
}
...
]
}
获取排行榜详情
接口地址
/toplist/detail
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 排行榜id |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/toplist/detail?id=123456";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/toplist/detail?id=123456")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/toplist/detail?id=123456"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/toplist/detail?id=123456";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": [
{
"id": 123456,
"audio_name": "歌曲名称",
"artist": "歌手名称",
"album_name": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash",
"album_id":123456
}
...
]
}
获取歌曲搜索结果
接口地址
/search
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 是 | 搜索关键词 |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/search?q=歌曲名称";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/search?q=歌曲名称")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/search?q=歌曲名称"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/search?q=歌曲名称";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": [
{
"id": 123456,
"audio_name": "歌曲名称",
"artist": "歌手名称",
"album_name": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash",
"album_id":123456
}
]
}
获取歌曲详情
接口地址
/song/detail
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hash | string | 是 | 歌曲的hash |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/song/detail?hash=02FDCA4708C32D677CDA785296C4E33D";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/song/detail?hash=02FDCA4708C32D677CDA785296C4E33D")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/song/detail?hash=02FDCA4708C32D677CDA785296C4E33D"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/song/detail?hash=02FDCA4708C32D677CDA785296C4E33D";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": {
"id": 123456,
"name": "歌曲名称",
"artist": "歌手名称",
"album": "专辑名称",
"duration": 240000,
"cover": "封面图片链接",
"hash": "歌曲hash"
}
}
获取歌曲播放链接
接口地址
/song/play/url
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hash | string | 是 | 歌曲的hash |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/song/play/url?hash=歌曲hash";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/song/play/url?hash=歌曲hash")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/song/play/url?hash=歌曲hash"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/song/play/url?hash=歌曲hash";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": {
"url": "歌曲播放链接"
}
}
注意
如果歌曲需要付费或者无音源,则返回的链接为空。
获取歌曲歌词
接口地址
/song/lyric
请求方式
GET/POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hash | string | 是 | 歌曲的hash |
| keyword | string | 否 | 歌词关键词 |
| timeLength | number | 否 | 歌词时间长度 |
示例请求代码:
Java
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class JavaHutoolApiRequest {
public static void main(String[] args) {
String apiUrl = "https://openapi.music.xzlei.xyz/song/lyric?hash=歌曲hash";
try {
String responseString = HttpUtil.get(apiUrl);
System.out.println("请求成功: " + responseString);
} catch (Exception e) {
System.err.println("请求过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}
JavaScript
axios
.post("https://openapi.music.xzlei.xyz/song/lyric?hash=歌曲hash")
.then((response) => {
console.log("响应内容:", response.data);
})
.catch((error) => {
console.error("请求失败: ", error);
});
Python
import requests
url = "https://openapi.music.xzlei.xyz/song/lyric?hash=歌曲hash"
response = requests.get(url)
if response.status_code == 200:
print("请求成功:", response.json())
else:
print("请求失败:", response.status_code)
ArkTs
import { rcp } from "@kit.RemoteCommunicationKit";
const session = rcp.createSession({
headers: header,
});
const url = "https://openapi.music.xzlei.xyz/song/lyric?hash=歌曲hash";
session
.get(url)
.then((res: rcp.Response) => {
// 业务逻辑处理
})
.catch((err: Error) => {
// 错误处理
})
.finally(() => {
session.close();
});
返回示例:
{
"code": 200,
"data": "[00:00.00] 歌词内容\n[00:10.00] 第二行歌词\n..."
}
注意
如果歌曲没有歌词,则返回的歌词为空。
更多接口正在开发中,敬请期待。
