chiark / gitweb /
bin/disorder-notify: Abstract out invoking the `disorder' client.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 21 Jul 2018 14:10:00 +0000 (15:10 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 21 Jul 2018 14:57:58 +0000 (15:57 +0100)
bin/disorder-notify

index 5c9e12df607075c40ddcb4b39b9870a329602fc3..6d540dc3a66a0214192a5d3fe81d3e7bc84cf8f2 100755 (executable)
@@ -17,6 +17,16 @@ sub notify ($$) {
   waitpid $kid, 0;
 }
 
+sub cmd (@) {
+  my @args = @_;
+  open my $f, "-|", "disorder", @args;
+  chomp (my @r = <$f>);
+  close $f;
+  if (wantarray) { return @r; }
+  elsif (@r == 1) { return $r[0]; }
+  else { return "??? multiple lines"; }
+}
+
 for (;;) {
   open my $log, "-|", "disorder", "log";
   LINE: while (<$log>) {
@@ -65,11 +75,8 @@ for (;;) {
     } elsif ($what eq playing) {
       my $track = $f[2];
       my %p;
-      for my $p ("artist", "album", "title") {
-       open my $f, "-|", "disorder", "part", $track, "display", $p;
-       chomp ($p{$p} = <$f>);
-       close $f;
-      }
+      for my $p ("artist", "album", "title")
+       { $p{$p} = cmd "part", $track, "display", $p; }
       if ($p{artist} =~ /^[A-Z]$/)
        { $p{artist} = $p{album}; $p{album} = undef; }
       elsif ($p{artist} eq "share" && $p{album} eq "disorder")