All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m21s
64 lines
2.4 KiB
Diff
64 lines
2.4 KiB
Diff
From cf2b1bf9570193caf2dba89bcb70d5866c3ff48c Mon Sep 17 00:00:00 2001
|
|
From: Fijxu <fijxu@nadeko.net>
|
|
Date: Tue, 25 Mar 2025 00:04:47 -0300
|
|
Subject: [PATCH 10/13] add proxy retries on innertube error
|
|
|
|
---
|
|
src/lib/helpers/config.ts | 1 +
|
|
src/lib/helpers/youtubePlayerHandling.ts | 23 ++++++++++++++++++++++-
|
|
2 files changed, 23 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
|
index 83ce0fa..d539738 100644
|
|
--- a/src/lib/helpers/config.ts
|
|
+++ b/src/lib/helpers/config.ts
|
|
@@ -43,6 +43,7 @@ const ConfigSchema = z.object({
|
|
external_videoplayback_proxy: z.string().default(
|
|
Deno.env.get("EXTERNAL_VIDEOPLAYBACK_PROXY") || "",
|
|
),
|
|
+ max_proxy_retries: z.number().default(Number(Deno.env.get("MAX_PROXY_RETIRES") || 5)),
|
|
}).strict().default({}),
|
|
jobs: z.object({
|
|
youtube_session: z.object({
|
|
diff --git a/src/lib/helpers/youtubePlayerHandling.ts b/src/lib/helpers/youtubePlayerHandling.ts
|
|
index c7c2f74..396eabf 100644
|
|
--- a/src/lib/helpers/youtubePlayerHandling.ts
|
|
+++ b/src/lib/helpers/youtubePlayerHandling.ts
|
|
@@ -40,12 +40,33 @@ export const youtubePlayerParsing = async ({
|
|
if (videoCached != null && cacheEnabled) {
|
|
return JSON.parse(new TextDecoder().decode(decompress(videoCached)));
|
|
} else {
|
|
- const youtubePlayerResponse = await youtubePlayerReq(
|
|
+ let youtubePlayerResponse = await youtubePlayerReq(
|
|
innertubeClient,
|
|
videoId,
|
|
config,
|
|
tokenMinter,
|
|
);
|
|
+
|
|
+ const maxRetries = config.networking.max_proxy_retries;
|
|
+ for (let retries = 1; retries <= (maxRetries as number); retries++) {
|
|
+ if (
|
|
+ !youtubePlayerResponse.data.playabilityStatus?.errorScreen
|
|
+ ?.playerErrorMessageRenderer?.subreason?.runs?.[0]?.text
|
|
+ ?.includes("This helps protect our community")
|
|
+ ) {
|
|
+ break;
|
|
+ }
|
|
+ console.log(
|
|
+ `[DEBUG] Got 'This helps protect our community', retrying request for ${videoId}. Retry ${retries} of ${maxRetries}`,
|
|
+ );
|
|
+ youtubePlayerResponse = await youtubePlayerReq(
|
|
+ innertubeClient,
|
|
+ videoId,
|
|
+ config,
|
|
+ tokenMinter,
|
|
+ );
|
|
+ }
|
|
+
|
|
const videoData = youtubePlayerResponse.data;
|
|
|
|
const video = new YT.VideoInfo(
|
|
--
|
|
2.49.0
|
|
|