chiark / gitweb /
bin/disorder-notify: Lift out the `now playing' machinery.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 21 Jul 2018 14:13:38 +0000 (15:13 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 21 Jul 2018 14:57:58 +0000 (15:57 +0100)
bin/disorder-notify

index 3f6823c855ac33cc7268a29eaef35d001b28eb1b..d36db9a1d57c4f70394fd3dc872e0a946f05fffa 100755 (executable)
@@ -27,6 +27,20 @@ sub cmd (@) {
   else { return "??? multiple lines"; }
 }
 
+sub now_playing ($) {
+  my ($track) = @_;
+  my %p;
+  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")
+    { next LINE; }
+  my $r = "$p{artist}: ‘$p{title}’";
+  if (defined $p{album}) { $r .= ", from ‘$p{album}’"; }
+  notify "DisOrder: now playing", $r;
+}
+
 for (;;) {
   open my $log, "-|", "disorder", "log";
   LINE: while (<$log>) {
@@ -73,17 +87,7 @@ for (;;) {
        notify "DisOrder state", "Resuming";
       }
     } elsif ($what eq "playing") {
-      my $track = $f[2];
-      my %p;
-      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")
-       { next LINE; }
-      my $r = "$p{artist}: ‘$p{title}’";
-      if (defined $p{album}) { $r .= ", from ‘$p{album}’"; }
-      notify "Now playing", $r;
+      now_playing $f[2];
     }
   }
   close $log;