From 401d4e8255b1e86444319fed6d114dfbd0f80bbd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 22:24:59 +0200 Subject: [PATCH] feat: add UnavailabilityReason: IpBan --- src/client/player.rs | 1 + src/error.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index d95043e..2a4f294 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -180,6 +180,7 @@ impl MapResponse for response::Player { "members-only" => Some(UnavailabilityReason::MembersOnly), "country" => Some(UnavailabilityReason::Geoblocked), "Android" | "websites" => Some(UnavailabilityReason::UnsupportedClient), + "bot" => Some(UnavailabilityReason::IpBan), _ => None, }) .unwrap_or_default(); diff --git a/src/error.rs b/src/error.rs index 104387f..ae804d8 100644 --- a/src/error.rs +++ b/src/error.rs @@ -31,7 +31,7 @@ pub enum ExtractionError { /// - Age restriction /// - Private video /// - DRM (Movies and TV shows) - #[error("content unavailable because it is {reason}. Reason (from YT): {msg}")] + #[error("content unavailable ({reason}). Reason (from YT): {msg}")] Unavailable { /// Reason why the video could not be extracted reason: UnavailabilityReason, @@ -100,6 +100,8 @@ pub enum UnavailabilityReason { MembersOnly, /// Livestream has gone offline OfflineLivestream, + /// YouTube banned your IP address from accessing the platform without an account + IpBan, /// Video cant be played for other reasons #[default] Unplayable, @@ -108,15 +110,16 @@ pub enum UnavailabilityReason { impl Display for UnavailabilityReason { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - UnavailabilityReason::AgeRestricted => f.write_str("age restriction"), + UnavailabilityReason::AgeRestricted => f.write_str("age-restricted"), UnavailabilityReason::Deleted => f.write_str("deleted"), - UnavailabilityReason::Geoblocked => f.write_str("geoblocking"), + UnavailabilityReason::Geoblocked => f.write_str("geoblocked"), UnavailabilityReason::UnsupportedClient => f.write_str("unsupported by client"), UnavailabilityReason::Private => f.write_str("private"), UnavailabilityReason::Paid => f.write_str("paid"), UnavailabilityReason::Premium => f.write_str("premium-only"), UnavailabilityReason::MembersOnly => f.write_str("members-only"), - UnavailabilityReason::OfflineLivestream => f.write_str("an offline stream"), + UnavailabilityReason::OfflineLivestream => f.write_str("offline stream"), + UnavailabilityReason::IpBan => f.write_str("ip-ban"), UnavailabilityReason::Unplayable => f.write_str("unplayable"), } }