improve airline name resolution

This commit is contained in:
kx1t
2025-03-04 10:57:12 -05:00
parent 0ac40d747a
commit c9980cd5dd
2 changed files with 428 additions and 4 deletions

425
rootfs/scripts/to_ascii Executable file
View File

@@ -0,0 +1,425 @@
#!/bin/bash
#!/command/with-contenv bash
#shellcheck shell=bash disable=SC2034
# -----------------------------------------------------------------------------------
# Copyright 2025 Ramon F. Kolb - licensed under the terms and conditions
# of GPLv3. The terms and conditions of this license are included with the Github
# distribution of this package, and are also available here:
# https://sdr-e.com/docker-planefence/
#
# This package may incorporate other software and license terms.
# -----------------------------------------------------------------------------------
# Convert a string to ASCII
# This function converts a string to ASCII by replacing all non-ASCII characters
# with their ASCII equivalent. This is useful for converting special characters
# in names to their ASCII equivalent.
function to_ascii() {
local string="$1"
local char
declare -A conv
# Add all unique conversions here
conv[À]="A"
conv[Á]="A"
conv[Â]="A"
conv[Ã]="A"
conv[Ä]="A"
conv[Å]="A"
conv[Ā]="A"
conv[Ă]="A"
conv[Ą]="A"
conv[Ą]="A"
conv[Ǎ]="A"
conv[Ǟ]="A"
conv[Ǡ]="A"
conv[Ȁ]="A"
conv[Ȃ]="A"
conv[Ȧ]="A"
conv[Ç]="C"
conv[Č]="C"
conv[Ć]="C"
conv[Ĉ]="C"
conv[Ċ]="C"
conv[Č]="C"
conv[Ď]="D"
conv[Đ]="D"
conv[Ḋ]="D"
conv[Ḍ]="D"
conv[Ḏ]="D"
conv[Ḑ]="D"
conv[Ḓ]="D"
conv[È]="E"
conv[É]="E"
conv[Ê]="E"
conv[Ë]="E"
conv[Ē]="E"
conv[Ĕ]="E"
conv[Ę]="E"
conv[Ė]="E"
conv[Ě]="E"
conv[Ę]="E"
conv[Ė]="E"
conv[Ě]="E"
conv[Ȅ]="E"
conv[Ȇ]="E"
conv[Ĝ]="G"
conv[Ğ]="G"
conv[Ģ]="G"
conv[Ġ]="G"
conv[Ĝ]="G"
conv[Ĥ]="H"
conv[Ħ]="H"
conv[Ḣ]="H"
conv[Ḥ]="H"
conv[Ḧ]="H"
conv[Ḩ]="H"
conv[Ḫ]="H"
conv[Ì]="I"
conv[Í]="I"
conv[Î]="I"
conv[Ï]="I"
conv[Ĩ]="I"
conv[Ī]="I"
conv[Ĭ]="I"
conv[Į]="I"
conv[İ]="I"
conv[Ĵ]="J"
conv[Ķ]="K"
conv[ĸ]="K"
conv[Ḱ]="K"
conv[Ḳ]="K"
conv[Ḵ]="K"
conv[Ĺ]="L"
conv[Ļ]="L"
conv[Ľ]="L"
conv[Ł]="L"
conv[Ḷ]="L"
conv[Ḹ]="L"
conv[Ḻ]="L"
conv[Ḽ]="L"
conv[Ḿ]="M"
conv[Ṁ]="M"
conv[Ṃ]="M"
conv[Ñ]="N"
conv[Ń]="N"
conv[Ņ]="N"
conv[Ň]="N"
conv[Ŋ]="N"
conv[Ṅ]="N"
conv[Ṇ]="N"
conv[Ṉ]="N"
conv[Ṋ]="N"
conv[Ò]="O"
conv[Ó]="O"
conv[Ô]="O"
conv[Õ]="O"
conv[Ö]="O"
conv[Ø]="O"
conv[Ō]="O"
conv[Ŏ]="O"
conv[Ő]="O"
conv[Ŕ]="R"
conv[Ŗ]="R"
conv[Ř]="R"
conv[Ṙ]="R"
conv[Ṛ]="R"
conv[Ṝ]="R"
conv[Ś]="S"
conv[Ŝ]="S"
conv[Ş]="S"
conv[Š]="S"
conv[Ṡ]="S"
conv[Ṣ]="S"
conv[Ṥ]="S"
conv[Ṧ]="S"
conv[Ṩ]="S"
conv[Ţ]="T"
conv[Ť]="T"
conv[Ŧ]="T"
conv[Ṫ]="T"
conv[Ṭ]="T"
conv[Ṯ]="T"
conv[Ṱ]="T"
conv[Ù]="U"
conv[Ú]="U"
conv[Û]="U"
conv[Ü]="U"
conv[Ū]="U"
conv[Ŭ]="U"
conv[Ů]="U"
conv[Ű]="U"
conv[Ų]="U"
conv[Ũ]="U"
conv[Ṳ]="U"
conv[Ṵ]="U"
conv[Ṷ]="U"
conv[Ṹ]="U"
conv[Ṻ]="U"
conv[Ŵ]="W"
conv[Ẁ]="W"
conv[Ẃ]="W"
conv[Ẅ]="W"
conv[Ẇ]="W"
conv[Ý]="Y"
conv[Ŷ]="Y"
conv[Ÿ]="Y"
conv[Ẏ]="Y"
conv[Ỳ]="Y"
conv[Ỵ]="Y"
conv[Ỷ]="Y"
conv[Ỹ]="Y"
conv[Ź]="Z"
conv[Ż]="Z"
conv[Ž]="Z"
conv[Ẑ]="Z"
conv[Ẓ]="Z"
conv[Ẕ]="Z"
conv[Ẕ]="Z"
conv[à]="a"
conv[á]="a"
conv[â]="a"
conv[ã]="a"
conv[ä]="a"
conv[å]="a"
conv[ā]="a"
conv[ă]="a"
conv[ą]="a"
conv[ǎ]="a"
conv[ǟ]="a"
conv[ǡ]="a"
conv[ǻ]="a"
conv[ȁ]="a"
conv[ȃ]="a"
conv[ȧ]="a"
conv[ḃ]="b"
conv[ḅ]="b"
conv[ḇ]="b"
conv[ç]="c"
conv[č]="c"
conv[ĉ]="c"
conv[ċ]="c"
conv[ć]="c"
conv[ċ]="c"
conv[ĉ]="c"
conv[ď]="d"
conv[đ]="d"
conv[ḋ]="d"
conv[ḍ]="d"
conv[ḏ]="d"
conv[ḑ]="d"
conv[ḓ]="d"
conv[ḋ]="d"
conv[ḍ]="d"
conv[ḏ]="d"
conv[ḑ]="d"
conv[ḓ]="d"
conv[₫]="d"
conv[è]="e"
conv[é]="e"
conv[ê]="e"
conv[ë]="e"
conv[ē]="e"
conv[ĕ]="e"
conv[ė]="e"
conv[ę]="e"
conv[ě]="e"
conv[ė]="e"
conv[ĕ]="e"
conv[ȅ]="e"
conv[ȇ]="e"
conv[ḟ]="f"
conv[ƒ]="f"
conv[ĝ]="g"
conv[ğ]="g"
conv[ģ]="g"
conv[ġ]="g"
conv[ĝ]="g"
conv[ĥ]="h"
conv[ħ]="h"
conv[ḣ]="h"
conv[ḥ]="h"
conv[ḧ]="h"
conv[ḩ]="h"
conv[ḫ]="h"
conv[ẖ]="h"
conv[ḥ]="h"
conv[ì]="i"
conv[í]="i"
conv[î]="i"
conv[ï]="i"
conv[ĩ]="i"
conv[ī]="i"
conv[ĭ]="i"
conv[į]="i"
conv[ı]="i"
conv[į]="i"
conv[ĭ]="i"
conv[ī]="i"
conv[ĩ]="i"
conv[ɨ]="i"
conv[ᵻ]="i"
conv[ĵ]="j"
conv[ǰ]="j"
conv[ķ]="k"
conv[ĸ]="k"
conv[ḱ]="k"
conv[ḳ]="k"
conv[ḵ]="k"
conv[ĺ]="l"
conv[ļ]="l"
conv[ľ]="l"
conv[ł]="l"
conv[ḷ]="l"
conv[ḹ]="l"
conv[ḻ]="l"
conv[ḽ]="l"
conv[ṁ]="m"
conv[ṃ]="m"
conv[ḿ]="m"
conv[ṁ]="m"
conv[ñ]="n"
conv[ń]="n"
conv[ņ]="n"
conv[ň]="n"
conv[ŋ]="n"
conv[ṅ]="n"
conv[ṇ]="n"
conv[ṉ]="n"
conv[ṋ]="n"
conv[ò]="o"
conv[ó]="o"
conv[ô]="o"
conv[õ]="o"
conv[ö]="o"
conv[ø]="o"
conv[ō]="o"
conv[ŏ]="o"
conv[ő]="o"
conv[ŕ]="r"
conv[ŗ]="r"
conv[ř]="r"
conv[ṙ]="r"
conv[ṛ]="r"
conv[ṝ]="r"
conv[ś]="s"
conv[ŝ]="s"
conv[ş]="s"
conv[š]="s"
conv[ṡ]="s"
conv[ṣ]="s"
conv[ṥ]="s"
conv[ṧ]="s"
conv[ṩ]="s"
conv[ʃ]="s"
conv[ţ]="t"
conv[ť]="t"
conv[ŧ]="t"
conv[ṫ]="t"
conv[ṭ]="t"
conv[ṯ]="t"
conv[ṱ]="t"
conv[ẗ]="t"
conv[ù]="u"
conv[ú]="u"
conv[û]="u"
conv[ü]="u"
conv[ū]="u"
conv[ŭ]="u"
conv[ů]="u"
conv[ű]="u"
conv[ų]="u"
conv[ũ]="u"
conv[ṳ]="u"
conv[ṵ]="u"
conv[ṷ]="u"
conv[ṹ]="u"
conv[ṻ]="u"
conv[ŵ]="w"
conv[ẁ]="w"
conv[ẃ]="w"
conv[ẅ]="w"
conv[ẇ]="w"
conv[ý]="y"
conv[ÿ]="ij"
conv[ŷ]="y"
conv[ẏ]="y"
conv[ẙ]="y"
conv[ỳ]="y"
conv[ỵ]="y"
conv[ỷ]="y"
conv[ỹ]="y"
conv[ij]="ij"
conv[ź]="z"
conv[ż]="z"
conv[ž]="z"
conv[ẑ]="z"
conv[ẓ]="z"
conv[ẕ]="z"
conv[æ]="ae"
conv[œ]="oe"
conv[ß]="ss"
conv[þ]="th"
conv[ð]="dh"
conv[" & "]=" AND "
conv["&"]=" AND "
for char in "${!conv[@]}"; do
string="${string//"$char"/"${conv[$char]}"}"
done
echo "${string//[^[:alnum:] ]/}" | xargs
}
if [[ -z "$1" ]]; then
echo "Usage: $0 <string>"
exit 1
fi
to_ascii "$1"

View File

@@ -78,7 +78,8 @@ CLEANUP_CACHE ()
if [[ "$2" -gt "0" ]]; then CACHETIME="$2"; else CACHETIME=7; fi
if [[ -f "$1" ]]; then
# we could probably combine these, but... first remove the items that have expired in the cache
awk -F ',' -v a="$(date -d "-$CACHETIME days" +%s)" -v b="$(date -d "-$REMOTEMISSCACHE seconds" +%s)" '{if ( ( $3 >= a && $2 != "#NOTFOUND") || ( $3 >= b && $2 == "#NOTFOUND")){print $1 "," $2 "," $3}}' "$1" >/tmp/namecache 2>/dev/null
awk -F ',' -v a="$(date -d "-$CACHETIME days" +%s)" -v b="$(date -d "-$REMOTEMISSCACHE seconds" +%s)" \
'{if ( ( $3 >= a && $2 != "#NOTFOUND") || ( $3 >= b && $2 == "#NOTFOUND")){print $1 "," $2 "," $3}}' "$1" >/tmp/namecache 2>/dev/null
awk -F',' '!seen[$1]++' /tmp/namecache > "$1"
rm -f /tmp/namecache
fi
@@ -190,9 +191,7 @@ fi
# Clean up the results
if [[ -n "$b" ]]; then
b="${b^^}"
b="${b//[^[:alnum:] ]/}" # cleanup any non alphanumeric characters
b="$(echo "$b"|xargs)" #clean up extra spaces
b="$(/scripts/to_ascii "${b^^}")" # convert to ASCII and uppercase
b="${b% [A-Z0-9]}" #clean up single letters/numbers at the end, so "KENNEDY JOHN F" becomes "KENNEDY JOHN"
b="${b% DBA}" #clean up some undesired suffices, mostly corporate entity names
b="${b% TRUSTEE}"