diff --git a/src/client/channel.rs b/src/client/channel.rs index 8dcb827..dc67579 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -468,8 +468,9 @@ fn map_channel( let subscriber_count = sub_part.and_then(|t| { util::parse_large_numstr_or_warn::(t.as_str(), ctx.lang, &mut warnings) }); - let video_count = - vc_part.and_then(|t| util::parse_numeric_or_warn(t.as_str(), &mut warnings)); + let video_count = vc_part.and_then(|t| { + util::parse_large_numstr_or_warn(t.as_str(), ctx.lang, &mut warnings) + }); Channel { id: metadata.external_id, diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 63d80bf..c080dd6 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -140,10 +140,10 @@ impl MapResponse for response::Playlist { .next() .and_then(|r| r.metadata_parts.into_iter().next()) .and_then(|p| match p { - response::MetadataPart::Text(_) => None, - response::MetadataPart::AvatarStack { - avatar_stack_view_model, - } => ChannelId::try_from(avatar_stack_view_model.text).ok(), + response::MetadataPart::Text { .. } => None, + response::MetadataPart::AvatarStack { avatar_stack } => { + ChannelId::try_from(avatar_stack.avatar_stack_view_model.text).ok() + } }); // remove "by" prefix if let Some(c) = channel.as_mut() { diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 42d1445..e160826 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -647,31 +647,36 @@ pub(crate) struct PhMetadataRow { #[serde_as] #[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] +#[serde(untagged)] pub(crate) enum MetadataPart { - Text(#[serde_as(as = "AttributedText")] TextComponent), - #[serde(rename_all = "camelCase")] - AvatarStack { - avatar_stack_view_model: TextComponentBox, + Text { + #[serde_as(as = "AttributedText")] + text: TextComponent, }, + #[serde(rename_all = "camelCase")] + AvatarStack { avatar_stack: AvatarStackInner }, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarStackInner { + pub avatar_stack_view_model: TextComponentBox, } impl MetadataPart { pub fn into_text_component(self) -> TextComponent { match self { - MetadataPart::Text(text_component) => text_component, - MetadataPart::AvatarStack { - avatar_stack_view_model, - } => avatar_stack_view_model.text, + MetadataPart::Text { text } => text, + MetadataPart::AvatarStack { avatar_stack } => avatar_stack.avatar_stack_view_model.text, } } pub fn as_str(&self) -> &str { match self { - MetadataPart::Text(s) => s.as_str(), - MetadataPart::AvatarStack { - avatar_stack_view_model, - } => avatar_stack_view_model.text.as_str(), + MetadataPart::Text { text } => text.as_str(), + MetadataPart::AvatarStack { avatar_stack } => { + avatar_stack.avatar_stack_view_model.text.as_str() + } } } } diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap index 3ae88c8..8dc1c76 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_20241109_lockup.snap @@ -7,7 +7,7 @@ Channel( name: "EEVblog", handle: Some("@EEVblog"), subscriber_count: Some(952000), - video_count: Some(2), + video_count: Some(2000), avatar: [ Thumbnail( url: "https://yt3.googleusercontent.com/ytc/AIdro_l17lYcTcRSydZeQK-RuiSfEeH5eX9m4irSNQj6109v5MQ=s72-c-k-c0x00ffffff-no-rj", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap index 2d7ebad..ae0a957 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap @@ -7,7 +7,7 @@ Channel( name: "EEVblog", handle: Some("@EEVblog"), subscriber_count: Some(933000), - video_count: Some(19), + video_count: Some(1900), avatar: [ Thumbnail( url: "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s72-c-k-c0x00ffffff-no-rj",