~mdw
/
profile
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bin/disorder-notify: Abstract out invoking the `disorder' client.
[profile]
/
bin
/
disorder-notify
diff --git
a/bin/disorder-notify
b/bin/disorder-notify
index
5c9e12d
..
6d540dc
100755
(executable)
--- a/
bin/disorder-notify
+++ b/
bin/disorder-notify
@@
-17,6
+17,16
@@
sub notify ($$) {
waitpid $kid, 0;
}
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>) {
for (;;) {
open my $log, "-|", "disorder", "log";
LINE: while (<$log>) {
@@
-65,11
+75,8
@@
for (;;) {
} elsif ($what eq playing) {
my $track = $f[2];
my %p;
} 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")
if ($p{artist} =~ /^[A-Z]$/)
{ $p{artist} = $p{album}; $p{album} = undef; }
elsif ($p{artist} eq "share" && $p{album} eq "disorder")