fix: failing video_details_music comment test

This commit is contained in:
ThetaDev 2022-11-01 00:27:06 +01:00
parent 9707a6eb0b
commit c7ae2f8531
12 changed files with 38 additions and 11 deletions

View file

@ -35,7 +35,7 @@ impl RustyPipeQuery {
)
.await?;
Ok(map_ytm_paginator(p, endpoint))
Ok(map_ytm_paginator(p, visitor_data, endpoint))
} else {
let context = self
.get_context(ClientType::Desktop, true, visitor_data)
@ -55,33 +55,35 @@ impl RustyPipeQuery {
)
.await?;
Ok(map_yt_paginator(p, endpoint))
Ok(map_yt_paginator(p, visitor_data, endpoint))
}
}
}
fn map_yt_paginator<T: FromYtItem>(
p: Paginator<YouTubeItem>,
visitor_data: Option<&str>,
endpoint: ContinuationEndpoint,
) -> Paginator<T> {
Paginator {
count: p.count,
items: p.items.into_iter().filter_map(T::from_yt_item).collect(),
ctoken: p.ctoken,
visitor_data: p.visitor_data,
visitor_data: visitor_data.map(str::to_owned),
endpoint,
}
}
fn map_ytm_paginator<T: FromYtItem>(
p: Paginator<MusicItem>,
visitor_data: Option<&str>,
endpoint: ContinuationEndpoint,
) -> Paginator<T> {
Paginator {
count: p.count,
items: p.items.into_iter().filter_map(T::from_ytm_item).collect(),
ctoken: p.ctoken,
visitor_data: p.visitor_data,
visitor_data: visitor_data.map(str::to_owned),
endpoint,
}
}
@ -318,7 +320,7 @@ mod tests {
let map_res: MapResult<Paginator<YouTubeItem>> =
items.map_response("", Language::En, None).unwrap();
let paginator: Paginator<PlaylistItem> =
map_yt_paginator(map_res.c, ContinuationEndpoint::Browse);
map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse);
assert!(
map_res.warnings.is_empty(),
@ -340,7 +342,7 @@ mod tests {
let map_res: MapResult<Paginator<MusicItem>> =
items.map_response("", Language::En, None).unwrap();
let paginator: Paginator<TrackItem> =
map_ytm_paginator(map_res.c, ContinuationEndpoint::MusicBrowse);
map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse);
assert!(
map_res.warnings.is_empty(),

View file

@ -742,12 +742,14 @@ VideoDetails(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("CgtCeURHR09uNlJ5TSjOiLqZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("CgtCeURHR09uNlJ5TSjOiLqZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtCeURHR09uNlJ5TSjOiLqZBg%3D%3D"),

View file

@ -816,12 +816,14 @@ VideoDetails(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("Cgs2V0p6ZW5ab1ozTSjkrpaaBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("Cgs2V0p6ZW5ab1ozTSjkrpaaBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("Cgs2V0p6ZW5ab1ozTSjkrpaaBg%3D%3D"),

View file

@ -1274,12 +1274,14 @@ VideoDetails(
count: Some(3200),
items: [],
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("Cgtidzg4MlRTb3FKSSiqipeaBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(3200),
items: [],
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("Cgtidzg4MlRTb3FKSSiqipeaBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("Cgtidzg4MlRTb3FKSSiqipeaBg%3D%3D"),

View file

@ -46,12 +46,14 @@ VideoDetails(
count: None,
items: [],
ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyJSIRIgtIUkt1MGN2cnJfbzABeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("CgtxUUdrc1VSVE54Zyja1KiZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: None,
items: [],
ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyOCIRIgtIUkt1MGN2cnJfbzABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("CgtxUUdrc1VSVE54Zyja1KiZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtxUUdrc1VSVE54Zyja1KiZBg%3D%3D"),

View file

@ -763,12 +763,14 @@ VideoDetails(
count: Some(2200),
items: [],
ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyJSIRIgswcmI5Q2ZPdm9qazAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("CgtoY1pQUF8wNW1qayjSjpSZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(2200),
items: [],
ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyOCIRIgswcmI5Q2ZPdm9qazABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("CgtoY1pQUF8wNW1qayjSjpSZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtoY1pQUF8wNW1qayjSjpSZBg%3D%3D"),

View file

@ -1231,12 +1231,14 @@ VideoDetails(
count: Some(2900),
items: [],
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("CgtIV0JjSUtDQm9LQSjUjpSZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(2900),
items: [],
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("CgtIV0JjSUtDQm9LQSjUjpSZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtIV0JjSUtDQm9LQSjUjpSZBg%3D%3D"),

View file

@ -822,12 +822,14 @@ VideoDetails(
count: Some(0),
items: [],
ctoken: None,
visitor_data: Some("CgtnQS1WdzlNNkNCSSiSmKiZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(0),
items: [],
ctoken: None,
visitor_data: Some("CgtnQS1WdzlNNkNCSSiSmKiZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtnQS1WdzlNNkNCSSiSmKiZBg%3D%3D"),

View file

@ -568,12 +568,14 @@ VideoDetails(
count: Some(0),
items: [],
ctoken: None,
visitor_data: Some("CgtzclhqZVpoajVhVSi76qeZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(0),
items: [],
ctoken: None,
visitor_data: Some("CgtzclhqZVpoajVhVSi76qeZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgtzclhqZVpoajVhVSi76qeZBg%3D%3D"),

View file

@ -779,12 +779,14 @@ VideoDetails(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("Cgtjemd0bDVxU1N1QSjRjpSZBg%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(705000),
items: [],
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("Cgtjemd0bDVxU1N1QSjRjpSZBg%3D%3D"),
endpoint: next,
),
visitor_data: Some("Cgtjemd0bDVxU1N1QSjRjpSZBg%3D%3D"),

View file

@ -68,6 +68,10 @@ impl RustyPipeQuery {
&request_body,
)
.await
.map(|p| Paginator {
visitor_data: visitor_data.map(str::to_owned),
..p
})
}
}
@ -244,6 +248,7 @@ impl MapResponse<VideoDetails> for response::VideoDetails {
_ => return Err(ExtractionError::InvalidData("invalid channel link".into())),
};
let visitor_data = self.response_context.visitor_data;
let recommended = contents
.two_column_watch_next_results
.secondary_results
@ -252,7 +257,7 @@ impl MapResponse<VideoDetails> for response::VideoDetails {
let mut res = map_recommendations(
r,
sr.secondary_results.continuations,
self.response_context.visitor_data.clone(),
visitor_data.clone(),
lang,
);
warnings.append(&mut res.warnings);
@ -333,17 +338,17 @@ impl MapResponse<VideoDetails> for response::VideoDetails {
comment_count,
Vec::new(),
comment_ctoken,
None,
visitor_data.clone(),
crate::param::ContinuationEndpoint::Next,
),
latest_comments: Paginator::new_ext(
comment_count,
Vec::new(),
latest_comments_ctoken,
None,
visitor_data.clone(),
crate::param::ContinuationEndpoint::Next,
),
visitor_data: self.response_context.visitor_data,
visitor_data,
},
warnings,
})

View file

@ -502,11 +502,13 @@ async fn get_video_details_music() {
assert!(!details.recommended.items.is_empty());
assert!(!details.recommended.is_exhausted());
// Comments are disabled for this video
// Update(01.11.2022): comments are sometimes enabled
/*
assert_eq!(details.top_comments.count, Some(0));
assert_eq!(details.latest_comments.count, Some(0));
assert!(details.top_comments.is_empty());
assert!(details.latest_comments.is_empty());
*/
}
#[tokio::test]