youtube: catch cipher errors

not the first and seemingly not the last time it's gonna happen
This commit is contained in:
wukko 2024-08-01 07:43:51 +06:00
parent f8a28c6c5f
commit f5facc7d39
No known key found for this signature in database
GPG key ID: 3E30B3F26C7B4AA2
2 changed files with 6 additions and 2 deletions

View file

@ -160,6 +160,7 @@
"ErrorYTAgeRestrict": "this youtube video is age-restricted, so i can't see it. try another one!",
"ErrorYTLogin": "couldn't get this youtube video because it requires an account to view.\n\nthis limitation is done by google to seemingly stop scraping, affecting all 3rd party tools and even their own clients.\n\ntry again, but if issue persists, {ContactLink}.",
"ErrorYTRateLimit": "i got rate limited by youtube. try again in a few seconds, but if issue persists, {ContactLink}.",
"ErrorInvalidAcceptHeader": "invalid accept header"
"ErrorInvalidAcceptHeader": "invalid accept header",
"ErrorYoutubeDecipher": "youtube updated its decipher algorithm, so i can't get the video info. try again, but if it still doesn't work, please <a class=\"text-backdrop link\" href=\"{repo}\" target=\"_blank\">create an issue on github</a>."
}
}

View file

@ -50,7 +50,9 @@ const transformSessionData = (cookie) => {
const cloneInnertube = async (customFetch) => {
const innertube = await ytBase;
if (innertube instanceof Error) {
throw innertube;
if (innertube?.message?.endsWith("decipher algorithm")) {
return { error: "ErrorYoutubeDecipher" }
} else throw innertube;
}
const session = new Session(
@ -101,6 +103,7 @@ export default async function(o) {
dispatcher: o.dispatcher
})
);
if (yt.error) return yt;
const quality = o.quality === "max" ? "9000" : o.quality;