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;