From: John Runyon Date: Wed, 20 Sep 2023 09:18:14 +0000 (-0600) Subject: update listenbrainz X-Git-Url: https://jfr.im/git/irssi-scripts.git/commitdiff_plain/d652ed56859ac4292423b6ce94f0defda947bcf7 update listenbrainz --- diff --git a/listenbrainz.pl b/listenbrainz.pl index a5d3cb4..21a206c 100644 --- a/listenbrainz.pl +++ b/listenbrainz.pl @@ -34,25 +34,34 @@ $ua->agent("irssi+listenbrainz.pl/$VERSION "); sub cmd_listenbrainz { my ($username, $server, $witem) = @_; - if (!length $username) { + unless (length $username) { $username = Irssi::settings_get_str('listenbrainz_username'); } - if (!length $username) { + unless (length $username) { Irssi::print('%R>>%n '.$IRSSI{name}.': No username specified.'); return; } + unless (defined $witem) { + Irssi::print("Irssi says you're not in an active window!"); + return; + } + my $url = "https://api.listenbrainz.org/1/user/" . uri_escape($username) . "/playing-now"; my $req = HTTP::Request->new('GET', $url); my $res = $ua->request($req); if ($res->is_success) { my $data = decode_json($res->content); + unless (scalar @{ $data->{payload}{listens} }) { + $witem->print("ListenBrainz says you're not listening to anything!"); + return; + } my %track = %{ $data->{payload}{listens}[0]{track_metadata} }; my $s = sprintf(Irssi::settings_get_str('listenbrainz_format'), $username, $track{track_name}, $track{artist_name}, $track{release_name}, $track{additional_info}{media_player} // $track{additional_info}{listening_from}); $witem->command("say $s"); } else { - print "ListenBrainz request Failed!"; + $witem->print("ListenBrainz request Failed!"); if (Irssi::settings_get_bool('listenbrainz_debug')) { print $req->url; print $req->content;