diff options
Diffstat (limited to '.local')
-rwxr-xr-x | .local/bin/linkview | 68 |
1 files changed, 30 insertions, 38 deletions
diff --git a/.local/bin/linkview b/.local/bin/linkview index cd9d90e..772ae6e 100755 --- a/.local/bin/linkview +++ b/.local/bin/linkview @@ -8,13 +8,9 @@ use File::HomeDir qw(home); use File::Basename qw(basename fileparse); use Cwd qw(cwd); use Env qw(BROWSER TERMINAL); -use Term::ReadKey; use Capture::Tiny qw(capture); use POSIX qw(setsid); use Data::UUID; -use Hash::Ordered; -use feature qw(switch); -no warnings qw(experimental::smartmatch); my $menu = "fzf"; @@ -33,15 +29,26 @@ use constant { HOSTNAME => (split /\./, hostname())[0] }; +my @keys = ( + 'vid', + 'img', + 'dl', + 'audio', + 'pdf', + 'w3m', + 'web', + 'clip', +); + my %func_list = ( - '1 vid' => \&vid, - '2 img' => \&img_pdf, - '3 dl' => \&dl, - '4 audio' => \&audio, - '5 pdf' => \&img_pdf, - '6 w3m' => \&w3m, - '7 browser' => \&browser, - '8 clip' => \&clip, + $keys[0] => \&vid, + $keys[1] => \&img_pdf, + $keys[2] => \&dl, + $keys[3] => \&audio, + $keys[4] => \&img_pdf, + $keys[5] => \&w3m, + $keys[6] => \&web, + $keys[7] => \&clip, ); use constant QUAL_LIST => "" . @@ -135,13 +142,10 @@ sub img_pdf } $file_name = $url; $file_name =~ s/.+\///g; - given (HOSTNAME) { - when(["mother", "po-rbo"]) { - system(CURL_PATH, "-fsSLO", $url); - } - when("mars") { - system(FETCH_PATH, '-q', $url); - } + if (HOSTNAME eq "mother" or "po-rbo") { + system(CURL_PATH, "-fsSLO", $url); + } elsif (HOSTNAME == "mars") { + system(FETCH_PATH, "-q", $url); } my ($name, undef, $ext) = fileparse($file_name, qr/\.[^.]*/); $ug = Data::UUID->new; @@ -317,7 +321,7 @@ sub dl if (HOSTNAME eq "mother" or "po-rbo") { system(CURL_PATH, "-fsSLO", $url); } elsif (HOSTNAME == "mars") { - system(FETCH_PATH, $url); + system(FETCH_PATH, "-q", $url); } }; if ($ret == 0) { @@ -413,7 +417,7 @@ sub w3m return; } -sub browser +sub web { my ($url) = @_; my $pid; @@ -497,17 +501,11 @@ sub get_yt_vid_name sub fzf_prompt { - my ($url, $mapping_ref) = @_; + my ($url) = @_; my $answer; - my @sorted_keys; - my @stripped_keys; my $list; - @sorted_keys = sort keys %func_list; - @stripped_keys = map { substr($_, 2) } @sorted_keys; - %$mapping_ref = (); - @{$mapping_ref}{@stripped_keys} = @sorted_keys; - $list = join("\n", @stripped_keys); + $list = join("\n", @keys); $answer = `printf "$list\n" | $menu --prompt '$url > '`; chomp $answer; return $answer; @@ -516,21 +514,15 @@ sub fzf_prompt sub linkview { my $answer; - my $og_key; - my %mapping; if (@ARGV == 0 || $ARGV[0] eq '') { print STDERR "linkview: no URL\n"; exit 1; } - $answer = fzf_prompt($ARGV[0], \%mapping); - - return unless exists $mapping{$answer}; - $og_key = $mapping{$answer}; - - return unless exists $func_list{$og_key}; - $func_list{$og_key}->($ARGV[0], $ARGV[1], $og_key); + $answer = fzf_prompt($ARGV[0]); + return unless exists $func_list{$answer}; + $func_list{$answer}->($ARGV[0], $ARGV[1], $answer); return; } |