sync-server/server.js:在 type=url 的 JSON 解析里增加多种 URL 结构识别,拿到链接后继续服务端跟随重定向并直通流媒
体,避免把 JSON 返回给 <audio>。
This commit is contained in:
@@ -400,8 +400,24 @@ function proxyRequest(targetUrl, req, res) {
|
||||
proxyRes.on('end', () => {
|
||||
try {
|
||||
const parsedBody = JSON.parse(body);
|
||||
if (parsedBody && parsedBody.url) {
|
||||
requestStream(parsedBody.url, 1);
|
||||
const extractUrl = (payload) => {
|
||||
if (!payload || typeof payload !== 'object') return null;
|
||||
if (typeof payload.url === 'string') return payload.url;
|
||||
if (typeof payload.data === 'string') return payload.data;
|
||||
if (payload.data && typeof payload.data === 'object') {
|
||||
if (typeof payload.data.url === 'string') return payload.data.url;
|
||||
if (typeof payload.data.link === 'string') return payload.data.link;
|
||||
if (payload.data.data && typeof payload.data.data.url === 'string') return payload.data.data.url;
|
||||
if (Array.isArray(payload.data) && payload.data[0] && typeof payload.data[0].url === 'string') {
|
||||
return payload.data[0].url;
|
||||
}
|
||||
}
|
||||
if (payload.result && typeof payload.result.url === 'string') return payload.result.url;
|
||||
return null;
|
||||
};
|
||||
const resolvedUrl = extractUrl(parsedBody);
|
||||
if (resolvedUrl) {
|
||||
requestStream(url.resolve(targetUrl, resolvedUrl), 1);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user