@@ -2276,15 +2276,18 @@ sub rate_videos {
22762276
22772277sub get_and_play_video_ids {
22782278 (my @ids = grep { defined ($_ ) } map { get_valid_video_id($_ ) } @_ ) || return ;
2279- my $info = $yv_obj -> video_details(join (' ,' , @ids ), VIDEO_PART);
22802279
2281- if ($yv_utils -> has_entries($info )) {
2282- if (not play_videos($info -> {results }{items })) {
2283- return ;
2280+ while (@ids ) {
2281+ my $info = $yv_obj -> video_details(join (' ,' , splice (@ids , 0, 50)), VIDEO_PART);
2282+
2283+ if ($yv_utils -> has_entries($info )) {
2284+ if (not play_videos($info -> {results }{items })) {
2285+ return ;
2286+ }
2287+ }
2288+ else {
2289+ warn_cant_do(' get info for' , @ids );
22842290 }
2285- }
2286- else {
2287- warn_cant_do(' get info for' , @ids );
22882291 }
22892292
22902293 return 1;
@@ -3633,8 +3636,18 @@ sub print_playlists {
36333636 # :pp=i
36343637 elsif ($opt =~ / ^pp${digit_or_equal_re} (.*)/ ) {
36353638 if (my @ids = get_valid_numbers($# {$playlists }, $1 )) {
3636- my $arg = " --pp=" . join (q{ ,} , map { $yv_utils -> get_playlist_id($_ ) } @{$playlists }[@ids ]);
3637- apply_input_arguments([$arg ]);
3639+ foreach my $playlist (@{$playlists }[@ids ]) {
3640+
3641+ my $id = $yv_utils -> get_playlist_id($playlist );
3642+
3643+ if ($id =~ m { ^/} ) { # local playlist
3644+ my @ids = reverse $yv_utils -> read_lines_from_file($id );
3645+ apply_input_arguments([" --id=" . join (" ," , @ids )]) if @ids ;
3646+ }
3647+ else {
3648+ apply_input_arguments([" --pp=$id " ]);
3649+ }
3650+ }
36383651 }
36393652 else {
36403653 warn_no_thing_selected(' playlist' );
@@ -3655,7 +3668,7 @@ sub print_playlists {
36553668 return $id ;
36563669 }
36573670
3658- if ($id =~ m { ^/} ) {
3671+ if ($id =~ m { ^/} ) { # local playlist
36593672 print_local_playlist($id );
36603673 }
36613674 else {
0 commit comments