From 8aa2bfcf9eeb485ee8b4add98cff9cbac95de13b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Mar 2023 16:13:27 +0100 Subject: [PATCH 1/2] fix(cli): extend playlists --- cli/src/main.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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); } } From b4ca16caf8e17fad033412fdffb67b21db70eb4f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Mar 2023 16:36:21 +0100 Subject: [PATCH 2/2] fix: accept empty music continuations --- src/client/pagination.rs | 9 ++++++--- src/client/response/music_item.rs | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) 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)]