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 )