#!/usr/bin/perl use strict; use warnings; my $cmd = 'bar'; if (defined($ARGV[0])) { $cmd = $ARGV[0]; } my $url = "https://john.me.tz/weather/weather.json"; my %icons = ( '04d' => "☁", ); use LWP::UserAgent; my $ua = LWP::UserAgent->new(); my $ret = $ua->get($url); unless (defined($ret->{_rc}) && $ret->{_rc} == 200) { die "Failed to fetch $url"; } use JSON::XS; my $json = JSON::XS->new(); my $ref = $json->decode($ret->{_content}); if ($cmd eq 'bar') { my $temp = $ref->{current}->{temp} - 273.15; my $icon = $ref->{current}->{weather}->[0]->{icon}; printf("%s%.1f%s", $icons{$icon}, ${temp}, "°C"); } elsif ($cmd eq 'notify') { `notify-send weather TODO`; } else { die "Invalid command\n"; }