diff --git a/cli/src/main.rs b/cli/src/main.rs index e980dba..7d3067a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -588,10 +588,20 @@ async fn main() { } UrlTarget::Playlist { id } => { if music { - let playlist = rp.query().music_playlist(&id).await.unwrap(); + let mut playlist = rp.query().music_playlist(&id).await.unwrap(); + playlist + .tracks + .extend_limit(rp.query(), limit) + .await + .unwrap(); print_data(&playlist, format, pretty); } else { - let playlist = rp.query().playlist(&id).await.unwrap(); + let mut playlist = rp.query().playlist(&id).await.unwrap(); + playlist + .videos + .extend_limit(rp.query(), limit) + .await + .unwrap(); print_data(&playlist, format, pretty); } } diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 8a599b9..2d87b51 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -136,11 +136,11 @@ impl MapResponse> for response::MusicContinuation { let mut continuations = Vec::new(); match self.continuation_contents { - response::music_item::ContinuationContents::MusicShelfContinuation(mut shelf) => { + Some(response::music_item::ContinuationContents::MusicShelfContinuation(mut shelf)) => { mapper.map_response(shelf.contents); continuations.append(&mut shelf.continuations); } - response::music_item::ContinuationContents::SectionListContinuation(contents) => { + Some(response::music_item::ContinuationContents::SectionListContinuation(contents)) => { for c in contents.contents { match c { response::music_item::ItemSection::MusicShelfRenderer(mut shelf) => { @@ -154,7 +154,9 @@ impl MapResponse> for response::MusicContinuation { } } } - response::music_item::ContinuationContents::PlaylistPanelContinuation(mut panel) => { + Some(response::music_item::ContinuationContents::PlaylistPanelContinuation( + mut panel, + )) => { continuations.append(&mut panel.continuations); mapper.add_warnings(&mut panel.contents.warnings); panel.contents.c.into_iter().for_each(|item| { @@ -163,6 +165,7 @@ impl MapResponse> for response::MusicContinuation { } }); } + None => {} } let map_res = mapper.items(); diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index 4212679..54cdd3a 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -298,7 +298,7 @@ impl From for Vec { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicContinuation { - pub continuation_contents: ContinuationContents, + pub continuation_contents: Option, } #[derive(Debug, Deserialize)]