# 0) Sanity check: do we see matches?
grep -nE 'qA[OR],' W*csv | head

# 1) Extract unique IGates into a temp list
grep -hoE 'qA[OR],[^:,"]+' W*csv | cut -d',' -f2 | tr -d '*"' | sort -u > /tmp/igates.txt
wc -l /tmp/igates.txt

# 2) Look each one up on aprs.fi and write receivers_info.csv
: "${APRSFI_KEY:?export APRSFI_KEY=116175.qmgZU4ir03taM3je}"
echo "call,name,lat,lon,type,symbol_table,symbol,last_seen_utc,comment" > receivers_info.csv
while read -r CALL; do
  [ -z "$CALL" ] && continue
  j="$(curl -s "https://api.aprs.fi/api/get?what=loc&name=${CALL}&format=json&apikey=${APRSFI_KEY}")"
  if [ "$(echo "$j" | jq -r '.result // "fail"')" = ok ] && [ "$(echo "$j" | jq '.found // 0')" -gt 0 ]; then
    name=$(echo "$j" | jq -r '.entries[0].name // ""')
    lat=$( echo "$j" | jq -r '.entries[0].lat // ""')
    lon=$( echo "$j" | jq -r '.entries[0].lng // ""')
    typ=$( echo "$j" | jq -r '.entries[0].type // ""')
    stab=$(echo "$j" | jq -r '.entries[0].symboltable // ""')
    sym=$( echo "$j" | jq -r '.entries[0].symbol // ""')
    last=$(echo "$j" | jq -r '(.entries[0].lasttime // 0) | tonumber')
    last_iso=""; [ "$last" -gt 0 ] 2>/dev/null && last_iso=$(date -u -d @"$last" +"%Y-%m-%dT%H:%M:%SZ")
    comm=$(echo "$j" | jq -r '.entries[0].comment // ""' | tr '\n' ' ' | tr -d '\r')
    printf "%s,%s,%s,%s,%s,%s,%s,%s,%s\n" "$CALL" "$name" "$lat" "$lon" "$typ" "$stab" "$sym" "$last_iso" "$comm" >> receivers_info.csv
  else
    printf "%s,%s,,,,,,,\n" "$CALL" "$CALL" >> receivers_info.csv
  fi
  sleep 0.2  # be polite to the API
done < /tmp/igates.txt

# 3) Quick peek
sed -n '1,10p' receivers_info.csv
