diff --git a/api/src/config.js b/api/src/config.js index bb4994c0..bc740587 100644 --- a/api/src/config.js +++ b/api/src/config.js @@ -61,6 +61,7 @@ const env = { ytSessionServer: process.env.YOUTUBE_SESSION_SERVER, ytSessionReloadInterval: 300, ytSessionInnertubeClient: process.env.YOUTUBE_SESSION_INNERTUBE_CLIENT, + ytAllowBetterAudio: process.env.YOUTUBE_ALLOW_BETTER_AUDIO !== "0", } const genericUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"; diff --git a/api/src/processing/match.js b/api/src/processing/match.js index 63de71e7..d93e1caf 100644 --- a/api/src/processing/match.js +++ b/api/src/processing/match.js @@ -113,6 +113,10 @@ export default async function({ host, patternMatch, params }) { fetchInfo.format = "vp9"; fetchInfo.isAudioOnly = true; fetchInfo.isAudioMuted = false; + + if (env.ytAllowBetterAudio && params.youtubeBetterAudio) { + fetchInfo.quality = "max"; + } } r = await youtube(fetchInfo); diff --git a/api/src/processing/schema.js b/api/src/processing/schema.js index a1b667d7..fb227714 100644 --- a/api/src/processing/schema.js +++ b/api/src/processing/schema.js @@ -46,5 +46,6 @@ export const apiSchema = z.object({ localProcessing: z.boolean().default(false), youtubeHLS: z.boolean().default(false), + youtubeBetterAudio: z.boolean().default(false), }) .strict();