api: return covers from soundcloud and youtube

& refactor createProxyTunnels() in stream/manage a little
This commit is contained in:
wukko 2025-06-26 17:36:26 +06:00
parent 4ff4766bda
commit 164ea8aeb9
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2
5 changed files with 42 additions and 10 deletions

View File

@ -34,6 +34,8 @@ export default function({
requestIP,
originalRequest: r.originalRequest,
subtitles: r.subtitles,
cover: r.cover,
cropCover: r.cropCover,
},
params = {};

View File

@ -67,6 +67,8 @@ export function createResponse(responseType, responseData) {
copy: responseData?.audioCopy,
format: responseData?.audioFormat,
bitrate: responseData?.audioBitrate,
cover: !!responseData?.cover || undefined,
cropCover: !!responseData?.cropCover || undefined,
},
isHLS: responseData?.isHLS,

View File

@ -146,8 +146,14 @@ export default async function(obj) {
copyright: json.license?.trim(),
}
let cover;
if (json.artwork_url) {
cover = json.artwork_url.replace(/-large/, "-t1080x1080");
}
return {
urls: file.toString(),
cover,
filenameAttributes: {
service: "soundcloud",
id: json.id,

View File

@ -532,6 +532,15 @@ export default async function (o) {
urls = audio.decipher(innertube.session.player);
}
let cover = `https://i.ytimg.com/vi/${o.id}/maxresdefault.jpg`;
const testMaxCover = await fetch(cover, { dispatcher: o.dispatcher })
.then(r => r.status === 200)
.catch(() => {});
if (!testMaxCover) {
cover = basicInfo.thumbnail?.[0]?.url;
}
return {
type: "audio",
isAudioOnly: true,
@ -540,7 +549,10 @@ export default async function (o) {
fileMetadata,
bestAudio,
isHLS: useHLS,
originalRequest
originalRequest,
cover,
cropCover: basicInfo.author.endsWith("- Topic"),
}
}

View File

@ -82,17 +82,19 @@ export function createProxyTunnels(info) {
urls = [urls];
}
const tunnelTemplate = {
type: "proxy",
headers: info?.headers,
requestIP: info?.requestIP,
}
for (const url of urls) {
proxyTunnels.push(
createStream({
...tunnelTemplate,
url,
type: "proxy",
service: info?.service,
headers: info?.headers,
requestIP: info?.requestIP,
originalRequest: info?.originalRequest
originalRequest: info?.originalRequest,
})
);
}
@ -100,11 +102,19 @@ export function createProxyTunnels(info) {
if (info.subtitles) {
proxyTunnels.push(
createStream({
...tunnelTemplate,
url: info.subtitles,
type: "proxy",
service: `${info?.service}-subtitles`,
headers: info?.headers,
requestIP: info?.requestIP
})
);
}
if (info.cover) {
proxyTunnels.push(
createStream({
...tunnelTemplate,
url: info.cover,
service: `${info?.service}-cover`,
})
);
}