diff --git a/src/client/response/video_details.rs b/src/client/response/video_details.rs index 78cc816..cd94537 100644 --- a/src/client/response/video_details.rs +++ b/src/client/response/video_details.rs @@ -77,7 +77,7 @@ pub(crate) enum VideoResultsItem { VideoPrimaryInfoRenderer { #[serde_as(as = "Text")] title: String, - view_count: ViewCount, + view_count: Option, /// Like/Dislike button video_actions: VideoActions, /// Absolute textual date (e.g. `Dec 29, 2019`) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index d4034e0..178eee0 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -166,14 +166,20 @@ impl MapResponse for response::VideoDetails { ( title, // view count field contains `No views` if the view count is zero - util::parse_numeric(&view_count.video_view_count_renderer.view_count) + view_count + .as_ref() + .and_then(|vc| { + util::parse_numeric(&vc.video_view_count_renderer.view_count).ok() + }) .unwrap_or_default(), // accessibility_data contains no digits if the like count is hidden, // so we ignore parse errors here for now like_btn.and_then(|btn| util::parse_numeric(&btn.accessibility_data).ok()), timeago::parse_textual_date_or_warn(lang, &date_text, &mut warnings), date_text, - view_count.video_view_count_renderer.is_live, + view_count + .map(|vc| vc.video_view_count_renderer.is_live) + .unwrap_or_default(), ) } _ => {