Merge branch 'NeteaseCloudMusicApiEnhanced:main' into main

This commit is contained in:
RedSTAR.Cheng
2026-03-04 10:21:38 +08:00
committed by GitHub
19 changed files with 381 additions and 386 deletions
+30
View File
@@ -0,0 +1,30 @@
// 评论统计数据
// type: 0=歌曲 1=MV 2=歌单 3=专辑 4=电台节目 5=视频 6=动态 7=电台
// ids: 资源 ID 列表,多个用逗号分隔,如 "123,456"
const { resourceTypeMap } = require('../util/config.json')
const createOption = require('../util/option.js')
// 从 resourceTypeMap 的前缀值中提取网易云内部资源类型编号
// 例如 "R_SO_4_" -> "4", "A_DR_14_" -> "14"
const resourceTypeIdMap = Object.fromEntries(
Object.entries(resourceTypeMap).map(([key, prefix]) => [
key,
prefix.replace(/_$/, '').split('_').pop(),
]),
)
module.exports = (query, request) => {
const ids = String(query.ids || query.id || '')
.split(',')
.map((id) => id.trim())
.filter(Boolean)
return request(
`/api/resource/commentInfo/list`,
{
resourceType: resourceTypeIdMap[String(query.type || 0)],
resourceIds: JSON.stringify(ids),
},
createOption(query, 'weapi'),
)
}
+2 -74
View File
@@ -1,77 +1,5 @@
// 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: [],
},
}
}
return { status: 200, body: { code: 200, data: [] } }
}