395ec0d400
This lets you choose regions for Germany and get radar gifs from the national weather service instead of Sat24 which are way higher quality.
288 lines
7.5 KiB
Bash
Executable file
288 lines
7.5 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Show a Doppler RADAR of a user's preferred location.
|
|
|
|
secs=600 # Download a new doppler radar if one hasn't been downloaded in $secs seconds.
|
|
radarloc="${XDG_CACHE_HOME:-$HOME/.cache}/radar"
|
|
radarger="${XDG_CACHE_HOME:-$HOME/.cache}/radarger"
|
|
doppler="${XDG_CACHE_HOME:-$HOME/.cache}/doppler.gif"
|
|
|
|
pickger() { chosenger="$(echo "BAW: Baden-Württemberg
|
|
BAY: Bavaria
|
|
BBB: Berlin
|
|
BBB: Brandenburg
|
|
HES: Hesse
|
|
MVP: Mecklenburg-Western Pomerania
|
|
NIB: Lower Saxony
|
|
NIB: Bremen
|
|
NRW: North Rhine-Westphalia
|
|
RPS: Rhineland-Palatinate
|
|
RPS: Saarland
|
|
SAC: Saxony
|
|
SAA: Saxony-Anhalt
|
|
SHH: Schleswig-Holstein
|
|
SHH: Hamburg
|
|
THU: Thuringia" | dmenu -r -i -l 50 -p "Select a radar to use as default:" | sed "s/:.*//" | tr "[:upper:]" "[:lower:]")"
|
|
|
|
# Secondary sanity check of selection and ensure user did not escape for Germany.
|
|
echo "$chosenger" | grep -q "[a-z]" && echo "$chosenger" > "$radarger" ;}
|
|
|
|
pickloc() { chosen="$(echo "US: Northeast
|
|
US: Southeast
|
|
US: PacNorthWest
|
|
US: PacSouthWest
|
|
US: UpperMissVly
|
|
US: SouthMissVly
|
|
US: SouthPlains
|
|
US: NorthRockies
|
|
US: SouthRockies
|
|
US: Alaska
|
|
US: Carib
|
|
US: Hawaii
|
|
US: CentGrLakes
|
|
US: Conus-Large
|
|
US: KABR: Aberdeen, SD
|
|
US: KBIS: Bismarck, ND
|
|
US: KFTG: Denver/Boulder, CO
|
|
US: KDMX: Des Moines, IA
|
|
US: KDTX: Detroit, MI
|
|
US: KDDC: Dodge City, KS
|
|
US: KDLH: Duluth, MN
|
|
US: KCYS: Cheyenne, WY
|
|
US: KLOT: Chicago, IL
|
|
US: KGLD: Goodland, KS
|
|
US: KUEX: Hastings, NE
|
|
US: KGJX: Grand Junction, CO
|
|
US: KGRR: Grand Rapids, MI
|
|
US: KMVX: Fargo/Grand Forks, ND
|
|
US: KGRB: Green Bay, WI
|
|
US: KIND: Indianapolis, IN
|
|
US: KJKL: Jackson, KY
|
|
US: KARX: La Crosse, WI
|
|
US: KILX: Lincoln/Central Illinois, IL
|
|
US: KLVX: Louisville, KY
|
|
US: KMQT: Marquette
|
|
US: KMKX: Milwaukee, WI
|
|
US: KMPX: Minneapolis, MN
|
|
US: KAPX: Gaylord/Alpena, MI
|
|
US: KLNX: North Platte, NE
|
|
US: KIWX: N. Webster/Northern, IN
|
|
US: KOAX: Omaha, NE
|
|
US: KPAH: Paducah, KY
|
|
US: KEAX: Pleasant Hill, MO
|
|
US: KPUX: Pueblo, CO
|
|
US: KDVN: Quad Cities, IA
|
|
US: KUDX: Rapid City, SD
|
|
US: KRIW: Riverton, WY
|
|
US: KSGF: Springfield, MO
|
|
US: KLSX: St. LOUIS, MO
|
|
US: KFSD: Sioux Falls, IA
|
|
US: KTWX: Topeka, KS
|
|
US: KICT: Wichita, KS
|
|
US: KVWX: Paducah, KY
|
|
US: ICAO: Responsible Wfo
|
|
US: KLTX: WILMINGTON, NC
|
|
US: KCCX: State College/Central, PA
|
|
US: KLWX: Sterling, VA
|
|
US: KFCX: Blacksburg/Roanoke, VA
|
|
US: KRAX: Raleigh/Durham, NC
|
|
US: KGYX: Portland, ME
|
|
US: KDIX: Mt Holly/Philadelphia, PA
|
|
US: KPBZ: Pittsburgh, PA
|
|
US: KAKQ: Wakefield, VA
|
|
US: KMHX: Morehead City, NC
|
|
US: KGSP: Greer/Greenville/Sprtbg, SC
|
|
US: KILN: Wilmington/Cincinnati, OH
|
|
US: KCLE: Cleveland, OH
|
|
US: KCAE: Columbia, SC
|
|
US: KBGM: Binghamton, NY
|
|
US: KENX: Albany, NY
|
|
US: KBUF: Buffalo, NY
|
|
US: KCXX: Burlington, VT
|
|
US: KCBW: Caribou, ME
|
|
US: KBOX: Boston /Taunton, MA
|
|
US: KOKX: New York City, NY
|
|
US: KCLX: Charleston, SC
|
|
US: KRLX: Charleston, WV
|
|
US: ICAO: Responsible WFO
|
|
US: KBRO: Brownsville, TX
|
|
US: KABX: Albuquerque, NM
|
|
US: KAMA: Amarillo, TX
|
|
US: KFFC: Peachtree City/Atlanta, GA
|
|
US: KEWX: Austin/Sanantonio, TX
|
|
US: KBMX: Birmingham, AL
|
|
US: KCRP: Corpus Christi, TX
|
|
US: KFWS: Dallas / Ft. Worth, TX
|
|
US: KEPZ: El Paso, TX
|
|
US: KHGX: Houston/ Galveston, TX
|
|
US: KJAX: Jacksonville, FL
|
|
US: KBYX: Key West, FL
|
|
US: KMRX: Morristown/knoxville, TN
|
|
US: KLBB: Lubbock, TX
|
|
US: KLZK: Little Rock, AR
|
|
US: KLCH: Lake Charles, LA
|
|
US: KOHX: Nashville, TN
|
|
US: KMLB: Melbourne, FL
|
|
US: KNQA: Memphis, TN
|
|
US: KAMX: Miami, FL
|
|
US: KMAF: Midland/odessa, TX
|
|
US: KTLX: Norman, OK
|
|
US: KHTX: Huntsville, AL
|
|
US: KMOB: Mobile, AL
|
|
US: KTLH: Tallahassee, FL
|
|
US: KTBW: Tampa Bay Area, FL
|
|
US: KSJT: San Angelo, TX
|
|
US: KINX: Tulsa, OK
|
|
US: KSRX: Tulsa, OK
|
|
US: KLIX: New Orleans/slidell, LA
|
|
US: KDGX: Jackson, MS
|
|
US: KSHV: Shreveport, LA
|
|
US: ICAO: Responsible WFO
|
|
US: KLGX: Seattle / Tacoma, WA
|
|
US: KOTX: Spokane, WA
|
|
US: KEMX: Tucson, AZ
|
|
US: KYUX: Phoenix, AZ
|
|
US: KNKX: San Diego, CA
|
|
US: KMUX: Monterey/san Francisco, CA
|
|
US: KHNX: San Joaquin/hanford, CA
|
|
US: KSOX: San Diego, CA
|
|
US: KATX: Seattle / Tacoma, WA
|
|
US: KIWA: Phoenix, AZ
|
|
US: KRTX: Portland, OR
|
|
US: KSFX: Pocatello, ID
|
|
US: KRGX: Reno, NV
|
|
US: KDAX: Sacramento, CA
|
|
US: KMTX: Salt Lake City, UT
|
|
US: KPDT: Pendleton, OR
|
|
US: KMSX: Missoula, MT
|
|
US: KESX: Las Vegas, NV
|
|
US: KVTX: Los Angeles, CA
|
|
US: KMAX: Medford, OR
|
|
US: KFSX: Flagstaff, AZ
|
|
US: KGGW: Glasgow, MT
|
|
US: KLRX: Elko, NV
|
|
US: KBHX: Eureka, CA
|
|
US: KTFX: Great Falls, MT
|
|
US: KCBX: Boise, ID
|
|
US: KBLX: Billings, MT
|
|
US: KICX: Salt Lake City, UT
|
|
US: ICAO: Responsible Wfo W/ MSCF
|
|
US: PABC: Anchorage, AK
|
|
US: PAPD: Fairbanks, AK
|
|
US: PHKM: Honolulu, HI
|
|
US: PAHG: Anchorage, AK
|
|
US: PAKC: Anchorage, AK
|
|
US: PAIH: Anchorage, AK
|
|
US: PHMO: Honolulu, HI
|
|
US: PAEC: Fairbanks, AK
|
|
US: TJUA: San Juan, PR
|
|
US: PACG: Juneau, AK
|
|
US: PHKI: Honolulu, HI
|
|
US: PHWA: Honolulu, HI
|
|
US: ICAO: Responsible Wfo W/ MSCF
|
|
US: KFDR: Norman, OK
|
|
US: PGUA: Guam
|
|
US: KBBX: Sacramento, CA
|
|
US: KFDX: Albuquerque, NM
|
|
US: KGWX: Jackson, MS
|
|
US: KDOX: Wakefield, VA
|
|
US: KDYX: San Angelo, TX
|
|
US: KEYX: Las Vegas, NV
|
|
US: KEVX: Mobile, AL
|
|
US: KHPX: Paducah, KY
|
|
US: KTYX: Burlington, VT
|
|
US: KGRK: Dallas / Ft. Worth, TX
|
|
US: KPOE: Lake Charles, LA
|
|
US: KEOX: Tallahassee, FL
|
|
US: KHDX: El Paso, TX
|
|
US: KDFX: San Antonio, TX
|
|
US: KMXX: Birmingham, AL
|
|
US: KMBX: Bismarck, ND
|
|
US: KVAX: Jacksonville, FL
|
|
US: KJGX: Peachtree City/atlanta, GA
|
|
US: KVNX: Norman, OK
|
|
US: KVBX: Vandenberg Afb: Orcutt, CA
|
|
EU: Europe
|
|
EU: GB: Great Brittain
|
|
EU: SCAN: Scandinavia
|
|
EU: ALPS: The Alps
|
|
EU: NL: The Netherlands
|
|
EU: DE: Germany
|
|
EU: SP: Spain
|
|
EU: FR: France
|
|
EU: IT: Italy
|
|
EU: PL: Poland
|
|
EU: GR: Greece
|
|
EU: TU: Turkey
|
|
EU: RU: Russia
|
|
EU: BA: Bahrain
|
|
EU: BC: Botswana
|
|
EU: SE: Republic of Seychelles
|
|
EU: HU: Hungary
|
|
EU: UK: Ukraine
|
|
AF: AF: Africa
|
|
AF: WA: West Africa
|
|
AF: ZA: South Africa
|
|
AF: DZ: Algeria
|
|
AF: CE: Canary Islands
|
|
AF: NG: Nigeria
|
|
AF: TD: Chad
|
|
AF: CG: Democratic Republic of Congo
|
|
AF: EG: Egypt
|
|
AF: ET: Ethiopia
|
|
AF: CM: Cameroon
|
|
AF: IS: Israel
|
|
AF: LY: Libya
|
|
AF: MG: Madagascar
|
|
AF: MO: Morocco
|
|
AF: BW: Namibia
|
|
AF: SA: Saudi Arabia
|
|
AF: SO: Somalia
|
|
AF: SD: Sudan
|
|
AF: TZ: Tanzania
|
|
AF: TN: Tunisia
|
|
AF: ZM: Zambia
|
|
AF: KE: Kenya
|
|
AF: AO: Angola" | dmenu -r -i -l 50 -p "Select a radar to use as default:" | tr "[:lower:]" "[:upper:]")"
|
|
|
|
# Set continent code and radar code.
|
|
continentcode=$(echo "$chosen" | sed "s/:.*//")
|
|
radarcode=$(echo "$chosen" | sed "s/..: // ; s/:.*//")
|
|
|
|
# Sanity check of selection and ensure user did not escape.
|
|
echo "$radarcode" | grep -q "^[A-Z]\+$" && printf "%s,%s\\n" "$continentcode" "$radarcode" > "$radarloc"
|
|
|
|
# Prompts for choosing region if in Germany.
|
|
case $(cut -c 4- "$radarloc") in
|
|
DE) pickger ;;
|
|
*) ;;
|
|
esac ;}
|
|
|
|
getdoppler() { cont="$(sed "s/,.*//" "$radarloc")"
|
|
loc="$(cut -c 4- "$radarloc")"
|
|
notify-send "🌦️ Doppler RADAR" "Pulling most recent Doppler RADAR for $loc"
|
|
case $cont in
|
|
US) curl -sL "https://radar.weather.gov/ridge/lite/${loc}_loop.gif" > "$doppler" ;;
|
|
EU) case $loc in
|
|
DE) [ ! -f "$radarger" ] && pickger
|
|
ger="$(cat "$radarger")"
|
|
curl -sL "https://www.dwd.de/DWD/wetter/radar/radfilm_${ger}_akt.gif" > "$doppler" ;;
|
|
*) curl -sL "https://api.sat24.com/animated/${loc}/rainTMC/2/" > "$doppler" ;;
|
|
esac ;;
|
|
AF) curl -sL "https://api.sat24.com/animated/${loc}/rain/2/" > "$doppler" ;;
|
|
esac ;}
|
|
|
|
showdoppler() { setsid -f mpv --no-osc --loop=inf --no-terminal "$doppler" ;}
|
|
|
|
case $BLOCK_BUTTON in
|
|
1) [ ! -f "$radarloc" ] && pickloc && getdoppler
|
|
[ $(($(date '+%s') - $(stat -c %Y "$doppler"))) -gt "$secs" ] && getdoppler
|
|
showdoppler ;;
|
|
2) pickloc && getdoppler && showdoppler ;;
|
|
3) notify-send "🗺️ Doppler RADAR module" "\- Left click for local Doppler RADAR.
|
|
- Middle click to update RADAR location.
|
|
After $secs seconds, new clicks will also automatically update the doppler RADAR." ;;
|
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
|
esac
|
|
|
|
echo 🗺️
|