bin/disorder-notify: Hoist `get_now_playing' above `format_now_playing'.
[profile] / bin / disorder-notify
index 91278f0..78c3e8e 100755 (executable)
@@ -158,18 +158,6 @@ sub fmt_duration ($) {
   return sprintf "%d:%02d", int $n/60, $n%60;
 }
 
-sub format_now_playing (\%) {
-  my ($info) = @_;
-  exists $info->{track} or return "Nothing.";
-  my $r = "$info->{artist}: ‘$info->{title}’";
-  $r .= ", from ‘$info->{album}’" if $info->{album};
-  exists $info->{sofar} && exists $info->{length} and
-    $r .= sprintf " (%s/%s)",
-      fmt_duration $info->{sofar}, fmt_duration $info->{length};
-  $r .= "\n(chosen by $info->{submitter})" if exists $info->{submitter};
-  return $r;
-}
-
 sub get_now_playing ($) {
   my ($sk) = @_;
   my $r = send_command $sk, "playing";
@@ -181,6 +169,23 @@ sub get_now_playing ($) {
   return \%info;
 }
 
+sub format_now_playing (;\%) {
+  my ($info) = @_;
+  unless (defined $info) {
+    my $sk = configured_connection;
+    $info = get_now_playing $sk;
+    close $sk;
+  }
+  exists $info->{track} or return "Nothing.";
+  my $r = "$info->{artist}: ‘$info->{title}’";
+  $r .= ", from ‘$info->{album}’" if $info->{album};
+  exists $info->{sofar} && exists $info->{length} and
+    $r .= sprintf " (%s/%s)",
+      fmt_duration $info->{sofar}, fmt_duration $info->{length};
+  $r .= "\n(chosen by $info->{submitter})" if exists $info->{submitter};
+  return $r;
+}
+
 sub watch_and_notify0 ($) {
   my ($now_playing) = @_;