diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 59f49e2..5917e6a 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -1,7 +1,5 @@ use crate::error::{Error, ExtractionError}; -use crate::model::{ - Comment, ContinuationEndpoint, Paginator, PlaylistVideo, RecommendedVideo, YouTubeItem, -}; +use crate::model::{Comment, ContinuationEndpoint, Paginator, PlaylistVideo, YouTubeItem}; use crate::serializer::MapResult; use crate::util::TryRemove; @@ -52,7 +50,9 @@ impl> MapResponse> for response::Continuati lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, ) -> Result>, ExtractionError> { - let mut actions = self.on_response_received_actions; + let mut actions = self + .on_response_received_actions + .ok_or(ExtractionError::Retry)?; let items = some_or_bail!( actions.try_swap_remove(0), Err(ExtractionError::InvalidData( @@ -137,9 +137,7 @@ macro_rules! paginator { } paginator!(Comment, RustyPipeQuery::video_comments); - paginator!(PlaylistVideo, RustyPipeQuery::playlist_continuation); -paginator!(RecommendedVideo, RustyPipeQuery::video_recommendations); impl> Paginator { pub async fn next(&self, query: RustyPipeQuery) -> Result, Error> { @@ -205,6 +203,7 @@ mod tests { use crate::{ client::{response, MapResponse}, + error::ExtractionError, model::{Paginator, PlaylistItem, YouTubeItem}, param::Language, serializer::MapResult, @@ -213,6 +212,7 @@ mod tests { #[rstest] #[case("search", "search/cont")] #[case("startpage", "trends/startpage_cont")] + #[case("recommendations", "video_details/recommendations")] fn map_continuation_items(#[case] name: &str, #[case] path: &str) { let filename = format!("testfiles/{}.json", path); let json_path = Path::new(&filename); @@ -228,7 +228,7 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - insta::assert_ron_snapshot!(format!("map_cont_{}", name), map_res.c, { + insta::assert_ron_snapshot!(format!("map_{}", name), map_res.c, { ".items.*.publish_date" => "[date]", }); } @@ -250,6 +250,21 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - insta::assert_ron_snapshot!(format!("map_cont_{}", name), map_res.c); + insta::assert_ron_snapshot!(format!("map_{}", name), map_res.c); + } + + #[test] + fn map_recommendations_empty() { + let filename = format!("testfiles/video_details/recommendations_empty.json"); + let json_path = Path::new(&filename); + let json_file = File::open(json_path).unwrap(); + + let recommendations: response::Continuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: Result>, ExtractionError> = + recommendations.map_response("", Language::En, None); + let err = map_res.unwrap_err(); + + assert!(matches!(err, crate::error::ExtractionError::Retry)); } } diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index df967db..f89b3aa 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -19,7 +19,6 @@ pub use trends::Trending; pub use url_endpoint::ResolvedUrl; pub use video_details::VideoComments; pub use video_details::VideoDetails; -pub use video_details::VideoRecommendations; pub use video_item::YouTubeListItem; pub use video_item::YouTubeListMapper; @@ -497,9 +496,12 @@ pub struct Continuation { /// Number of search results #[serde_as(as = "Option")] pub estimated_results: Option, - #[serde(alias = "onResponseReceivedCommands")] - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_actions: Vec, + #[serde( + alias = "onResponseReceivedCommands", + alias = "onResponseReceivedEndpoints" + )] + #[serde_as(as = "Option>")] + pub on_response_received_actions: Option>, } #[derive(Debug, Deserialize)] diff --git a/src/client/response/video_details.rs b/src/client/response/video_details.rs index f50baf9..c487116 100644 --- a/src/client/response/video_details.rs +++ b/src/client/response/video_details.rs @@ -10,9 +10,10 @@ use crate::serializer::{ MapResult, VecLogError, }; +use super::YouTubeListItem; use super::{ url_endpoint::BrowseEndpoint, ContinuationEndpoint, ContinuationItemRenderer, Icon, - MusicContinuation, Thumbnails, VideoListItem, VideoOwner, + MusicContinuation, Thumbnails, VideoOwner, }; /* @@ -282,7 +283,7 @@ pub struct RecommendationResultsWrap { pub struct RecommendationResults { /// Can be `None` for age-restricted videos #[serde_as(as = "Option>")] - pub results: Option>>, + pub results: Option>>, #[serde_as(as = "Option>")] pub continuations: Option>, } @@ -416,36 +417,6 @@ pub struct CommentItemSectionHeaderMenuItem { pub service_endpoint: ContinuationEndpoint, } -/* -#RECOMMENDATIONS CONTINUATION -*/ - -/// Video recommendations continuation response -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoRecommendations { - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_endpoints: Vec, -} - -/// Video recommendations continuation -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RecommendationsContItem { - pub append_continuation_items_action: AppendRecommendations, -} - -/// Video recommendations continuation -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct AppendRecommendations { - #[serde_as(as = "VecLogError<_>")] - pub continuation_items: MapResult>, -} - /* #COMMENTS CONTINUATION */ diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 5da3974..d956ec5 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -84,6 +84,7 @@ pub struct VideoRenderer { pub title: String, #[serde(rename = "shortBylineText")] pub channel: Option, + pub channel_thumbnail: Option, pub channel_thumbnail_supported_renderers: Option, #[serde_as(as = "Option")] pub published_time_text: Option, @@ -221,8 +222,10 @@ impl YouTubeListMapper { name: c.name, avatar: video .channel_thumbnail_supported_renderers - .map(|tn| tn.channel_thumbnail_with_link_renderer.thumbnail.into()) - .unwrap_or_default(), + .map(|tn| tn.channel_thumbnail_with_link_renderer.thumbnail) + .or(video.channel_thumbnail) + .unwrap_or_default() + .into(), verification: video.owner_badges.into(), subscriber_count: None, }) diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_cont_channel_playlists.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_playlists.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__pagination__tests__map_cont_channel_playlists.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_channel_playlists.snap diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap similarity index 88% rename from src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap index e29ca6a..a00dfc8 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap @@ -1,11 +1,11 @@ --- -source: src/client/video_details.rs +source: src/client/pagination.rs expression: map_res.c --- Paginator( count: None, items: [ - RecommendedVideo( + Video(VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -21,7 +21,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -33,14 +33,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 216222873, + view_count: Some(216222873), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -56,7 +58,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -68,14 +70,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 155106313, + view_count: Some(155106313), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -91,7 +95,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -103,14 +107,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 265238677, + view_count: Some(265238677), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "yQUU29NwNF4", title: "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122", length: Some(213), @@ -126,7 +132,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCS_hnpJLQTvBkqALgapi_4g", name: "스브스케이팝 X INKIGAYO", avatar: [ @@ -138,14 +144,16 @@ Paginator( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 9989591, + view_count: Some(9989591), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "NU611fxGyPU", title: "aespa 에스파 \'Black Mamba\' Dance Practice", length: Some(175), @@ -161,7 +169,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -173,14 +181,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 34588526, + view_count: Some(34588526), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "EaswWiwMVs8", title: "Stray Kids \"소리꾼(Thunderous)\" M/V", length: Some(199), @@ -196,7 +206,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -208,14 +218,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 242737870, + view_count: Some(242737870), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -231,7 +243,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -243,14 +255,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 126677200, + view_count: Some(126677200), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "gQlMMD8auMs", title: "BLACKPINK - ‘Pink Venom’ M/V", length: Some(194), @@ -266,7 +280,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -278,14 +292,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 335903776, + view_count: Some(335903776), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "BL-aIpCLWnU", title: "Black Mamba", length: Some(175), @@ -301,7 +317,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -313,14 +329,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 86125645, + view_count: Some(86125645), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -336,7 +354,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -348,14 +366,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 170016610, + view_count: Some(170016610), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Fc-fa6cAe2c", title: "KAI 카이 \'음 (Mmmh)\' MV", length: Some(207), @@ -371,7 +391,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -383,14 +403,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 123861096, + view_count: Some(123861096), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "dYRITmpFbJ4", title: "aespa 에스파 \'Girls\' MV", length: Some(269), @@ -406,7 +428,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -418,14 +440,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 101968219, + view_count: Some(101968219), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "mH0_XpSHkZo", title: "TWICE \"MORE & MORE\" M/V", length: Some(241), @@ -441,7 +465,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -453,14 +477,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 322510403, + view_count: Some(322510403), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -476,7 +502,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -488,14 +514,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 345491789, + view_count: Some(345491789), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "f5_wn8mexmM", title: "TWICE \"The Feels\" M/V", length: Some(232), @@ -511,7 +539,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -523,14 +551,16 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 314744776, + view_count: Some(314744776), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Ky5RT5oGg0w", title: "aespa 에스파 \'Black Mamba\' The Debut Stage", length: Some(287), @@ -546,7 +576,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -558,14 +588,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 18830758, + view_count: Some(18830758), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "gU2HqP4NxUs", title: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", length: Some(208), @@ -581,7 +613,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -593,14 +625,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 282957370, + view_count: Some(282957370), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -616,7 +650,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -628,14 +662,16 @@ Paginator( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 355203298, + view_count: Some(355203298), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "uxmP4b2a0uY", title: "EXO 엑소 \'Obsession\' MV", length: Some(220), @@ -651,7 +687,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -663,13 +699,15 @@ Paginator( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 157400947, + view_count: Some(157400947), is_live: false, is_short: false, - ), + is_upcoming: false, + short_description: None, + )), ], ctoken: Some("CCgSExILWmVlcnJudUxpNUXAAQHIAQEYACrLDDJzNkw2d3l4Q1FxdUNRb0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RjSS1DZ2pxM0xYRXpkNk00VUVLQV9JLUFBb093ajRMQ1Bqc19JLUVsWTI5MWdFS0FfSS1BQW93MGo0dENpdFNSRU5NUVVzMWRYbGZhekkzZFhVdFJYUlJYMkkxVlRKeU1qWkVUa1JhVDIxT2NVZGtZMk5WU1VkUkNnUHlQZ0FLRHNJLUN3amZ2czJMbjRUcG5iUUJDZ1B5UGdBS0V0SS1Ed29OVWtSYVpXVnljbTUxVEdrMVJRb0Q4ajRBQ2c3Q1Bnc0kzYmJTdThMRy1wS1VBUW9EOGo0QUNnN0NQZ3NJX2JYd2lmQzJ0WlczQVFvRDhqNEFDZzdDUGdzSXpZckE3b0RHbzlMUUFRb0Q4ajRBQ2czQ1Bnb0l0N212dk9fUjVJUnZDZ1B5UGdBS0RjSS1DZ2lBcDdMWDBlYWxyaW9LQV9JLUFBb053ajRLQ0luanlmalZ0dUwxWHdvRDhqNEFDZzNDUGdvSXBKZmozYVR5X2MwZkNnUHlQZ0FLRGNJLUNnamJtNW1MbGRLQTV3Z0tBX0ktQUFvT3dqNExDTFRhOF9UNjE3U3UyQUVLQV9JLUFBb053ajRLQ05xMHBhdXZzS1BDZEFvRDhqNEFDZzdDUGdzSTVQR3E5WTIybWNXZ0FRb0Q4ajRBQ2c3Q1Bnc0lnNkdPN3JidzJjR0tBUW9EOGo0QUNnN0NQZ3NJenEtbWxQUy01SnJoQVFvRDhqNEFDZzdDUGdzSXZNbnBqSUtUeXBYX0FRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0g5SS1IQW9hVWtSRlRWUnVTbmxSZDJsamFHMW5lbm96VGxKSlVIVmxWMUVLQV9JLUFBb053ajRLQ0xxb251clN1SkhoWXdvRDhqNEFDZzNDUGdvSXFzYU90Y0RBZ3NNMkNnUHlQZ0FLRHNJLUN3amU2TUNidlp2Rmdza0JDZ1B5UGdBS0RjSS1DZ2oxa1p2aTM3cXRwelVLQV9JLUFBb053ajRLQ00tdHNlQ2lpOHpWRVFvRDhqNEFDZzNDUGdvSXJjU3kxYV9RdjV0U0NnUHlQZ0FLRHNJLUN3akw4ZXI0ZzRiVGhJRUJDZ1B5UGdBS0RjSS1DZ2oxdEsyRXFjVG0zd1FLQV9JLUFBb053ajRLQ012dG1aX2Fnb1NQSmdvRDhqNEFDZzNDUGdvSTVfYUJ1THJ0NS1jVkNnUHlQZ0FLRGNJLUNnaWUyWlhTNW9tU3duVUtBX0ktQUFvT3dqNExDSnFqbnFUcDY4LS1tQUVLQV9JLUFBb093ajRMQ1BqS291cnRsY09QdVFFS0FfSS1BQW9Od2o0S0NPT00tOHo4a196UGZ3b0Q4ajRBQ2czQ1Bnb0l6SWFhMFBtcGxKY3JDZ1B5UGdBS0RzSS1Dd2pMaXJmd2pfWGhwb0VCQ2dQeVBnQUtEY0ktQ2dpRG52dUVtdEczaWlvS0FfSS1BQW9Pd2o0TENPYWw2LXliX09PTXV3RVNLQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0Nvc0xqQXlORFk0T2p3LVFFSkVSa2hLVEU0YUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFYUJBaENFRU1hQkFoRUVFVWFCQWhHRUVjYUJBaElFRWthQkFoS0VFc2FCQWhNRUUwYUJBaE9FRThxS0FBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RRUpFUmtoS1RFNGoPd2F0Y2gtbmV4dC1mZWVkcgA%3D"), endpoint: browse, diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_cont_search.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__pagination__tests__map_cont_search.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_cont_startpage.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap similarity index 100% rename from src/client/snapshots/rustypipe__client__pagination__tests__map_cont_startpage.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap index ff8df62..3974513 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "aRpkasmB6so", title: "18 de setembro de 2022", length: Some(184), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCQYl87Oi9aWzz-CLhTw3Rzg", name: "Allan Nascimento", avatar: [ @@ -132,14 +132,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 996, + view_count: Some(996), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "lCXqNCd0m10", title: "aespa(エスパ) Savage + Next Level + Black Mamba💕Stage Mix Compilation🔥에스파 무대모음 KBS Music Bank", length: Some(898), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgqMjKxRWAKUvgYqgomighw", name: "KBS충북", avatar: [ @@ -167,14 +169,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 7684395, + view_count: Some(7684395), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tDukIfFzX18", title: "[MV] Hwa Sa(화사) _ Maria(마리아)", length: Some(231), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCweOkPb1wVVH0Q0Tlj4a5Pw", name: "1theK (원더케이)", avatar: [ @@ -202,14 +206,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 260984648, + view_count: Some(260984648), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "e-ORhEE9VVg", title: "Taylor Swift - Blank Space", length: Some(273), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqECaJ8Gagnn7YCbPEzWH6g", name: "Taylor Swift", avatar: [ @@ -237,14 +243,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 3035220118, + view_count: Some(3035220118), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "qfVuRQX0ydQ", title: "[MV] Weeekly(위클리) _ After School", length: Some(225), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCweOkPb1wVVH0Q0Tlj4a5Pw", name: "1theK (원더케이)", avatar: [ @@ -272,14 +280,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 138451832, + view_count: Some(138451832), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tyrVtwE8Gv0", title: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", length: Some(249), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -307,14 +317,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 255458628, + view_count: Some(255458628), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "X-uJtV8ScYk", title: "Stray Kids \"Back Door\" M/V", length: Some(218), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -342,14 +354,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 274719671, + view_count: Some(274719671), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "MjCZfZfucEc", title: "ITZY “LOCO” M/V @ITZY", length: Some(233), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -377,14 +391,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 203129706, + view_count: Some(203129706), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2FzSv66c7TQ", title: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", length: Some(3441), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCK8S6QMrTk1G8TYQwIyDo-w", name: "LQ K-POP", avatar: [ @@ -412,14 +428,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 531757, + view_count: Some(531757), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CevxZvSJLk8", title: "Katy Perry - Roar (Official)", length: Some(270), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYvmuw-JtVrTZQ-7Y4kd63Q", name: "Katy Perry", avatar: [ @@ -447,14 +465,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 years ago"), - view_count: 3656394146, + view_count: Some(3656394146), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bwmSjveL3Lc", title: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", length: Some(244), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -482,14 +502,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1479871637, + view_count: Some(1479871637), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -517,14 +539,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 456763969, + view_count: Some(456763969), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ioNng23DkIM", title: "BLACKPINK - \'How You Like That\' M/V", length: Some(184), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -552,14 +576,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1149727787, + view_count: Some(1149727787), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "BL-aIpCLWnU", title: "Black Mamba", length: Some(175), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -587,14 +613,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 86080254, + view_count: Some(86080254), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -622,14 +650,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 169858302, + view_count: Some(169858302), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -657,14 +687,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 216164610, + view_count: Some(216164610), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Z7yNvMzz2zg", title: "Red Velvet 레드벨벳 \'Psycho\' Performance Video", length: Some(216), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCk9GmdlDTBfgGRb7vXeRMoQ", name: "Red Velvet", avatar: [ @@ -692,27 +724,29 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 135093083, + view_count: Some(135093083), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACreBjJzNkw2d3pfQkFyOEJBb0Q4ajRBQ2czQ1Bnb0l5dFdIekt5Tm1ZMXBDZ1B5UGdBS0o5SS1KQW9pVUV4eU1UUldiR05sYkRKVE16UlpSMmw1WlZkRU1rOW9jbU4wVGt4Q1psVk9PUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvT3dqNExDTjIyMHJ2Q3h2cVNsQUVLQV9JLUFBb3cwajR0Q2l0U1JFTk1RVXMxZFhsZmF6STNkWFV0UlhSUlgySTFWVEp5TWpaRVRrUmFUMjFPY1Vka1kyTlZTVWRSQ2dQeVBnQUtEc0ktQ3dqZnZzMkxuNFRwbmJRQkNnUHlQZ0FLRGNJLUNnallxdldKeExEazhYc0tBX0ktQUFvT3dqNExDTlNUMDZfUXlOdjZxUUVLQV9JLUFBb093ajRMQ1AyMThJbnd0cldWdHdFS0FfSS1BQW9Od2o0S0NJbmp5ZmpWdHVMMVh3b0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RzSS1Dd2kwMnZQMC10ZTBydGdCQ2dQeVBnQUtEY0ktQ2dqUDNLU2s3Nno4OVFrS0FfSS1BQW9Od2o0S0NMZTVyN3p2MGVTRWJ3b0Q4ajRBQ2czQ1Bnb0kyNXVaaTVYU2dPY0lDZ1B5UGdBS0RzSS1Dd2lEb1k3dXR2RFp3WW9CQ2dQeVBnQUtEY0ktQ2dqMXRLMkVxY1RtM3dRS0FfSS1BQW9Od2o0S0NNdnRtWl9hZ29TUEpnb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RjSS1DZ2k0dHNfbnpMZWozbWNTRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUdnUUlBQkFCR2dRSUFoQURHZ1FJQkJBRkdnUUlCaEFIR2dRSUNCQUpHZ1FJQ2hBTEdnUUlEQkFOR2dRSURoQVBHZ1FJRUJBUkdnUUlFaEFUR2dRSUZCQVZHZ1FJRmhBWEdnUUlHQkFaR2dRSUdoQWJHZ1FJSEJBZEdnUUlIaEFmR2dRSUlCQWhHZ1FJSWhBakdnUUlKQkFsR2dRSUpoQW5LaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmdqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap index d56e949..85eb65a 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -132,14 +132,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 218055265, + view_count: Some(218055265), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4TWR90KJl84", title: "aespa 에스파 \'Next Level\' MV", length: Some(236), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -167,14 +169,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 248023999, + view_count: Some(248023999), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -202,14 +206,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 347102621, + view_count: Some(347102621), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UUUWIGx3hDE", title: "ITZY \"WANNABE\" Performance Video", length: Some(198), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDhM2k2Cua-JdobAh5moMFg", name: "ITZY", avatar: [ @@ -237,14 +243,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 97453393, + view_count: Some(97453393), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -272,14 +280,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 266364690, + view_count: Some(266364690), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "32si5cfrCNc", title: "BLACKPINK - \'How You Like That\' DANCE PERFORMANCE VIDEO", length: Some(181), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -307,14 +317,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1254749733, + view_count: Some(1254749733), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -342,14 +354,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 459831562, + view_count: Some(459831562), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UZPZyd5vE1c", title: "Shut Down", length: Some(176), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -377,14 +391,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7118730, + view_count: Some(7118730), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CKZvWhCqx1s", title: "ROSÉ - \'On The Ground\' M/V", length: Some(189), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -412,14 +428,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 300492226, + view_count: Some(300492226), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fE2h3lGlOsk", title: "ITZY \"WANNABE\" M/V @ITZY", length: Some(219), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -447,14 +465,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 469178299, + view_count: Some(469178299), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -482,14 +502,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 161053206, + view_count: Some(161053206), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "dNCWe_6HAM8", title: "LISA - \'MONEY\' EXCLUSIVE PERFORMANCE VIDEO", length: Some(171), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -517,14 +539,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 694135299, + view_count: Some(694135299), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tyrVtwE8Gv0", title: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", length: Some(249), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -552,14 +576,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 256797155, + view_count: Some(256797155), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "gU2HqP4NxUs", title: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", length: Some(208), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -587,14 +613,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 285625201, + view_count: Some(285625201), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -622,14 +650,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 127297352, + view_count: Some(127297352), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -657,14 +687,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 357346135, + view_count: Some(357346135), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "XJDPzNzQ3RE", title: "Run BTS! 2022 Special Episode - Fly BTS Fly Part 1", length: Some(2070), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLkAepWjdylmXSltofFvsYQ", name: "BANGTANTV", avatar: [ @@ -692,14 +724,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 hours ago"), - view_count: 748983, + view_count: Some(748983), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "0lXwMdnpoFQ", title: "aespa 에스파 \'도깨비불 (Illusion)\' Dance Practice", length: Some(210), @@ -715,7 +749,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC473RoZQE2gtgZJ61ZW0ZDQ", name: "SMP FLOOR", avatar: [ @@ -727,14 +761,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 12347702, + view_count: Some(12347702), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IHNzOHi8sJs", title: "BLACKPINK - ‘뚜두뚜두 (DDU-DU DDU-DU)’ M/V", length: Some(216), @@ -750,7 +786,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -762,27 +798,29 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 1964840790, + view_count: Some(1964840790), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACqiDDJzNkw2d3lTQ1FxUENRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RzSS1Dd2pPcjZhVTlMN2ttdUVCQ2dQeVBnQUtFdEktRHdvTlVrUmFaV1Z5Y201MVRHazFSUW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXNZamU0NGJFeGFKUkNnUHlQZ0FLRGNJLUNnaXF4bzYxd01DQ3d6WUtBX0ktQUFvT3dqNExDTmVSckxfYzNNaTEzd0VLQV9JLUFBb053ajRLQ051Ym1ZdVYwb0RuQ0FvRDhqNEFDZzNDUGdvSTE2YTg4NTI1OXNsUkNnUHlQZ0FLRGNJLUNnamJqcXVGb2V1YjB3Z0tBX0ktQUFvTndqNEtDTW4xbEkzbHUtaW1mQW9EOGo0QUNnM0NQZ29JdXFpZTZ0SzRrZUZqQ2dQeVBnQUtEY0ktQ2dqUGdaejB2OC1sNkhRS0FfSS1BQW9Pd2o0TENQMjE4SW53dHJXVnR3RUtBX0ktQUFvT3dqNExDTXVLdF9DUDllR21nUUVLQV9JLUFBb053ajRLQ0szRXN0V3YwTC1iVWdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnaVJ1c1BtemZtenlGd0tBX0ktQUFvT3dqNExDTlRBcHMtZGh2eXEwZ0VLQV9JLUFBb053ajRLQ0p2aDhzV0g1OXk1SUFvRDhqNEFDaF9TUGh3S0dsSkVRVTk2ZFZaM1JWbDNZMUZFTkhWMmNHZEJUbU5JU0ZWM0NoX1NQaHdLR2xKRVFVOWZjQzFWYmpCSGVUbHVXRlZ0Wm1kaE0xTlNYMXAzQ2hfU1Bod0tHbEpFUVU5cFEwaENhR3R1VTBSd09HcFZWekJPUzFoWU9FMVJDaF9TUGh3S0dsSkVRVTlYWjBsd1lVbDZha1p6UVhkeE5GOXhWR2hyTlROQkNoX1NQaHdLR2xKRVFVOXFNVkpuZEhkZmVtZHJibWxSWkdkTU5XTnlVRmxCQ2hfU1Bod0tHbEpFUVU4NWExbHRhMU5KVG5CVGFYVldTalEzUjNkT1RWSm5DaF9TUGh3S0dsSkVRVTlGYjNOTlVtbHlhM1ZKTjNvNE1tSmZia0oyUjNoQkNoX1NQaHdLR2xKRVFVOW1PRlExTURaUVZGcFVWRmxDWm01RVRVNURiR0ZSQ2hfU1Bod0tHbEpFUVU5UllqSlhRWGxLYTBwMlRURmhaMGRYZEhkRkxVOUJDaF9TUGh3S0dsSkVRVTlNWDFGNk1scFJRbUZNUkROTFExTnFWalpYZG5wM0NoX1NQaHdLR2xKRVFVOXpjeTFGWVdSRFpHZzBUVmxYV0hsMGFtWkpabFYzQ2hfU1Bod0tHbEpFUVU4MVRraFVXblJGV0ROSGJIWlhRMjgyYTJOdGFrdDNDaF9TUGh3S0dsSkVRVTlMWDBjMVRVZzFaM0ZJUTNRd1VXdENZVlZJTjJwUkNoX1NQaHdLR2xKRVFVOVpUWEZhWlV4U1RXMXhaRW8zZGs5b09UQXRhME5CQ2hfU1Bod0tHbEpFUVU4eVNGbEJhMFpIYzBGSmFWVmthRE5NVUhGRE5UZG5FaFVBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmlnYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ29FQ29hQkFnb0VDc2FCQWdvRUN3YUJBZ29FQzBhQkFnb0VDNGFCQWdvRUM4YUJBZ29FREFhQkFnb0VERWFCQWdvRURJYUJBZ29FRE1hQkFnb0VEUWFCQWdvRURVYUJBZ29FRFlhQkFnb0VEY3FGUUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0FqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap index c94ef49..764e6cb 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap @@ -525,7 +525,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "t03rmc-prJo", title: "This PC took 600 HOURS to Build!", length: Some(1505), @@ -541,7 +541,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -553,14 +553,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 3449572, + view_count: Some(3449572), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4ozYlgOuYis", title: "They told me I was stupid - heating my pool with computers", length: Some(691), @@ -576,7 +578,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -588,14 +590,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 3209930, + view_count: Some(3209930), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "THxkY59_xko", title: "Is the fastest GPU ALWAYS the best?", length: Some(979), @@ -611,7 +615,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -623,14 +627,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 hours ago"), - view_count: 640179, + view_count: Some(640179), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UJ-KZzVUV7U", title: "This toaster cost HOW MUCH?? - Revolution InstaGLO R270 Toaster", length: Some(880), @@ -646,7 +652,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -658,14 +664,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 905709, + view_count: Some(905709), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "yayAQAC1XiE", title: "Intel PLEASE let me Overclock this!", length: Some(799), @@ -681,7 +689,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -693,14 +701,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 998245, + view_count: Some(998245), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "y4T374GtKLI", title: "When The Grid Goes Down: How To Power Essential Devices (i.e., Refrigerator)", length: Some(1239), @@ -716,7 +726,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCmb2QRAjdnkse21CtxAQ-cA", name: "City Prepping", avatar: [ @@ -728,14 +738,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 132460, + view_count: Some(132460), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "b3x28s61q3c", title: "The most EXPENSIVE thing I own.", length: Some(887), @@ -751,7 +763,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -763,14 +775,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2372992, + view_count: Some(2372992), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "LQ95XJAwaoc", title: "My favorite car (sucks) - Lucid Air GT", length: Some(1162), @@ -786,7 +800,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -798,14 +812,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 565416, + view_count: Some(565416), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WVjtK71qqXU", title: "I bought a SECOND GPU… but NOT for gaming…", length: Some(754), @@ -821,7 +837,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -833,14 +849,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1199845, + view_count: Some(1199845), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "vtvFVH9JdNI", title: "I bought every Nintendo Console EVER.", length: Some(1381), @@ -856,7 +874,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCMiJRAwDNSNzuYeN2uWa0pA", name: "Mrwhosetheboss", avatar: [ @@ -868,14 +886,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1379793, + view_count: Some(1379793), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "J6Ga4wciA2k", title: "THIS Wish.com Gaming PC is WORSE!", length: Some(1545), @@ -891,7 +911,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -903,14 +923,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 2775764, + view_count: Some(2775764), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CsoKWsZ-Tyw", title: "The Personal Gaming Theater - HOLY $H!T Samsung Odyssey Ark", length: Some(1182), @@ -926,7 +948,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -938,14 +960,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2449262, + view_count: Some(2449262), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "9T98VsMe3oo", title: "How are we going to do this?", length: Some(1124), @@ -961,7 +985,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -973,14 +997,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 4321218, + view_count: Some(4321218), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "5Hxr9k5Vdc4", title: "Building the $1,000,000 Computer", length: Some(1659), @@ -996,7 +1022,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1008,14 +1034,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 3270062, + view_count: Some(3270062), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "12Hcbx33Rb4", title: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", length: Some(1262), @@ -1031,7 +1059,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkWQ0gDrqOCarmUKmppD7GQ", name: "JayzTwoCents", avatar: [ @@ -1043,14 +1071,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 1274410, + view_count: Some(1274410), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EHkkwCjQzsc", title: "Prepper (2016) | Full Post-Apocalyptic Thriller Movie HD", length: Some(5982), @@ -1066,7 +1096,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRX7UEyE8kp35mPrgC2sosA", name: "JoBlo Movies", avatar: [ @@ -1078,14 +1108,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 209854, + view_count: Some(209854), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "AOdp09SYhCc", title: "This Is So Embarrassing! - Building a PC with My Sister", length: Some(1063), @@ -1101,7 +1133,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1113,14 +1145,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 2453269, + view_count: Some(2453269), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CTIpNtHWVtQ", title: "Why Pay $1000 for a 25 year old PC! - NIXSYS Windows 98 PC", length: Some(1112), @@ -1136,7 +1170,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1148,14 +1182,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1478434, + view_count: Some(1478434), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "3RIp7CwkBeA", title: "I Hope You Have a LOT of Money... RTX 4000 Announced", length: Some(569), @@ -1171,7 +1207,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1183,14 +1219,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 1816036, + view_count: Some(1816036), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "HZiaHEmE9PQ", title: "Buying a Chromebook was a BIG MISTAKE", length: Some(880), @@ -1206,7 +1244,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1218,27 +1256,29 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 1625226, + view_count: Some(1625226), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqIBjJzNkw2d3lfQkFxOEJBb0Q4ajRBQ2c3Q1Bnc0ltdG1tX1p6ei1xYTNBUW9EOGo0QUNnN0NQZ3NJcThTNW5lQ1N0c2JpQVFvRDhqNEFDZzNDUGdvSXlvel8tN21NbWI1TUNnUHlQZ0FLRGNJLUNnaTFyOUdxODh6aXoxQUtBX0ktQUFvT3dqNExDS0c4MVlXQWlLRFd5UUVLQV9JLUFBb093ajRMQ0xMUnRJMzRfYjNDeXdFS0FfSS1BQW9Od2o0S0NQZlcxdldzM3AyLWJ3b0Q4ajRBQ2czQ1Bnb0loOVhCZ2NtcjNvY3RDZ1B5UGdBS0RjSS1DZ2oxMHFycnU2VzdyRmtLQV9JLUFBb093ajRMQ05McHBmckhxdkh0dmdFS0FfSS1BQW9Od2o0S0NPbUdpTG13M09iUUp3b0Q4ajRBQ2czQ1Bnb0lySjc1czZ6TGd1VUtDZ1B5UGdBS0RzSS1Dd2lLdmZ1WTdJcmZuX1VCQ2dQeVBnQUtEc0ktQ3dqTzY5WHk1UDZhdnVRQkNnUHlQZ0FLRHNJLUN3aS1pOTN2OFkzM3NOY0JDZ1B5UGdBS0RjSS1DZ2pIbmNQR2dwakp2QkFLQV9JLUFBb013ajRKQ0tlSTRxUzl1dHB6Q2dQeVBnQUtEY0ktQ2dqVXJkbU83YWFLbVFrS0FfSS1BQW9Pd2o0TENPQ0xrT0hDdllxSjNRRUtBX0ktQUFvTndqNEtDUFRwazh6RXc2Yk1IUklVQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY3FGQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtag93YXRjaC1uZXh0LWZlZWQ%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(3200), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(3200), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap index 7e99c23..3ea6a7e 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap @@ -46,12 +46,12 @@ VideoDetails( count: None, items: [], ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyJSIRIgtIUkt1MGN2cnJfbzABeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: None, items: [], ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyOCIRIgtIUkt1MGN2cnJfbzABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap index ee3cbe9..e8109e3 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap @@ -51,7 +51,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "-YpwsdRKt8Q", title: "SpiegelMining – Reverse Engineering von Spiegel-Online (33c3)", length: Some(3526), @@ -67,7 +67,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -79,14 +79,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 2749364, + view_count: Some(2749364), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4z3mu63yxII", title: "Gregor Gysi & Martin Sonneborn", length: Some(5272), @@ -102,7 +104,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCBWSgdr27NcLig0XzWLq2gQ", name: "MISS-VERSTEHEN SIE MICH RICHTIG", avatar: [ @@ -114,14 +116,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 2266658, + view_count: Some(2266658), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WhgRRpA3b2c", title: "36C3 - Verkehrswende selber hacken", length: Some(3176), @@ -137,7 +141,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -149,14 +153,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 260941, + view_count: Some(260941), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "5qNHtdN07FM", title: "GPN16: Wie baut man eigentlich Raumschiffe (urs)", length: Some(5172), @@ -172,7 +178,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -184,14 +190,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1229987, + view_count: Some(1229987), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "7FeqF1-Z1g0", title: "David Kriesel: Traue keinem Scan, den du nicht selbst gefälscht hast", length: Some(3820), @@ -207,7 +215,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -219,14 +227,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 6095028, + view_count: Some(6095028), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1vcP9UWrWBI", title: "Easterhegg 2019 - Kernreaktoren", length: Some(7263), @@ -242,7 +252,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -254,14 +264,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 46470, + view_count: Some(46470), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "jnp1veXQf7U", title: "Blockchain - Ein außer Kontrolle geratenes Laborexperiment? #GPN19", length: Some(3362), @@ -277,7 +289,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -289,14 +301,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 25136, + view_count: Some(25136), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "77OlKRkaixo", title: "leyrer, MacLemon: E-Mail. Hässlich, aber es funktioniert #eh16", length: Some(6998), @@ -312,7 +326,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -324,14 +338,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 44410, + view_count: Some(44410), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "u29--YNGMyg", title: "Physikalisches Kolloquium 22. Juli 2011 - Vortrag von Prof. Dr. Harald Lesch", length: Some(6715), @@ -347,7 +363,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvZLsBb-8Og4FvBUom9zPHQ", name: "Universität Bayreuth", avatar: [ @@ -359,14 +375,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 years ago"), - view_count: 4184357, + view_count: Some(4184357), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "urt2_ACal9A", title: "CCC-Jahresrückblick 2016 (33c3)", length: Some(8170), @@ -382,7 +400,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -394,14 +412,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 36111, + view_count: Some(36111), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "PnBs9oH2Lx8", title: "Easterhegg 2019 - Wie ich die Regierung gehackt habe", length: Some(3147), @@ -417,7 +437,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -429,14 +449,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 20322, + view_count: Some(20322), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "yaCiVvBD-xc", title: "Mathias Dalheimer: Wie man einen Blackout verursacht", length: Some(3748), @@ -452,7 +474,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -464,14 +486,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 482258, + view_count: Some(482258), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1PJnEwoFSXo", title: "Das Geheimnis der Hieroglyphen | Doku HD | ARTE", length: Some(5541), @@ -487,7 +511,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLLibJTCy3sXjHLVaDimnpQ", name: "ARTEde", avatar: [ @@ -499,14 +523,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("12 days ago"), - view_count: 427756, + view_count: Some(427756), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "iIDZ8pJKLZA", title: "36C3 ChaosWest: Bahn API Chaos", length: Some(3056), @@ -522,7 +548,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -534,14 +560,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 26926, + view_count: Some(26926), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "PhUQN6fd5O4", title: "35C3 - Jahresrückblick des CCC 2018", length: Some(8102), @@ -557,7 +585,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -569,14 +597,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 126093, + view_count: Some(126093), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bzr0c8qzQoc", title: "GPN19 - Beton", length: Some(3972), @@ -592,7 +622,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -604,14 +634,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 13243, + view_count: Some(13243), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IeX1F-Jjq9E", title: "Lars “Pylon” Weiler (DC4LW): Weltraumkommunikation", length: Some(5075), @@ -627,7 +659,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -639,14 +671,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 80624, + view_count: Some(80624), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "gsnL4m57MCM", title: "David Kriesel: SpiegelMining – Reverse Engineering von Spiegel-Online", length: Some(3526), @@ -662,7 +696,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCeO-zvUfuEdPMDoNST6hy1A", name: "Killuminati ∆", avatar: [ @@ -674,14 +708,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 29009, + view_count: Some(29009), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uEEHq6f8RsM", title: "Leyrer: Moderne Linux Kommandozeilenwerkzeuge - Edition \"Allein zu Haus\"", length: Some(3716), @@ -697,7 +733,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -709,27 +745,29 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 67538, + view_count: Some(67538), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILMHJiOUNmT3ZvamvAAQHIAQEYACqrBjJzNkw2d3paQkFyV0JBb0Q4ajRBQ2c3Q1Bnc0l4Ty1xb3AyV25NWDVBUW9EOGo0QUNnN0NQZ3NJZ29uTDc3clgtWjdqQVFvRDhqNEFDZzNDUGdvSTU5N2RnZW1vaEl4YUNnUHlQZ0FLSWRJLUhnb2NVa1JEVFZWRE1sUlljVjkwTURaSWFtUnlNbWRmUzJSTGNFaFJad29EOGo0QUNnN0NQZ3NJMDlqVG05MzIwZEhtQVFvRDhqNEFDZzdDUGdzSWphem5fUFhDNnF2c0FRb0Q4ajRBQ2c3Q1Bnc0lrckN0cmRULXdfdldBUW9EOGo0QUNnN0NQZ3NJdGZfQnJ0NjNuYjJPQVFvRDhqNEFDZzdDUGdzSW1wYnF5SkdsNmRudkFRb0Q4ajRBQ2c3Q1Bnc0lxT2FZbXBqZjM3ZTdBUW9EOGo0QUNnN0NQZ3NJMEtfcWhNRGYzZDI2QVFvRDhqNEFDZzNDUGdvSW45N1lqLWllbTdnLUNnUHlQZ0FLRHNJLUN3aVg5by1DNzhxbzBNa0JDZ1B5UGdBS0RzSS1Dd2o2a3BYUXNPS1otZFFCQ2dQeVBnQUtEc0ktQ3dpUTI2aVNxYjYyd0lnQkNnUHlQZ0FLRGNJLUNnanV5ZmUtLW9iRWlqNEtBX0ktQUFvTndqNEtDSWVGemRXOGpyMmRid29EOGo0QUNnM0NQZ29JMGRlT2tfNmlfZkloQ2dQeVBnQUtEc0ktQ3dpajRPenpwdnp5NUlJQkNnUHlQZ0FLRHNJLUN3akRqZkdfdXZYQm9MZ0JFaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmhvRUNBQVFBUm9FQ0FJUUF4b0VDQVFRQlJvRUNBWVFCeG9FQ0FnUUNSb0VDQW9RQ3hvRUNBd1FEUm9FQ0E0UUR4b0VDQkFRRVJvRUNCSVFFeG9FQ0JRUUZSb0VDQllRRnhvRUNCZ1FHUm9FQ0JvUUd4b0VDQndRSFJvRUNCNFFIeG9FQ0NBUUlSb0VDQ0lRSXhvRUNDUVFKUm9FQ0NZUUp5b1VBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(2200), items: [], ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyJSIRIgswcmI5Q2ZPdm9qazAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(2200), items: [], ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyOCIRIgswcmI5Q2ZPdm9qazABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap index ecbb3ca..82f59cc 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap @@ -519,7 +519,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "AOdp09SYhCc", title: "This Is So Embarrassing!", length: Some(1063), @@ -535,7 +535,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -547,14 +547,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1862544, + view_count: Some(1862544), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CY3OQh-7wIk", title: "The Computer I Would Actually BUY", length: Some(6478), @@ -570,7 +572,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -582,14 +584,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 8 days ago"), - view_count: 946996, + view_count: Some(946996), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "LQ95XJAwaoc", title: "My favorite car (sucks)", length: Some(1162), @@ -605,7 +609,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -617,14 +621,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 349251, + view_count: Some(349251), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "mhMQeJ5Qmp0", title: "The Apple Newton MessagePad.", length: Some(758), @@ -640,7 +646,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC7Jwj9fkrf1adN4fMmTkpug", name: "DankPods", avatar: [ @@ -652,14 +658,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 375458, + view_count: Some(375458), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1ctXiZsN6ac", title: "The Reviewer Got Reviewed - WAN Show September 9, 2022", length: Some(10265), @@ -675,7 +683,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -687,14 +695,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 6 days ago"), - view_count: 734463, + view_count: Some(734463), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CMR9z9Xr8GM", title: "Storing Solar Power on my ROOF!!!", length: Some(1028), @@ -710,7 +720,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCKd49wwdEdIoM-7Fumhwmog", name: "Quint BUILDs", avatar: [ @@ -722,14 +732,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 2773698, + view_count: Some(2773698), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fT2KhJ8W-Kg", title: "How gas pumps know when to turn themselves off", length: Some(836), @@ -745,7 +757,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEIwxahdLz7bap-VDs9h35A", name: "Steve Mould", avatar: [ @@ -757,14 +769,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 hours ago"), - view_count: 219605, + view_count: Some(219605), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "12Hcbx33Rb4", title: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", length: Some(1262), @@ -780,7 +794,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkWQ0gDrqOCarmUKmppD7GQ", name: "JayzTwoCents", avatar: [ @@ -792,14 +806,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 hours ago"), - view_count: 145345, + view_count: Some(145345), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QW1SsqmaIuE", title: "I Surprised My Subscriber with his Dream Gaming Setup! - Season 8", length: Some(2177), @@ -815,7 +831,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UChIZGfcnjHI0DG4nweWEduw", name: "TechSource", avatar: [ @@ -827,14 +843,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 hours ago"), - view_count: 50033, + view_count: Some(50033), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "JAcSNL1T3OA", title: "Why Did I Drill 1756 Holes in This?", length: Some(1293), @@ -850,7 +868,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVveEFTOd6khhSXXnRhxJmg", name: "Fireball Tool", avatar: [ @@ -862,14 +880,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1163652, + view_count: Some(1163652), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ZVtOss1U7_s", title: "VW Beetle converted to electric in a day", length: Some(826), @@ -885,7 +905,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCq1Oqk1I7zeYlDiJTFWLoFA", name: "Electric Classic Cars", avatar: [ @@ -897,14 +917,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 3266169, + view_count: Some(3266169), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2kJDTzFtUr4", title: "How ASML, TSMC And Intel Dominate The Chip Market | CNBC Marathon", length: Some(3399), @@ -920,7 +942,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvJJ_dzjViJCoLf5uKUTwoA", name: "CNBC", avatar: [ @@ -932,14 +954,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 678935, + view_count: Some(678935), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "0rCbfsuKdYw", title: "I bought every Playstation Ever.", length: Some(1046), @@ -955,7 +979,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCMiJRAwDNSNzuYeN2uWa0pA", name: "Mrwhosetheboss", avatar: [ @@ -967,14 +991,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7569956, + view_count: Some(7569956), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "sbdU7AkH6QM", title: "Reviewing Free Energy Generators. A Response to My Video \"Nikola Tesla\'s Greatest Invention\"- 102", length: Some(1387), @@ -990,7 +1016,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_SLthyNX_ivd-dmsFgmJVg", name: "Jeremy Fielding", avatar: [ @@ -1002,14 +1028,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 3374461, + view_count: Some(3374461), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "zcchDu7KoYs", title: "AMD’s Victory Lap - HOLY $H!T Threadripper Pro 5995WX", length: Some(872), @@ -1025,7 +1053,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1037,14 +1065,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 1322625, + view_count: Some(1322625), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pd6DsSjqhFE", title: "Top Gear Satisfaction Survey Compilation", length: Some(986), @@ -1060,7 +1090,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCupQghOyPai8Hxg4RqMERvA", name: "incT", avatar: [ @@ -1072,14 +1102,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 255945, + view_count: Some(255945), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2K5Gqp1cEcM", title: "Why our Screwdriver took 3 YEARS", length: Some(1752), @@ -1095,7 +1127,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1107,14 +1139,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 2930532, + view_count: Some(2930532), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "t03rmc-prJo", title: "This PC took 600 HOURS to Build!", length: Some(1505), @@ -1130,7 +1164,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1142,14 +1176,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("12 days ago"), - view_count: 2743664, + view_count: Some(2743664), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QTH9m6MDIfc", title: "One Year Ago I Built an Ecosystem, This Happened", length: Some(485), @@ -1165,7 +1201,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYmna5rFHIesFteksAvFOfg", name: "Dr. Plants", avatar: [ @@ -1177,27 +1213,29 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7958495, + view_count: Some(7958495), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqkBjJzNkw2d3pVQkFyUkJBb0Q4ajRBQ2d6Q1Bna0lwNGppcEwyNjJuTUtBX0ktQUFvTndqNEtDSW1CN18yaHlQUEdDUW9EOGo0QUNnM0NQZ29JaDlYQmdjbXIzb2N0Q2dQeVBnQUtEc0ktQ3dpZHRjTHlpWV9FaVpvQkNnUHlQZ0FLRHNJLUN3aW4wN2ZZbWZIVjVkVUJDZ1B5UGdBS0RjSS1DZ2pqNEstdl9ibWY0Z2dLQV9JLUFBb053ajRLQ0tqeDJfakowT0tlZlFvRDhqNEFDZzdDUGdzSXZvdmQ3X0dOOTdEWEFRb0Q4ajRBQ2czQ1Bnb0k0Y1hvektyVzFMWkJDZ1B5UGdBS0RjSS1DZ2pndWNfcXk4YkVneVFLQV9JLUFBb053ajRLQ1B2ZjAtcXMxdE90WlFvRDhqNEFDaUhTUGg0S0hGSkVRMDFWUTFoMWNWTkNiRWhCUlRaWWR5MTVaVXBCTUZSMWJuY0tBX0ktQUFvT3dqNExDTDZsdFl2ejZaQ2gyZ0VLQV9JLUFBb093ajRMQ0l6cnFkenM3NmJZMGdFS0FfSS1BQW9Pd2o0TENJUFNuOGpBbmRYYnNRRUtBX0ktQUFvT3dqNExDSXZEcXZidW9jamp6UUVLQV9JLUFBb093ajRMQ05HSXFzZVM5cUR2cFFFS0FfSS1BQW9Pd2o0TENNT2o4T3FwMVpIWDJBRUtBX0ktQUFvT3dqNExDSnJacHYyYzhfcW10d0VLQV9JLUFBb053ajRLQ1BmRGpKaTZzXy1ZUVJJVUFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWWFCQWdBRUFFYUJBZ0NFQU1hQkFnRUVBVWFCQWdHRUFjYUJBZ0lFQWthQkFnS0VBc2FCQWdNRUEwYUJBZ09FQThhQkFnUUVCRWFCQWdTRUJNYUJBZ1VFQlVhQkFnV0VCY2FCQWdZRUJrYUJBZ2FFQnNhQkFnY0VCMGFCQWdlRUI4YUJBZ2dFQ0VhQkFnaUVDTWFCQWdrRUNVYUJBZ21FQ2NxRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbWoPd2F0Y2gtbmV4dC1mZWVk"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(2900), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(2900), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap index 8761c3c..c14349c 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap @@ -73,7 +73,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "SGP6Y0Pnhe4", title: "HOW IT WORKS: The International Space Station", length: Some(1738), @@ -89,7 +89,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_sXrcURB-Dh4az_FveeQ0Q", name: "DOCUMENTARY TUBE", avatar: [ @@ -101,14 +101,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 90280310, + view_count: Some(90280310), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ddZu_1Z3BAc", title: "NASA LIVE Stream From The ISS - Live Earth & Space Station Views & Audio", length: None, @@ -124,7 +126,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -136,14 +138,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 80, + view_count: Some(80), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "oDXBMjg9HKU", title: "APOD: 2022-09-20 - Star Forming Region NGC 3582 without Stars (Narrated by Amy)", length: Some(124), @@ -159,7 +163,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCZepiiyNNbD2XL5sWnJBC_A", name: "Videotizer", avatar: [ @@ -171,14 +175,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 hours ago"), - view_count: 13, + view_count: Some(13), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "aU0vNvVHXa8", title: "🌎 LIVE ASTEROID Watch Tracking", length: None, @@ -194,7 +200,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCNrGOnduIS9BXIRmDcHasZA", name: "WorldCam", avatar: [ @@ -206,14 +212,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 23, + view_count: Some(23), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "6scCF_8YN70", title: "Dramatic footage of the tsunami that hit Japan", length: Some(133), @@ -229,7 +237,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCelk6aHijZq-GJBBB9YpReA", name: "BBC News عربي", avatar: [ @@ -241,14 +249,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 years ago"), - view_count: 118635723, + view_count: Some(118635723), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "n4IhCSMkADc", title: "EARTH FROM SPACE: Like You\'ve Never Seen Before", length: Some(766), @@ -264,7 +274,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_sXrcURB-Dh4az_FveeQ0Q", name: "DOCUMENTARY TUBE", avatar: [ @@ -276,14 +286,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 11226061, + view_count: Some(11226061), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bgbH4FAmAA0", title: "Winter Cab View from two of the most SCENIC RAILWAYS in the WORLD", length: None, @@ -299,7 +311,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCj-Xm8j6WBgKY8OG7s9r2vQ", name: "RailCowGirl", avatar: [ @@ -311,14 +323,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 108, + view_count: Some(108), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uD4izuDMUQA", title: "TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K)", length: Some(1761), @@ -334,7 +348,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCR9sFzaG9Ia_kXJhfxtFMBA", name: "melodysheep", avatar: [ @@ -346,14 +360,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 85240979, + view_count: Some(85240979), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Z6DpPQ8QdLg", title: "Earthrise - Planet Earth Seen From The Moon - Real Time Journey Across The Lunar Surface", length: Some(241), @@ -369,7 +385,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -381,14 +397,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 5405668, + view_count: Some(5405668), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1hNF3Wuw0LI", title: "New York City Walk 24/7 Chat Stream", length: None, @@ -404,7 +422,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRI_rCIV69l-PmT3oyD64kw", name: "Afraz Explores", avatar: [ @@ -416,14 +434,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 10, + view_count: Some(10), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ZEyAs3NWH4A", title: "New: Mars In 4K", length: Some(609), @@ -439,7 +459,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCZvxw99l3xDC6BIHb8nJKGg", name: "ElderFox Documentaries", avatar: [ @@ -451,14 +471,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 61247221, + view_count: Some(61247221), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NF4LQaWJRDg", title: "Hiroshima: Dropping the Bomb", length: Some(276), @@ -474,7 +496,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2ccm1GajfSujz7T18d7cKA", name: "BBC Studios", avatar: [ @@ -486,14 +508,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("15 years ago"), - view_count: 36276575, + view_count: Some(36276575), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "qhOe_PxiNo8", title: "Imagens, Talvez Inéditas do Tsunami no Japão", length: Some(1202), @@ -509,7 +533,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCyrM5blUZAQoX9UvObdjtig", name: "Valdemar Gomes", avatar: [ @@ -521,14 +545,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 12004917, + view_count: Some(12004917), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "zf3bDpdhUNc", title: "Astronauts accidentally lose a shield in space (GoPro 8K)", length: Some(566), @@ -544,7 +570,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgP30k64HHZ0OY1QkEgS6Pw", name: "Waa Sop", avatar: [ @@ -556,14 +582,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 22901662, + view_count: Some(22901662), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "mJxsj51d-Pk", title: "Record breaking space jump - free fall faster than speed of sound - Red Bull Stratos.", length: Some(503), @@ -579,7 +607,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCBuDzfvztEJvNll_w1E9xFw", name: "The Random Theorizer", avatar: [ @@ -591,14 +619,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 42814880, + view_count: Some(42814880), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fr_hXLDLc38", title: "Horizons mission - Soyuz: launch to orbit", length: Some(607), @@ -614,7 +644,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCIBaDdAbGlFDeS33shmlD0A", name: "European Space Agency, ESA", avatar: [ @@ -626,14 +656,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 9592134, + view_count: Some(9592134), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh-qzwdiAGY", title: "The Earth 4K - Incredible 4K / UHD Video of Earth From Space", length: Some(3594), @@ -649,7 +681,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -661,14 +693,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 4463605, + view_count: Some(4463605), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EPyl1LgNtoQ", title: "The View from Space - Earth\'s Countries and Coastlines", length: Some(227), @@ -684,7 +718,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC1znqKFL3jeR0eoA0pHpzvw", name: "SpaceRip", avatar: [ @@ -696,14 +730,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 years ago"), - view_count: 14094460, + view_count: Some(14094460), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "7KXGZAEWzn0", title: "ORBIT - Journey Around Earth in Real Time // 4K Remastered", length: Some(5560), @@ -719,7 +755,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC28l88GMXXqZYfY0Ru9h50w", name: "Seán Doran", avatar: [ @@ -731,14 +767,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 9901163, + view_count: Some(9901163), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KTUa9rG08go", title: "NASA Artemis I Mon Rocket Testing and Inspection LIVE From Launch Complex 39B", length: None, @@ -754,7 +792,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDyeuRnxf_hxEyH1B7aoDQQ", name: "thebhp", avatar: [ @@ -766,27 +804,29 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 15, + view_count: Some(15), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILODZZTEZPb2c0R03AAQHIAQEYACrgBzJzNkw2d3poQlFyZUJRb0Q4ajRBQ2czQ1Bnb0k3b3VlbjdUTV9yRklDZ1B5UGdBS0RjSS1DZ2lIaU55ejlkLWI2M1VLQV9JLUFBb093ajRMQ0tXNTlNR2pwdkNhb0FFS0FfSS1BQW9Od2o0S0NLLTduYXJ2NXN1bWFRb0Q4ajRBQ2c3Q1Bnc0l2ZV9nLVBfQ3dPUHFBUW9EOGo0QUNnN0NQZ3NJdDRDUW1aS2hpTUdmQVFvRDhqNEFDZzNDUGdvSWpZQ1lnWVg4c1lOdUNnUHlQZ0FLRHNJLUN3aUFvckdHN3RtSW43Z0JDZ1B5UGdBS0RjSS1DZ2k0NmNINDBLZTYwR2NLQV9JLUFBb093ajRMQ0xLaHc5M1d1OUdKMWdFS0FfSS1BQW9Od2o0S0NJQ18ySnEzbHFDbVpBb0Q4ajRBQ2czQ1Bnb0l1SWlsckpyb2dxODBDZ1B5UGdBS0RzSS1Dd2lQN1lqano5X25pYW9CQ2dQeVBnQUtEc0ktQ3dqWG9ZVzc2ZUgyX3MwQkNnUHlQZ0FLRHNJLUN3ajU4ZmZxLVpHYnpwZ0JDZ1B5UGdBS0RjSS1DZ2pfNXEyR3k2djQzMzRLQV9JLUFBb053ajRLQ09hQWlMdncyZXFQSmdvRDhqNEFDZzNDUGdvSWhPMjJ3TXU2cWY0UUNnUHlQZ0FLRHNJLUN3ajluTnVJd016eDB1d0JDZ1B5UGdBS0RjSS1DZ2lLNU5PTjY5N0dtaWtLQV9JLUFBb2FtajhYQ2hWUGZEazRNek0xTXpjMU5ERTJOVGMzT0RnMk1UY0tHNW9fR0FvV1Qzd3hNekF5TXpnek9UY3hPREk0TXpVMU9EUTFNd29ibWo4WUNoWlBmREUxT0RVek5Ua3dPRGczTURVeE1qVTBOemcwQ2dQeVBnQUtBX0ktQUJJWEFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWW9MQzBhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjYUJBZ29FQ2thQkFnb0VDb2FCQWdvRUNzYUJBZ3NFQ2thQkFnc0VDb2FCQWdzRUNzYUJBZ3RFQ2thQkFndEVDb2FCQWd0RUNzcUZ3QUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1LQ3d0ag93YXRjaC1uZXh0LWZlZWQ%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(0), items: [], ctoken: None, - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(0), items: [], ctoken: None, - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap index db00b94..57a5ff7 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap @@ -41,7 +41,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "XtV_HGppS6A", title: "Vergiss mein nicht", length: Some(263), @@ -57,7 +57,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -69,14 +69,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 30966, + view_count: Some(30966), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "BcqM8Qshx7U", title: "Kuliko Jana - Eine neue Zeit", length: Some(210), @@ -92,7 +94,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -104,14 +106,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 15269, + view_count: Some(15269), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IUFUIgZOcow", title: "Silmaril - Schöner als die Sterne", length: Some(205), @@ -127,7 +131,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -139,14 +143,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 29035, + view_count: Some(29035), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UtP9J88Jzg0", title: "Ruinen im Sand", length: Some(195), @@ -162,7 +168,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -174,14 +180,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 46009, + view_count: Some(46009), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "sg6j-zfUF_A", title: "Eldamar", length: Some(223), @@ -197,7 +205,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -209,14 +217,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 7405, + view_count: Some(7405), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "u2XCC1rKxV0", title: "Faolan", length: Some(256), @@ -232,7 +242,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -244,14 +254,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 19383, + view_count: Some(19383), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "oOBBBl3fywU", title: "Aeria - Vom Wind", length: Some(260), @@ -267,7 +279,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -279,14 +291,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 132472, + view_count: Some(132472), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pI0Rancanz0", title: "Vergiss mein nicht", length: Some(263), @@ -302,7 +316,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -314,14 +328,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 367684, + view_count: Some(367684), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "DsviLYh1CB0", title: "Eldamar", length: Some(222), @@ -337,7 +353,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -349,14 +365,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 195958, + view_count: Some(195958), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ctpe9kafn78", title: "So still mein Herz", length: Some(259), @@ -372,7 +390,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -384,14 +402,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 37702, + view_count: Some(37702), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "y252630WbIk", title: "Oonagh und Santiano: Vergiss mein nicht (mit lyrics)", length: Some(260), @@ -407,7 +427,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC8mcGChRS6Zm7pCSYbHeoVw", name: "princessZelda", avatar: [ @@ -419,14 +439,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 years ago"), - view_count: 103494, + view_count: Some(103494), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "YgUZtELr_jw", title: "Aulë und Yavanna", length: Some(216), @@ -442,7 +464,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -454,14 +476,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 19342, + view_count: Some(19342), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ABKSs0aU4C0", title: "Gäa (Akustik Version)", length: Some(235), @@ -477,7 +501,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -489,14 +513,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 9392, + view_count: Some(9392), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "O0I3rJsHikA", title: "Orome (A-Class Remix)", length: Some(199), @@ -512,7 +538,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -524,27 +550,29 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 22994, + view_count: Some(22994), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqsBzJzNkw2d3k2QlFxM0JRb0Q4ajRBQ2czQ1Bnb0lvSmVsMDhiajMtcGVDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNpZlNQaVFLSWxCTU5pMTRZV3hIWVZaRmRYQjJlVGxHUVVoZlJYZ3pTRlYxWHpGaFVrRXlialFLQV9JLUFBb1MwajRQQ2cxU1JGaDFUVEp2YmsxSGRsUkpDZ1B5UGdBS0RjSS1DZ2kxajRmWmtKNmo1UVVLQV9JLUFBb053ajRLQ0l6bHViS2doTldnSVFvRDhqNEFDZzNDUGdvSWpaeW4tUHlrXy1sU0NnUHlQZ0FLRHNJLUN3andyOUMtc18tb2g3SUJDZ1B5UGdBS0o5SS1KQW9pVUV3d1dqSlNSVFZsY1dGWlRWRXhiRnBaZGtWalRrOW1UVmx3VFVvelkyTktRd29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzdDUGdzSWhaYl83dVdna1BDZ0FRb0Q4ajRBQ2c3Q1Bnc0l2YjdxdUtldHhNYWtBUW9EOGo0QUNnM0NQZ29JblpEVXc5akYtT1VPQ2dQeVBnQUtIOUktSEFvYVVrUkZUV1E0VUZwSmRqbERVSE4yZGtWRVltOWZjRlZFTkhjS0FfSS1BQW9Od2o0S0NMLV9fclRrM3BmdENnb0Q4ajRBQ2c3Q1Bnc0lpZG5aNkxmZG5iZkxBUW9EOGo0QUNnM0NQZ29JdlB5dmw4UzJ4b0ppQ2dQeVBnQUtETUktQ1FpdHdOTzB0TmFrQ1FvRDhqNEFDaWZTUGlRS0lsQk1NazR6TjFoVWQxaG5jRlZpYWxSemNXVjFNbEZFZVRCTGIyRnpkMDlZTVZvS0FfSS1BQW9Od2o0S0NNQ1VudGpKOVkyaE94SVVBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjcUZBQUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1qD3dhdGNoLW5leHQtZmVlZA%3D%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(0), items: [], ctoken: None, - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(0), items: [], ctoken: None, - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap index 7d4f7f7..05ca067 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "4TWR90KJl84", title: "aespa 에스파 \'Next Level\' MV", length: Some(236), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -132,14 +132,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 245412217, + view_count: Some(245412217), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -167,14 +169,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 215292736, + view_count: Some(215292736), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -202,14 +206,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 264670229, + view_count: Some(264670229), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -237,14 +243,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 354281319, + view_count: Some(354281319), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -272,14 +280,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 167648677, + view_count: Some(167648677), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -307,14 +317,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 455437333, + view_count: Some(455437333), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -342,14 +354,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 344730852, + view_count: Some(344730852), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QslJYDX3o8s", title: "Red Velvet 레드벨벳 \'러시안 룰렛 (Russian Roulette)\' MV", length: Some(212), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -377,14 +391,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 238321583, + view_count: Some(238321583), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EaswWiwMVs8", title: "Stray Kids \"소리꾼(Thunderous)\" M/V", length: Some(199), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -412,14 +428,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 240527435, + view_count: Some(240527435), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pNfTK39k55U", title: "ITZY \"달라달라(DALLA DALLA)\" M/V @ITZY", length: Some(227), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -447,14 +465,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 306144594, + view_count: Some(306144594), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "dYRITmpFbJ4", title: "aespa 에스파 \'Girls\' MV", length: Some(269), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -482,14 +502,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 100128895, + view_count: Some(100128895), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ioNng23DkIM", title: "BLACKPINK - \'How You Like That\' M/V", length: Some(184), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -517,14 +539,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1146631077, + view_count: Some(1146631077), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -552,14 +576,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 126406160, + view_count: Some(126406160), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bwmSjveL3Lc", title: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", length: Some(244), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -587,14 +613,16 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1476093662, + view_count: Some(1476093662), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "6uJf2IT2Zh8", title: "Red Velvet 레드벨벳 \'피카부 (Peek-A-Boo)\' MV", length: Some(230), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -622,14 +650,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 228968545, + view_count: Some(228968545), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -657,14 +687,16 @@ VideoDetails( ], verification: verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 152292435, + view_count: Some(152292435), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2FzSv66c7TQ", title: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", length: Some(3441), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCK8S6QMrTk1G8TYQwIyDo-w", name: "𝙇𝙌 𝙆𝙋𝙊𝙋", avatar: [ @@ -692,14 +724,16 @@ VideoDetails( ], verification: none, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 504562, + view_count: Some(504562), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NU611fxGyPU", title: "aespa 에스파 \'Black Mamba\' Dance Practice", length: Some(175), @@ -715,7 +749,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -727,27 +761,29 @@ VideoDetails( ], verification: artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 34445393, + view_count: Some(34445393), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACq7BjJzNkw2d3psQkFyaUJBb0Q4ajRBQ2c3Q1Bnc0l6cS1tbFBTLTVKcmhBUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvdzBqNHRDaXRTUkVOTVFVczFkWGxmYXpJM2RYVXRSWFJSWDJJMVZUSnlNalpFVGtSYVQyMU9jVWRrWTJOVlNVZFJDZ1B5UGdBS0RjSS1DZ2k0OVlLQTU5ZlYtMWdLQV9JLUFBb053ajRLQ0tyR2pyWEF3SUxETmdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnakw3Wm1mMm9LRWp5WUtBX0ktQUFvTndqNEtDTnVibVl1VjBvRG5DQW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXk4ZmVyNE9zMHVSQ0NnUHlQZ0FLRGNJLUNnalByYkhnb292TTFSRUtBX0ktQUFvT3dqNExDSlhQa191MzVmVHJwQUVLQV9JLUFBb053ajRLQ0o3WmxkTG1pWkxDZFFvRDhqNEFDZzdDUGdzSWc2R083cmJ3MmNHS0FRb0Q4ajRBQ2czQ1Bnb0lyY1N5MWFfUXY1dFNDZ1B5UGdBS0RjSS1DZ2kzdWEtODc5SGtoRzhLQV9JLUFBb093ajRMQ0pfTTJhZUktNWZ4NmdFS0FfSS1BQW9Od2o0S0NMcW9udXJTdUpIaFl3b0Q4ajRBQ2c3Q1Bnc0l0TnJ6OVByWHRLN1lBUW9EOGo0QUNnM0NQZ29JOVpHYjR0LTZyYWMxRWhRQUFnUUdDQW9NRGhBU0ZCWVlHaHdlSUNJa0pob0VDQUFRQVJvRUNBSVFBeG9FQ0FRUUJSb0VDQVlRQnhvRUNBZ1FDUm9FQ0FvUUN4b0VDQXdRRFJvRUNBNFFEeG9FQ0JBUUVSb0VDQklRRXhvRUNCUVFGUm9FQ0JZUUZ4b0VDQmdRR1JvRUNCb1FHeG9FQ0J3UUhSb0VDQjRRSHhvRUNDQVFJUm9FQ0NJUUl4b0VDQ1FRSlJvRUNDWVFKeW9VQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZag93YXRjaC1uZXh0LWZlZWQ%3D"), - endpoint: browse, + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), - endpoint: browse, + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), - endpoint: browse, + endpoint: next, ), ) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index e317328..0dc2d6e 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::{ error::{Error, ExtractionError}, - model::{ChannelTag, Chapter, Comment, Paginator, RecommendedVideo, VideoDetails}, + model::{ChannelTag, Chapter, Comment, Paginator, VideoDetails, VideoItem}, param::Language, serializer::MapResult, timeago, @@ -10,7 +10,7 @@ use crate::{ }; use super::{ - response::{self, IconType, TryFromWLang}, + response::{self, IconType}, ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext, }; @@ -45,26 +45,6 @@ impl RustyPipeQuery { .await } - pub async fn video_recommendations( - self, - ctoken: &str, - ) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "video_recommendations", - ctoken, - "next", - &request_body, - ) - .await - } - pub async fn video_comments(self, ctoken: &str) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QContinuation { @@ -329,32 +309,24 @@ impl MapResponse for response::VideoDetails { is_ccommons, chapters, recommended, - top_comments: Paginator::new(comment_count, Vec::new(), comment_ctoken), - latest_comments: Paginator::new(comment_count, Vec::new(), latest_comments_ctoken), + top_comments: Paginator::new_with_endpoint( + comment_count, + Vec::new(), + comment_ctoken, + crate::model::ContinuationEndpoint::Next, + ), + latest_comments: Paginator::new_with_endpoint( + comment_count, + Vec::new(), + latest_comments_ctoken, + crate::model::ContinuationEndpoint::Next, + ), }, warnings, }) } } -impl MapResponse> for response::VideoRecommendations { - fn map_response( - self, - _id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut endpoints = self.on_response_received_endpoints; - let cont = endpoints.try_swap_remove(0).ok_or(ExtractionError::Retry)?; - - Ok(map_recommendations( - cont.append_continuation_items_action.continuation_items, - None, - lang, - )) - } -} - impl MapResponse> for response::VideoComments { fn map_response( self, @@ -419,47 +391,27 @@ impl MapResponse> for response::VideoComments { } fn map_recommendations( - r: MapResult>, + r: MapResult>, continuations: Option>, lang: Language, -) -> MapResult> { - let mut warnings = r.warnings; - let mut ctoken = None; - - let mut items = Vec::new(); - - r.c.into_iter().for_each(|item| match item { - response::VideoListItem::CompactVideoRenderer(video) => { - match RecommendedVideo::from_w_lang(video, lang) { - Ok(video) => items.push(video), - Err(e) => warnings.push(e.to_string()), - } - } - response::VideoListItem::ItemSectionRenderer { contents } => { - let mut x = map_recommendations(contents, None, lang); - items.append(&mut x.c.items); - warnings.append(&mut x.warnings); - if let Some(ct) = x.c.ctoken { - ctoken = Some(ct) - } - } - response::VideoListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - } - _ => {} - }); +) -> MapResult> { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(r); if let Some(continuations) = continuations { continuations.into_iter().for_each(|c| { - ctoken = Some(c.next_continuation_data.continuation); + mapper.ctoken = Some(c.next_continuation_data.continuation); }) }; MapResult { - c: Paginator::new(None, items, ctoken), - warnings, + c: Paginator::new_with_endpoint( + None, + mapper.items, + mapper.ctoken, + crate::model::ContinuationEndpoint::Next, + ), + warnings: mapper.warnings, } } @@ -600,42 +552,6 @@ mod tests { )) } - #[test] - fn t_map_recommendations() { - let json_path = Path::new("testfiles/video_details/recommendations.json"); - let json_file = File::open(json_path).unwrap(); - - let recommendations: response::VideoRecommendations = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = recommendations - .map_response("", Language::En, None) - .unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - insta::assert_ron_snapshot!("map_recommendations", map_res.c, { - ".items[].publish_date" => "[date]", - }); - } - - #[test] - fn map_recommendations_empty() { - let filename = format!("testfiles/video_details/recommendations_empty.json"); - let json_path = Path::new(&filename); - let json_file = File::open(json_path).unwrap(); - - let recommendations: response::VideoRecommendations = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let err = recommendations - .map_response("", Language::En, None) - .unwrap_err(); - - assert!(matches!(err, crate::error::ExtractionError::Retry)); - } - #[rstest] #[case::top("top")] #[case::latest("latest")] diff --git a/src/model/mod.rs b/src/model/mod.rs index 745ee85..4ef5092 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -531,7 +531,7 @@ pub struct VideoDetails { /// Recommended videos /// /// Note: Recommendations are not available for age-restricted videos - pub recommended: Paginator, + pub recommended: Paginator, /// Paginator to fetch comments (most liked first) /// /// Is initially empty.