// 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: [], }, } } }