voidrice/.local/bin/statusbar/sb-doppler
Secondarian 395ec0d400
Regions for Germany
This lets you choose regions for Germany and get radar gifs from the national weather service instead of Sat24 which are way higher quality.
2022-07-01 23:26:58 +02:00

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 🗺️