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', () => {
|
proxyRes.on('end', () => {
|
||||||
try {
|
try {
|
||||||
const parsedBody = JSON.parse(body);
|
const parsedBody = JSON.parse(body);
|
||||||
if (parsedBody && parsedBody.url) {
|
const extractUrl = (payload) => {
|
||||||
requestStream(parsedBody.url, 1);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user