invidious-companion-patches/patches/0016-metrics-add-live-premiere-and-private-video-errors.patch
Fijxu a5b522acf2
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m0s
add 0020
2025-04-22 17:01:06 -04:00

114 lines
3.9 KiB
Diff

From 99ffaffdaa73ed95ddafeccb2ce6e945f7df4446 Mon Sep 17 00:00:00 2001
From: Fijxu <fijxu@nadeko.net>
Date: Sun, 20 Apr 2025 02:18:50 -0400
Subject: [PATCH 16/20] metrics: add live, premiere and private video errors
---
src/lib/helpers/metrics.ts | 42 ++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/src/lib/helpers/metrics.ts b/src/lib/helpers/metrics.ts
index e1b0b73..ae778f2 100644
--- a/src/lib/helpers/metrics.ts
+++ b/src/lib/helpers/metrics.ts
@@ -78,6 +78,7 @@ export class Metrics {
unplayable: boolean;
contentCheckRequired: boolean;
loginRequired: boolean;
+ liveStreamOffline: boolean;
unknown: string | undefined;
}
@@ -85,6 +86,7 @@ export class Metrics {
unplayable: false,
contentCheckRequired: false,
loginRequired: false,
+ liveStreamOffline: false,
unknown: undefined,
};
@@ -100,6 +102,10 @@ export class Metrics {
case "LOGIN_REQUIRED":
error.loginRequired = true;
return error;
+ // Livestreams
+ case "LIVE_STREAM_OFFLINE":
+ error.liveStreamOffline = true;
+ return error;
default:
error.unknown = status;
return error;
@@ -118,6 +124,10 @@ export class Metrics {
signInToConfirmAge: boolean;
signInToConfirmBot: boolean;
selfHarmTopics: boolean;
+ liveStreamOffline: boolean;
+ liveEventWillBegin: boolean;
+ premiere: boolean;
+ privateVideo: boolean;
unknown: string | undefined;
}
@@ -125,6 +135,10 @@ export class Metrics {
signInToConfirmAge: false,
signInToConfirmBot: false,
selfHarmTopics: false,
+ liveStreamOffline: false,
+ liveEventWillBegin: false,
+ premiere: false,
+ privateVideo: false,
unknown: undefined,
};
@@ -142,6 +156,20 @@ export class Metrics {
):
error.selfHarmTopics = true;
return error;
+ // Offline Livestreams
+ case reason?.includes("Offline."):
+ error.liveStreamOffline = true;
+ return error;
+ // Livestreams that are about to start
+ case reason?.includes("This live event will begin in a few moments"):
+ error.liveEventWillBegin = true;
+ return error;
+ case reason?.includes("Premiere will begin shortly") || reason?.includes("Premieres in"):
+ error.premiere = true;
+ return error;
+ case reason?.includes("Private video"):
+ error.privateVideo = true;
+ return error;
default:
error.unknown = reason;
return error;
@@ -193,7 +221,11 @@ export class Metrics {
this.innertubeFailedRequest.inc();
const status = this.checkStatus(videoData);
- if (status.contentCheckRequired || status.unplayable) return;
+ if (
+ status.contentCheckRequired ||
+ status.unplayable ||
+ status.liveStreamOffline
+ ) return;
if (status?.unknown) {
this.innertubeErrorStatusUnknown.labels({
@@ -202,7 +234,13 @@ export class Metrics {
}
const reason = this.checkReason(videoData);
- if (reason.signInToConfirmAge) return;
+ if (
+ reason.signInToConfirmAge ||
+ reason.liveStreamOffline ||
+ reason.liveEventWillBegin ||
+ reason.premiere ||
+ reason.privateVideo
+ ) return;
if (reason.unknown) {
this.innertubeErrorReasonUnknown.labels({
--
2.49.0