X-Git-Url: https://git.draconx.ca/gitweb/mpdhacks.git/blobdiff_plain/200944f7b4ce6325a62064dfeeb483bba9c45743..efd378c6eac050f999cad78ade5b4a3946164105:/mpdmenu.pl diff --git a/mpdmenu.pl b/mpdmenu.pl index 65d0c58..77a293f 100755 --- a/mpdmenu.pl +++ b/mpdmenu.pl @@ -100,11 +100,12 @@ if (defined $album) { next if (defined $artist && !$accept{albumdir($t_file)}); - $t_artist = sanitise($t_artist); - $t_title = sanitise($t_title); + $t_artist = sanitise($t_artist, 0); + $t_title = sanitise($t_title, 0); my $cmd = sprintf "AddToMenu $menu \"%d\t%s - %s\"" - ." Exec mpc playid %d", + ." Exec exec $FVWM/scripts/mpdexec.pl" + ." playid %d", $t_trackno, $t_artist, $t_title, $t_id; cmd($cmd); @@ -136,7 +137,7 @@ if (defined $album) { use locale; foreach (sort keys(%albums)) { my $key = $_; - my $a_album = sanitise($key); + my $a_album = sanitise($key, 1); open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh", "--small", "--music", $albums{$key}; @@ -200,6 +201,9 @@ if (defined $album) { s/\s+(instrumental|off vocal|short|tv)([\s-]+(mix|size|version))?$//i; s/\s+without\s+\w+$//i; + # Deal with separate movements in classical pieces. + s/: [IVX]+\..*//; + my $basetitle = $_; my $_basetitle = $basetitle; @@ -233,8 +237,8 @@ if (defined $album) { # MPD searches are case-insensitive. next if (!($t_title =~ m/(\P{Latin}|^)\Q$basetitle\E(\P{Latin}|$)/ || $t_title =~ m/\Q$basetitle\E/i)); - $t_artist = sanitise($t_artist); - $t_title = sanitise($t_title); + $t_artist = sanitise($t_artist, 1); + $t_title = sanitise($t_title, 1); open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh", "--small", "--music", $t_file; @@ -245,7 +249,9 @@ if (defined $album) { $thumb =~ s/\n//sg; $thumb = "%$thumb%" if (-f $thumb); - cmd("AddToMenu $menu \"$thumb$t_artist - $t_title\" Exec mpc playid $t_id"); + cmd("AddToMenu $menu \"$thumb$t_artist - $t_title\"" + ." Exec exec $FVWM/scripts/mpdexec.pl" + ." playid $t_id"); } } # end use locale workaround } else { @@ -295,14 +301,14 @@ if (defined $album) { if (-f $thumb) { cmd("AddToMenu $menu \"*$thumb*\" " - ."Exec exec gqview ".shellify($scan, 0)); + ."Exec exec geeqie ".shellify($scan, 0)); } - cmd("AddToMenu $menu \"Title: ".sanitise($entry{Title})."\" " - ."Popup MenuMPDTitle"); - cmd("AddToMenu $menu \"Artist: ".sanitise($entry{Artist})."\" " - ."Popup MenuMPDArtist"); - cmd("AddToMenu $menu \"Album: ".sanitise($entry{Album})."\" " - ."Popup MenuMPDAlbum"); + cmd("AddToMenu $menu \"Title: ".sanitise($entry{Title}, 0) + ."\" Popup MenuMPDTitle"); + cmd("AddToMenu $menu \"Artist: ".sanitise($entry{Artist}, 0) + ."\" Popup MenuMPDArtist"); + cmd("AddToMenu $menu \"Album: ".sanitise($entry{Album}, 0) + ."\" Popup MenuMPDAlbum"); cmd("AddToMenu $menu \"\" Nop"); } else { cmd("AddToMenu $menu \"\""); @@ -370,7 +376,8 @@ print $sock "close\n"; sub sanitise { $_ = $_[0]; - s/([\$&@%^*])/\1\1/g; + s/&/&&/g if ($_[1]); + s/([\$@%^*])/\1\1/g; s/"/\\"/g; return $_; }