]> git.draconx.ca Git - fvwmconf.git/blobdiff - scripts/mpdmenu.pl
Merge branch 'master' of atropos:.fvwm
[fvwmconf.git] / scripts / mpdmenu.pl
index 94ec8d5088ab1fdc9475b4595dbe4bfc7f34a6cf..ebd4c319a3883ffe8eb9c024e5ad4ee4aebeeed1 100755 (executable)
@@ -67,27 +67,27 @@ if (defined $album) {
        my $entry;
 
        $menu = "MenuMPDAlbum" unless defined $menu;
-       
+
        $album =~ s/"/\\"/g;
        print $sock "playlistfind album \"$album\"\n";
        while (<$sock>) {
                last if (/^OK/);
                die($_) if (/^ACK/);
-       
+
                if (/^(\w+): (.*)$/) {
                        if ($1 eq "file") {
                                if (keys(%$entry) > 0) {
                                        addalbumentry(\@playlist, $entry)
                                }
-       
+
                                $entry = {};
                        }
-       
+
                        $entry->{$1} = $2;
                }
        }
        addalbumentry(\@playlist, $entry) if (keys(%$entry) > 0);
-       
+
        die("No tracks found.\n") if (!@playlist);
        foreach (sort albumsort @playlist) {
                my ($t_file, $t_trackno, $t_artist, $t_title, $t_id) = (
@@ -97,16 +97,16 @@ if (defined $album) {
                        $_->{Title},
                        $_->{Id},
                );
-       
+
                next if (defined $artist && !$accept{albumdir($t_file)});
-       
+
                $t_artist = sanitise($t_artist);
                $t_title  = sanitise($t_title);
-               
+
                my $cmd = sprintf "AddToMenu $menu \"%d\t%s - %s\""
                                  ." Exec mpc playid %d",
                                  $t_trackno, $t_artist, $t_title, $t_id;
-       
+
                cmd($cmd);
        }
 } elsif (defined $artist) {
@@ -122,7 +122,7 @@ if (defined $album) {
        while (<$sock>) {
                last if (/^OK/);
                die($_) if (/^ACK/);
-       
+
                if (/^(\w+): (.*)$/) {
                        $file       = $2    if ($1 eq "file");
                        $albums{$2} = $file if ($1 eq "Album");
@@ -207,13 +207,13 @@ if (defined $album) {
        while (<$sock>) {
                last if (/^OK/);
                die($_) if (/^ACK/);
-       
+
                if (/^(\w+): (.*)$/) {
                        if ($1 eq "file") {
                                push @titles, $entry if (keys(%$entry) > 0);
                                $entry = {};
                        }
-       
+
                        $entry->{$1} = $2;
                }
        }
@@ -263,43 +263,49 @@ if (defined $album) {
                        $songid = $2 if ($1 eq "songid");
                }
        }
-       die("Failed status query\n") unless (defined $state && defined $songid);
+       die("Failed status query\n") unless (defined $state);
 
-       print $sock "playlistid $songid\n";
-       while (<$sock>) {
-               last if (/^OK/);
-               die($_) if (/^ACK/);
+       cmd("AddToMenu $menu Playing Title") if ($state eq "play");
+       cmd("AddToMenu $menu Paused Title")  if ($state eq "pause");
+       cmd("AddToMenu $menu Stopped Title") if ($state eq "stop");
 
-               if (/^(\w+): (.*)$/) {
-                       $entry{$1} = $2;
+       if (defined $songid) {
+               print $sock "playlistid $songid\n";
+               while (<$sock>) {
+                       last if (/^OK/);
+                       die($_) if (/^ACK/);
+
+                       if (/^(\w+): (.*)$/) {
+                               $entry{$1} = $2;
+                       }
                }
-       }
-       die("Failed data query\n") unless (keys(%entry) > 0);
+               die("Failed data query\n") unless (keys(%entry) > 0);
 
-       open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh",
-                                "--image", "--music",  $entry{file};
-       my $thumb = <THUMB>;
-       my $scan  = <THUMB>;
-       close(THUMB);
-       die("Incompetent use of thumbnail.zsh") if ($?);
+               open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh",
+                                        "--image", "--music",  $entry{file};
+               my $thumb = <THUMB>;
+               my $scan  = <THUMB>;
+               close(THUMB);
+               die("Incompetent use of thumbnail.sh") if ($?);
 
-       $thumb =~ s/\n//sg;
-       $scan  =~ s/\n//sg;
+               $thumb =~ s/\n//sg;
+               $scan  =~ s/\n//sg;
 
-       cmd("AddToMenu $menu Playing Title") if ($state eq "play");
-       cmd("AddToMenu $menu Paused Title")  if ($state eq "pause");
-       cmd("AddToMenu $menu Stopped Title") if ($state eq "stop");
-       if (-f $thumb) {
-               cmd("AddToMenu $menu \"*$thumb*\" "
-                       ."Exec exec gqview ".shellify($scan, 0));
+               if (-f $thumb) {
+                       cmd("AddToMenu $menu \"*$thumb*\" "
+                               ."Exec exec gqview ".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 \"\" Nop");
+       } else {
+               cmd("AddToMenu $menu \"<Song info unavailable>\"");
+               cmd("AddToMenu $menu \"\" Nop");
        }
-       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 \"\" Nop");
 
        if ($state eq "play" || $state eq "pause") {
                cmd("AddToMenu $menu \"\t\tNext%$icons/next.svg:16x16%\" "
@@ -344,7 +350,7 @@ if (defined $album) {
                           ."--menu MenuMPDAlbum "
                           ."--album  ".shellify($entry{Album}, 1)." "
                           ."--artist ".shellify($entry{Artist}, 1)."\"");
-       
+
        cmd("DestroyFunc MakeMenuMPDArtist");
        cmd("AddToFunc   MakeMenuMPDArtist
             + I DestroyMenu MenuMPDArtist