From 1d5fa62271627ab84ac0398f39a3373488ce24ac Mon Sep 17 00:00:00 2001 From: wukko Date: Sat, 8 Jun 2024 22:59:30 +0600 Subject: [PATCH] youtube: add ratelimit error, update sign in error --- src/localization/languages/en.json | 3 ++- src/localization/languages/ru.json | 6 ++++-- src/modules/processing/services/youtube.js | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/localization/languages/en.json b/src/localization/languages/en.json index fc4d7f80..eecd9ac1 100644 --- a/src/localization/languages/en.json +++ b/src/localization/languages/en.json @@ -158,6 +158,7 @@ "ErrorInvalidContentType": "invalid content type header", "UpdateOneMillion": "1 million users and blazing speed", "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 sign in.\n\nthis limitation is an a/b test done by google to seemingly stop scraping, coincidentally affecting all 3rd party tools and even their own clients.\n\nyou can track the issue on github." + "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}." } } diff --git a/src/localization/languages/ru.json b/src/localization/languages/ru.json index 6487e531..083d7bbc 100644 --- a/src/localization/languages/ru.json +++ b/src/localization/languages/ru.json @@ -1,7 +1,7 @@ { "name": "русский", "substrings": { - "ContactLink": "глянь статус серверов или напиши о проблеме на github (можно на русском)" + "ContactLink": "глянь статус серверов или напиши о проблеме на github" }, "strings": { "AppTitleCobalt": "кобальт", @@ -158,6 +158,8 @@ "SettingsYoutubeDub": "использовать язык браузера", "SettingsYoutubeDubDescription": "использует главный язык браузера для аудиодорожек на youtube. работает даже если кобальт не переведён в твой язык.", "UpdateOneMillion": "миллион и невероятная скорость", - "ErrorYTAgeRestrict": "это видео ограничено по возрасту, поэтому я не могу его скачать. попробуй другое!" + "ErrorYTAgeRestrict": "это видео ограничено по возрасту, поэтому я не могу его скачать. попробуй другое!", + "ErrorYTLogin": "не удалось получить это видео с youtube, т. к. для его просмотра требуется учетная запись.\n\nтакое ограничение сделано google, чтобы, по-видимому, помешать скрапингу, но в итоге ломает сторонние программы и даже собственные клиенты.\n\nпопробуй ещё раз, но если проблема останется, то {ContactLink}.", + "ErrorYTRateLimit": "youtube ограничил мне частоту запросов. попробуй ещё раз через несколько секунд, но если проблема останется, то {ContactLink}." } } diff --git a/src/modules/processing/services/youtube.js b/src/modules/processing/services/youtube.js index 49de029b..1c86b4ed 100644 --- a/src/modules/processing/services/youtube.js +++ b/src/modules/processing/services/youtube.js @@ -124,6 +124,9 @@ export default async function(o) { return { error: 'ErrorYTAgeRestrict' } } } + if (playability.status === "UNPLAYABLE" && playability.reason.endsWith('request limit.')) { + return { error: 'ErrorYTRateLimit' } + } if (playability.status !== 'OK') return { error: 'ErrorYTUnavailable' }; if (info.basic_info.is_live) return { error: 'ErrorLiveVideo' };