App-YTDL
view release on metacpan or search on metacpan
lib/App/YTDL/ChooseVideos.pm view on Meta::CPAN
package # hide from PAUSE
App::YTDL::ChooseVideos;
use warnings;
use strict;
use 5.010000;
use Exporter qw( import );
our @EXPORT_OK = qw( choose_videos set_sort_videolist );
use Encode qw( decode );
use Encode::Locale qw();
use List::MoreUtils qw( any none minmax firstidx );
use Term::Choose qw( choose );
use Term::Form qw();
sub _my_sort {
lib/App/YTDL/ChooseVideos.pm view on Meta::CPAN
if ( none { $m == $_ } @idx ) {
my $id = $avail_ids[$m - @pre];
delete $chosen_ids->{$id};
}
}
my $trs = Term::Form->new();
$regexp = $trs->readline( "Regexp: " );
next FILTER;
}
elsif ( $choice eq $sort ) {
set_sort_videolist( $set, $opt );
next FILTER;
}
else {
if ( $choice eq $enter ) {
shift @idx;
}
@last_chosen_ids = ();
for my $i ( @idx ) {
my $id = $avail_ids[$i - @pre];
$chosen_ids->{$id}++;
lib/App/YTDL/ChooseVideos.pm view on Meta::CPAN
sort { ( firstidx { $_ eq $a } @avail_ids ) <=> ( firstidx { $_ eq $b } @avail_ids ) }
keys %$chosen_ids
];
return $chosen;
}
}
}
}
sub set_sort_videolist {
my ( $set, $opt ) = @_;
my $backup_item = $opt->{list_sort_item};
my $backup_order = $set->{list_sort_order};
my $sort_items = [ 'upload_date', 'title', 'view_count_raw', 'duration' ];
my $confirm = ' CONFIRM';
my @pre = ( undef, $confirm );
my $menu = [ @pre, map { my $s = $_; $s =~ s/_raw\z//; $s =~ s/_/ /g; '- ' . $s } @$sort_items ];
ITEM: while ( 1 ) {
my $current = $opt->{list_sort_item};
lib/App/YTDL/Options.pm view on Meta::CPAN
use File::Spec::Functions qw( catfile curdir );
use File::Temp qw();
use FindBin qw( $RealBin $RealScript );
use Pod::Usage qw( pod2usage );
use File::HomeDir qw();
use Term::Choose qw( choose );
use Term::Choose::Util qw( choose_a_directory choose_a_file choose_a_number settings_menu insert_sep );
use Term::Form qw();
use App::YTDL::ChooseVideos qw( set_sort_videolist );
use App::YTDL::Helper qw( write_json read_json uni_capture HIDE_CURSOR SHOW_CURSOR );
sub _show_info {
my ( $set, $opt ) = @_;
my ( $youtube_dl_version, $ffmpeg_version, $ffprobe_version );
if ( ! eval { $youtube_dl_version = uni_capture( @{$set->{youtube_dl}}, '--version' ); 1 } ) {
$youtube_dl_version = $@;
}
chomp $youtube_dl_version;
lib/App/YTDL/Options.pm view on Meta::CPAN
my $name = 'New: ';
_opt_number_range( $set, $opt, $key, $name, $info, $digits );
}
elsif ( $key eq "max_processes" ) {
my $digits = 2;
my $info = sprintf "Fetching additional information: the maximum number of parallel downloads\nNow: %${digits}s", insert_sep( $opt->{$key} );
my $name = 'New: ';
_opt_number_range( $set, $opt, $key, $name, $info, $digits );
}
elsif ( $key eq "list_sort_item" ) {
set_sort_videolist( $set, $opt );
}
elsif ( $key eq "show_view_count" ) {
my $prompt = 'Show the view-count in list-menus';
my $list = [ 'if sorted by "view count"', 'always' ];
_opt_choose_from_list_idx( $set, $opt, $key, $prompt, $list );
}
elsif ( $key eq "show_video_id" ) {
my $prompt = 'Show the video-id in list-menus';
my $list = [ 'no', 'yes' ];
_opt_choose_from_list_idx( $set, $opt, $key, $prompt, $list );
( run in 1.709 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )