#!/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() { get_location curl $(curl https://api.weather.gov/points/$cords | jq -r .properties.forecast) >> ~/.cache/.weather_forecast echo $(jq .properties.periods[0].name ~/.cache/.weather_forecast | sed 's/"//g'): echo "" } help() { echo "tw" 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 " -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 | less -R;; '-f') get_forecast;; '-h') help;; "") help;; esac