#!/bin/bash source ~/.config/nws.conf colors() { NOCOLOR='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' } cleanup() { rm -rf ~/.cache/.county_ids ~/.cache/.weather_forecast ~/.cache/.weather_alerts } retrieve_counties() { curl -s "https://api.weather.gov/zones?area=${state}" >> ~/.cache/.county_ids colors count=0 length=$(echo $(jq '.features | length' ~/.cache/.county_ids) -1 | bc) while [ $count -le $length ] do echo -e ${GREEN}County: ${NOCOLOR}$(jq '.features['$count'].properties.name' ~/.cache/.county_ids) echo -e ${GREEN}Id: ${NOCOLOR}$(jq '.features['$count'].properties.id' ~/.cache/.county_ids) echo ((count++)) done } get_location() { cords=$(curl ipinfo.io/json | jq -r .loc) } show_radar() { mpv --loop-file=inf "https://radar.weather.gov/ridge/standard/${area1}_loop.gif" } show_full_radar() { mpv --loop-file=inf "https://radar.weather.gov/ridge/standard/CONUS_loop.gif" } show_timing() { mpv --loop-file=inf "https://www.weather.gov/images/${area2}/graphicast/image6.png" } show_alerts() { colors curl -s "https://api.weather.gov/alerts/active/zone/${countyId}" >> ~/.cache/.weather_alerts length=$(echo $(jq '.features | length' ~/.cache/.weather_alerts) -1 | bc) count=0 while [ $count -le $length ] do echo echo echo -------------------------------------------------------------------------------------------------------------------------------------------- echo echo -e ${GREEN}Alert: ${NOCOLOR}$(jq '.features['$count'].properties.headline' ~/.cache/.weather_alerts) echo -e ${GREEN}Starts: ${NOCOLOR}$(jq '.features['$count'].properties.effective' ~/.cache/.weather_alerts) echo -e ${GREEN}Ends: ${NOCOLOR}$(jq '.features['$count'].properties.expires' ~/.cache/.weather_alerts) echo -e ${GREEN}Sent: ${NOCOLOR}$(jq '.features['$count'].properties.sent' ~/.cache/.weather_alerts) echo -e ${GREEN}Severity: ${RED}$(jq '.features['$count'].properties.severity' ~/.cache/.weather_alerts) echo -e ${NOCOLOR} echo -e $(jq '.features['$count'].properties.parameters.NWSheadline' ~/.cache/.weather_alerts) echo -e $(jq '.features['$count'].properties.description' ~/.cache/.weather_alerts) echo -e $(jq '.features['$count'].properties.instruction' ~/.cache/.weather_alerts) echo echo -e ${GREEN}Affected areas: ${NOCOLOR}$(jq '.features['$count'].properties.areaDesc' ~/.cache/.weather_alerts) echo -e ${GREEN}Wind: ${NOCOLOR}$(jq '.features['$count'].properties.windThreat' ~/.cache/.weather_alerts) echo -e ${GREEN}Max Wind Gust: ${NOCOLOR}$(jq '.features['$count'].properties.maxWindGust' ~/.cache/.weather_alerts) echo -e ${GREEN}Hail: ${NOCOLOR}$(jq '.features['$count'].properties.hailThreat' ~/.cache/.weather_alerts) echo -e ${GREEN}Issued by $(jq '.features['$count'].properties.senderName' ~/.cache/.weather_alerts)${NOCOLOR} echo -------------------------------------------------------------------------------------------------------------------------------------------- ((count++)) done echo echo ((length++)) # json needs count to start at zero, real amount needs one added echo -e ${GREEN}Total alerts: $length${NOCOLOR} } count_alerts() { curl -s "https://api.weather.gov/alerts/active/zone/${countyId}" >> ~/.cache/.weather_alerts length=$(jq '.features | length' ~/.cache/.weather_alerts) echo $length } show_spc() { mpv --loop-file=inf "https://www.spc.noaa.gov/products/activity_loop.gif" } get_forecast() { colors get_location curl $(curl https://api.weather.gov/points/$cords | jq -r .properties.forecast) >> ~/.cache/.weather_forecast count=0 length=$(echo $(jq '.properties.periods | length' ~/.cache/.weather_forecast) -1 | bc) while [ $count -le $length ] do echo ---------------------------------------------------------------------------------------------------- echo -e ${GREEN}Day: ${NOCOLOR}$(jq '.properties.periods['$count'].name' ~/.cache/.weather_forecast) echo -e ${GREEN}Temperature: ${NOCOLOR}$(jq '.properties.periods['$count'].temperature' ~/.cache/.weather_forecast)$(jq '.properties.periods['$count'].temperatureUnit' ~/.cache/.weather_forecast) echo -e ${GREEN}Rain chance: ${NOCOLOR}$(jq '.properties.periods['$count'].probabilityOfPrecipitation.value' ~/.cache/.weather_forecast)% echo -e ${GREEN}Wind: ${NOCOLOR}$(jq '.properties.periods['$count'].windDirection' ~/.cache/.weather_forecast), $(jq '.properties.periods['$count'].windSpeed' ~/.cache/.weather_forecast) echo echo $(jq '.properties.periods['$count'].detailedForecast' ~/.cache/.weather_forecast) echo echo ---------------------------------------------------------------------------------------------------- echo echo ((count++)) done echo "" } help() { echo "nws" echo " --full-radar: shows radar of entire US" echo " --radar: shows local radar" echo " --spc: shows storm predictions" echo " --retrieve-counties: shows county ids" echo " --ca: shows number of alerts" echo " -a: shows alerts" echo " -f: shows local forecast" } cleanup case $1 in "--full-radar") show_full_radar;; '--radar') show_radar;; '--spc') show_spc;; '--retrieve-counties') retrieve_counties;; '--ca') count_alerts;; '-t') show_timing;; '-a') show_alerts | sed 's/null//g ; s/"//g' |less -R;; '-f') get_forecast | sed 's/"//g' | less -R;; '-h') help;; "") help;; esac