mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2025-10-22 22:53:09 +00:00
76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
// GD音乐台get(适配SPlayer的UNM-Server)
|
|
// 感谢来自GD Studio的开发API
|
|
// https://music.gdstudio.xyz/
|
|
|
|
const createOption = require('../util/option.js')
|
|
|
|
module.exports = async (query, request) => {
|
|
try {
|
|
const { id, br = "320" } = query;
|
|
if (!id) {
|
|
return {
|
|
status: 400,
|
|
body: {
|
|
code: 400,
|
|
message: "缺少必要参数 id",
|
|
data: [],
|
|
},
|
|
};
|
|
}
|
|
const validBR = ["128", "192", "320", "740", "999"];
|
|
// const covertBR = ["128000", "192000", "320000","740000", "999000"];
|
|
if (!validBR.includes(br)) {
|
|
return {
|
|
status: 400,
|
|
body: {
|
|
code: 400,
|
|
message: "无效音质参数",
|
|
allowed_values: validBR,
|
|
data: [],
|
|
},
|
|
};
|
|
}
|
|
|
|
const apiUrl = new URL("https://music-api.gdstudio.xyz/api.php");
|
|
apiUrl.searchParams.append("types", "url");
|
|
apiUrl.searchParams.append("id", id);
|
|
apiUrl.searchParams.append("br", br);
|
|
|
|
const response = await fetch(apiUrl.toString());
|
|
if (!response.ok) throw new Error(`API 响应状态: ${response.status}`);
|
|
const result = await response.json();
|
|
|
|
// 代理逻辑
|
|
const useProxy = process.env.ENABLE_PROXY || false;
|
|
const proxy = process.env.PROXY_URL;
|
|
if (useProxy && result.url && result.url.includes("kuwo")) {
|
|
result.proxyUrl = proxy + result.url.replace(/^http:\/\//, "http/");
|
|
}
|
|
|
|
return {
|
|
status: 200,
|
|
body: {
|
|
code: 200,
|
|
message: "请求成功",
|
|
data: {
|
|
id,
|
|
br,
|
|
url: result.url,
|
|
...(proxy && result.proxyUrl ? { proxyUrl: result.proxyUrl } : {})
|
|
}
|
|
}
|
|
};
|
|
} catch (error) {
|
|
console.error("Error in song_url_ncmget:", error);
|
|
return {
|
|
status: 500,
|
|
body: {
|
|
code: 500,
|
|
message: "服务器处理请求失败",
|
|
...(process.env.NODE_ENV === "development" ? { error: error.message } : {}),
|
|
data: [],
|
|
},
|
|
};
|
|
}
|
|
}
|