fix: error on empty YT pagination responses

This commit is contained in:
ThetaDev 2023-04-05 19:23:08 +02:00
parent f5688f3571
commit 0164fac2e0
2 changed files with 6 additions and 10 deletions

View file

@ -1,5 +1,3 @@
use std::borrow::Cow;
use crate::error::{Error, ExtractionError}; use crate::error::{Error, ExtractionError};
use crate::model::{ use crate::model::{
paginator::{ContinuationEndpoint, Paginator}, paginator::{ContinuationEndpoint, Paginator},
@ -111,9 +109,7 @@ impl MapResponse<Paginator<YouTubeItem>> for response::Continuation {
self.continuation_contents self.continuation_contents
.map(|contents| contents.rich_grid_continuation.contents) .map(|contents| contents.rich_grid_continuation.contents)
}) })
.ok_or(ExtractionError::InvalidData(Cow::Borrowed( .unwrap_or_default();
"no continuation items",
)))?;
let mut mapper = response::YouTubeListMapper::<YouTubeItem>::new(lang); let mut mapper = response::YouTubeListMapper::<YouTubeItem>::new(lang);
mapper.map_response(items); mapper.map_response(items);

View file

@ -433,7 +433,7 @@ fn get_video_details(rp: RustyPipe) {
assert!(!details.is_ccommons); assert!(!details.is_ccommons);
assert!(details.recommended.visitor_data.is_some()); assert!(details.recommended.visitor_data.is_some());
assert_next(details.recommended, rp.query(), 10, 2); assert_next(details.recommended, rp.query(), 10, 1);
assert_gte(details.top_comments.count.unwrap(), 700_000, "comments"); assert_gte(details.top_comments.count.unwrap(), 700_000, "comments");
assert!(!details.top_comments.is_exhausted()); assert!(!details.top_comments.is_exhausted());
@ -470,7 +470,7 @@ fn get_video_details_music(rp: RustyPipe) {
assert!(!details.is_ccommons); assert!(!details.is_ccommons);
assert!(details.recommended.visitor_data.is_some()); assert!(details.recommended.visitor_data.is_some());
assert_next(details.recommended, rp.query(), 10, 2); assert_next(details.recommended, rp.query(), 10, 1);
// Update(01.11.2022): comments are sometimes enabled // Update(01.11.2022): comments are sometimes enabled
/* /*
@ -517,7 +517,7 @@ fn get_video_details_ccommons(rp: RustyPipe) {
assert!(details.is_ccommons); assert!(details.is_ccommons);
assert!(details.recommended.visitor_data.is_some()); assert!(details.recommended.visitor_data.is_some());
assert_next(details.recommended, rp.query(), 10, 2); assert_next(details.recommended, rp.query(), 10, 1);
assert_gte(details.top_comments.count.unwrap(), 2199, "comments"); assert_gte(details.top_comments.count.unwrap(), 2199, "comments");
assert!(!details.top_comments.is_exhausted()); assert!(!details.top_comments.is_exhausted());
@ -640,7 +640,7 @@ fn get_video_details_chapters(rp: RustyPipe) {
} }
assert!(details.recommended.visitor_data.is_some()); assert!(details.recommended.visitor_data.is_some());
assert_next(details.recommended, rp.query(), 10, 2); assert_next(details.recommended, rp.query(), 10, 1);
assert_gte(details.top_comments.count.unwrap(), 3200, "comments"); assert_gte(details.top_comments.count.unwrap(), 3200, "comments");
assert!(!details.top_comments.is_exhausted()); assert!(!details.top_comments.is_exhausted());
@ -683,7 +683,7 @@ fn get_video_details_live(rp: RustyPipe) {
assert!(!details.is_ccommons); assert!(!details.is_ccommons);
assert!(details.recommended.visitor_data.is_some()); assert!(details.recommended.visitor_data.is_some());
assert_next(details.recommended, rp.query(), 10, 2); assert_next(details.recommended, rp.query(), 10, 1);
// No comments because livestream // No comments because livestream
assert_eq!(details.top_comments.count, Some(0)); assert_eq!(details.top_comments.count, Some(0));