diff options
| author | Josh Rahm <rahm@google.com> | 2022-12-14 12:55:45 -0700 |
|---|---|---|
| committer | Josh Rahm <rahm@google.com> | 2022-12-14 12:56:36 -0700 |
| commit | d7f4e6cdc9693e58733f67168a1fe84f0c805507 (patch) | |
| tree | f099adfed510e22ce851d030746bb6b80bffd213 /extras | |
| parent | c8b87f9bb5336ca4866d54b5bf468e55fece32c3 (diff) | |
| download | rde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.tar.gz rde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.tar.bz2 rde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.zip | |
Rewrite xmobar-weather in Haskell.
This adds a new binary that replaces the jenky Perl weather script.
In addition this switches the weather source to wttr.in. Before it would
always pull the weather from the same weather station, which is not what
I want.
Diffstat (limited to 'extras')
| -rwxr-xr-x | extras/HOME/.xmonad/xmobar-weather | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/extras/HOME/.xmonad/xmobar-weather b/extras/HOME/.xmonad/xmobar-weather deleted file mode 100755 index b95fadb..0000000 --- a/extras/HOME/.xmonad/xmobar-weather +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/perl - -use Time::Local; -use POSIX; - -$content = `curl https://ipinfo.io`; - -die "Unable to get IP info" unless defined $content; - -($city, $lat, $lon) = - ($content =~ m/.*"city":\s+"([^"]+)".*"loc":\s+"(-?[0-9.]+),(-?[0-9.]+).*"/ims); - -$content = `curl "https://api.sunrise-sunset.org/json?lat=$lat&lng=$lon&formatted=0"`; - -die "Unable to get sunrise/sunset data" unless defined $content; - -if (length($content) == 0) { - printf("<fc=#404040></fc> "); - exit -} - -$sunrise_str=$content; -$sunset_str=$content; -$sunrise_str =~ s#.*"sunrise":"([^"]*)".*#\1#; -$sunset_str =~ s#.*"sunset":"([^"]*)".*#\1#; -$current_str=strftime "%Y-%m-%dT%H:%M:%S+00:00", gmtime(); - -$content = `curl "https://tgftp.nws.noaa.gov/data/observations/metar/decoded/KLMO.TXT"`; - -die "Unable to get weather data" unless defined $content; - -$sky_conditions = $content; -$sky_conditions =~ s#.*Sky conditions:\s+([^\n]+).*#\1#ims; -$sky_conditions =~ s#\s#_#g; - -$wind = $content; -$wind =~ s#.*Wind:\s+([^\n]+).*#\1#ims; -($wind_direction, $wind_speed) = - ($wind =~ m/from the ([A-Z]+).*at (\d+) MPH.*/g); - - -$temp = $content; -$temp =~ s#.*Temperature:\s+(-?[0-9.]+) F.*#\1#ims; - -if ($current_str gt $sunrise_str and $current_str lt $sunset_str) { - $is_day = 1; -} else { - $is_day = 0; -} - -%directions = ( - NE => "", - NNE => "", - ENE => "", - SE => "", - SSE => "", - ESE => "", - NW => "", - NNW => "", - WNW => "", - SW => "", - SSW => "", - WSW => "", - N => "", - S => "", - W => "", - E => "" ); - -$dir=%directions{$wind_direction}; - -%conditions_day = ( - clear => "<fc=#ddcf04></fc> ", - sunny => "<fc=#ddcf04></fc> ", - mostly_clear => "<fc=#00a3c4></fc> ", - mostly_sunny => "<fc=#ddcf04></fc> ", - partly_sunny => "<fc=#ddcf04></fc> ", - fair => "<fc=#a0a0a0>🌑</fc> ", - cloudy =>"<fc=#a0a0a0>摒</fc> ", - overcast =>"<fc=#808080></fc> ", - partly_cloudy => "<fc=#a0a0a0>杖</fc> ", - mostly_cloudy => "<fc=#808080></fc> ", - considerable_cloudiness => "<fc=#a0a0a0>ﭽ</fc> " ); - -%conditions_night = ( - clear => "<fc=#00a3c4></fc> ", - sunny => "<fc=#00a3c4></fc> ", - mostly_clear => "<fc=#00a3c4></fc> ", - mostly_sunny => "<fc=#00a3c4></fc> ", - partly_sunny => "<fc=#00a3c4></fc> ", - fair => "<fc=#808080>🌑</fc> ", - cloudy =>"<fc=#808080>摒</fc> ", - overcast =>"<fc=#404040></fc> ", - partly_cloudy => "<fc=#a0a0a0></fc> ", - mostly_cloudy => "<fc=#808080></fc> ", - considerable_cloudiness => "<fc=#a0a0a0>ﭽ</fc> " ); - -if ($is_day) { - $conditions = %conditions_day{$sky_conditions}; -} else { - $conditions = %conditions_night{$sky_conditions}; -} - -printf("<fc=#a0a0a0><fn=3>$city</fn> <fn=3>$dir</fn> <fn=3>${wind_speed}</fn></fc> <fn=8>$conditions</fn><fn=3><fc=#a0a0a0>%.0f°F</fc></fn>\n", $temp); |