Add aerodrome info to METAR. - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 79fae10db6d54c7dde46003fee6e5d935fcdef4e DIR parent ab3ea84610f3b07369b0194c421c4530ebbcacfe HTML Author: eidolon <?> Date: Sun, 20 Oct 2024 15:08:29 -0400 Add aerodrome info to METAR. Signed-off-by: Annna Robert-Houdin <annna@bitreich.org> Diffstat: M metar | 41 ++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 12 deletions(-) --- DIR diff --git a/metar b/metar @@ -1,30 +1,45 @@ #!/bin/sh iata2icao() { - csv="/home/annna/bin/modules/airport-codes/data/airport-codes.csv" awk -v IATA="$1" --csv 'BEGIN { IATA = toupper(IATA) } $10 == IATA { print $1; exit }' "$csv" } printart() { - txt="/home/annna/bin/modules/metar/ascii-planes.txt" awk 'BEGIN { RS = ""; srand() } { a[NR] = $0 } END { print a[int(rand()*length(a))] }' "$txt" } +dromeinfo() { + awk -v aerodrome="$1" --csv ' + BEGIN { aerodrome = toupper(aerodrome) } NR == 1 { split($0, header) } + $1 == aerodrome || $10 == aerodrome { + for (i = 1; i <= NF; i++) + if ($i) + { + gsub(/_/, " ", header[i]) + gsub(/_/, " ", $i) + s = s sprintf(" %s %s\n", header[i]":", $i) + } + } + END { if (!s) exit; print s }' "$csv" +} + if ! id=$(printf '%s\n' "$1" | grep '^[A-Za-z]\{3,4\}$'); then printf '%s\n' "invalid IATA/ICAO code." exit 1 fi -if [ "${#id}" = 3 ]; then - id=$(iata2icao "$id") - if [ -z "$id" ]; then - printf '%s\n' "invalid IATA code." - exit 1 - fi -fi - fmt=decoded uri="https://aviationweather.gov/api/data/metar/" +txt="$HOME/bin/modules/metar/ascii-planes.txt" +csv="$HOME/bin/modules/airport-codes/data/airport-codes.csv" + +[ "${#id}" = 3 ] && id=$(iata2icao "$id") + +if [ -z "$id" ]; then + printf '%s\n' "invalid IATA code." + exit 1 +fi + metar=$(curl -Ssfm 5 --data-urlencode format="$fmt" --data-urlencode ids="$id" "$uri") if [ -z "$metar" ]; then @@ -32,6 +47,8 @@ if [ -z "$metar" ]; then exit 1 fi -decodeuri=$(printf '%s\n\n' "$metar" "$(printart)" | sed 's/^#//' | /br/bin/bitreich-paste) raw=$(printf '%s\n' "$metar" | sed -n '2s/^[^:]*: //p') -printf '%s\n' "$raw ; decode: $decodeuri" +art=$(printart | sed 's/^#//') +info=$(dromeinfo "$id") +decode=$(printf '%s\n\n' "$info" "$metar" "$art" | /br/bin/bitreich-paste) +printf '%s\n' "$raw ; decode: $decode"