Files
hockey_new/hockey_data/iso_country_codes.py
2026-08-19 15:08:39 +03:00

321 lines
5.9 KiB
Python

from __future__ import annotations
# Generated from ISO 3166 data. Kept local so the app has no runtime package dependency.
ISO3_TO_ISO2: dict[str, str] = {
'ABW': 'AW',
'AFG': 'AF',
'AGO': 'AO',
'AIA': 'AI',
'ALA': 'AX',
'ALB': 'AL',
'AND': 'AD',
'ARE': 'AE',
'ARG': 'AR',
'ARM': 'AM',
'ASM': 'AS',
'ATA': 'AQ',
'ATF': 'TF',
'ATG': 'AG',
'AUS': 'AU',
'AUT': 'AT',
'AZE': 'AZ',
'BDI': 'BI',
'BEL': 'BE',
'BEN': 'BJ',
'BES': 'BQ',
'BFA': 'BF',
'BGD': 'BD',
'BGR': 'BG',
'BHR': 'BH',
'BHS': 'BS',
'BIH': 'BA',
'BLM': 'BL',
'BLR': 'BY',
'BLZ': 'BZ',
'BMU': 'BM',
'BOL': 'BO',
'BRA': 'BR',
'BRB': 'BB',
'BRN': 'BN',
'BTN': 'BT',
'BVT': 'BV',
'BWA': 'BW',
'CAF': 'CF',
'CAN': 'CA',
'CCK': 'CC',
'CHE': 'CH',
'CHL': 'CL',
'CHN': 'CN',
'CIV': 'CI',
'CMR': 'CM',
'COD': 'CD',
'COG': 'CG',
'COK': 'CK',
'COL': 'CO',
'COM': 'KM',
'CPV': 'CV',
'CRI': 'CR',
'CUB': 'CU',
'CUW': 'CW',
'CXR': 'CX',
'CYM': 'KY',
'CYP': 'CY',
'CZE': 'CZ',
'DEU': 'DE',
'DJI': 'DJ',
'DMA': 'DM',
'DNK': 'DK',
'DOM': 'DO',
'DZA': 'DZ',
'ECU': 'EC',
'EGY': 'EG',
'ERI': 'ER',
'ESH': 'EH',
'ESP': 'ES',
'EST': 'EE',
'ETH': 'ET',
'FIN': 'FI',
'FJI': 'FJ',
'FLK': 'FK',
'FRA': 'FR',
'FRO': 'FO',
'FSM': 'FM',
'GAB': 'GA',
'GBR': 'GB',
'GEO': 'GE',
'GGY': 'GG',
'GHA': 'GH',
'GIB': 'GI',
'GIN': 'GN',
'GLP': 'GP',
'GMB': 'GM',
'GNB': 'GW',
'GNQ': 'GQ',
'GRC': 'GR',
'GRD': 'GD',
'GRL': 'GL',
'GTM': 'GT',
'GUF': 'GF',
'GUM': 'GU',
'GUY': 'GY',
'HKG': 'HK',
'HMD': 'HM',
'HND': 'HN',
'HRV': 'HR',
'HTI': 'HT',
'HUN': 'HU',
'IDN': 'ID',
'IMN': 'IM',
'IND': 'IN',
'IOT': 'IO',
'IRL': 'IE',
'IRN': 'IR',
'IRQ': 'IQ',
'ISL': 'IS',
'ISR': 'IL',
'ITA': 'IT',
'JAM': 'JM',
'JEY': 'JE',
'JOR': 'JO',
'JPN': 'JP',
'KAZ': 'KZ',
'KEN': 'KE',
'KGZ': 'KG',
'KHM': 'KH',
'KIR': 'KI',
'KNA': 'KN',
'KOR': 'KR',
'KWT': 'KW',
'LAO': 'LA',
'LBN': 'LB',
'LBR': 'LR',
'LBY': 'LY',
'LCA': 'LC',
'LIE': 'LI',
'LKA': 'LK',
'LSO': 'LS',
'LTU': 'LT',
'LUX': 'LU',
'LVA': 'LV',
'MAC': 'MO',
'MAF': 'MF',
'MAR': 'MA',
'MCO': 'MC',
'MDA': 'MD',
'MDG': 'MG',
'MDV': 'MV',
'MEX': 'MX',
'MHL': 'MH',
'MKD': 'MK',
'MLI': 'ML',
'MLT': 'MT',
'MMR': 'MM',
'MNE': 'ME',
'MNG': 'MN',
'MNP': 'MP',
'MOZ': 'MZ',
'MRT': 'MR',
'MSR': 'MS',
'MTQ': 'MQ',
'MUS': 'MU',
'MWI': 'MW',
'MYS': 'MY',
'MYT': 'YT',
'NAM': 'NA',
'NCL': 'NC',
'NER': 'NE',
'NFK': 'NF',
'NGA': 'NG',
'NIC': 'NI',
'NIU': 'NU',
'NLD': 'NL',
'NOR': 'NO',
'NPL': 'NP',
'NRU': 'NR',
'NZL': 'NZ',
'OMN': 'OM',
'PAK': 'PK',
'PAN': 'PA',
'PCN': 'PN',
'PER': 'PE',
'PHL': 'PH',
'PLW': 'PW',
'PNG': 'PG',
'POL': 'PL',
'PRI': 'PR',
'PRK': 'KP',
'PRT': 'PT',
'PRY': 'PY',
'PSE': 'PS',
'PYF': 'PF',
'QAT': 'QA',
'REU': 'RE',
'ROU': 'RO',
'RUS': 'RU',
'RWA': 'RW',
'SAU': 'SA',
'SDN': 'SD',
'SEN': 'SN',
'SGP': 'SG',
'SGS': 'GS',
'SHN': 'SH',
'SJM': 'SJ',
'SLB': 'SB',
'SLE': 'SL',
'SLV': 'SV',
'SMR': 'SM',
'SOM': 'SO',
'SPM': 'PM',
'SRB': 'RS',
'SSD': 'SS',
'STP': 'ST',
'SUR': 'SR',
'SVK': 'SK',
'SVN': 'SI',
'SWE': 'SE',
'SWZ': 'SZ',
'SXM': 'SX',
'SYC': 'SC',
'SYR': 'SY',
'TCA': 'TC',
'TCD': 'TD',
'TGO': 'TG',
'THA': 'TH',
'TJK': 'TJ',
'TKL': 'TK',
'TKM': 'TM',
'TLS': 'TL',
'TON': 'TO',
'TTO': 'TT',
'TUN': 'TN',
'TUR': 'TR',
'TUV': 'TV',
'TWN': 'TW',
'TZA': 'TZ',
'UGA': 'UG',
'UKR': 'UA',
'UMI': 'UM',
'URY': 'UY',
'USA': 'US',
'UZB': 'UZ',
'VAT': 'VA',
'VCT': 'VC',
'VEN': 'VE',
'VGB': 'VG',
'VIR': 'VI',
'VNM': 'VN',
'VUT': 'VU',
'WLF': 'WF',
'WSM': 'WS',
'YEM': 'YE',
'ZAF': 'ZA',
'ZMB': 'ZM',
'ZWE': 'ZW',
}
def iso2_from_code(value: str) -> str:
code = "".join(character for character in str(value or "").upper() if character.isalpha())
if len(code) == 2:
return code
if len(code) == 3:
return ISO3_TO_ISO2.get(code, "")
return ""
ISO2_TO_ISO3: dict[str, str] = {iso2: iso3 for iso3, iso2 in ISO3_TO_ISO2.items()}
def iso3_from_code(value: str) -> str:
code = "".join(character for character in str(value or "").upper() if character.isalpha())
if len(code) == 3 and code in ISO3_TO_ISO2:
return code
if len(code) == 2:
return ISO2_TO_ISO3.get(code, "")
return ""
# Numeric country identifiers used by the KHL Stat2TV players-countries feed.
# The XML contains one Player per row and does not carry ISO codes, so the
# identifier has to be translated before local SVG flags can be selected.
KHL_COUNTRY_ID_TO_ISO3: dict[str, str] = {
"1": "RUS",
"2": "CZE",
"3": "SVK",
"4": "LVA",
"5": "BLR",
"6": "KAZ",
"7": "USA",
"8": "CAN",
"9": "UKR",
"10": "EST",
"11": "LTU",
"12": "SWE",
"13": "FIN",
"14": "AUT",
"15": "DEU",
"16": "DNK",
"17": "NOR",
"18": "CHE",
"19": "HUN",
"20": "SVN",
"21": "JPN",
"22": "POL",
"23": "GBR",
"24": "MDA",
"25": "HRV",
"26": "KOR",
"27": "BGR",
"28": "ITA",
"29": "FRA",
"30": "BEL",
"31": "CHN",
"32": "ISR",
"33": "UZB",
"43": "NLD",
}
def khl_country_codes(country_id: str) -> tuple[str, str]:
iso3 = KHL_COUNTRY_ID_TO_ISO3.get(str(country_id or "").strip(), "")
return iso2_from_code(iso3), iso3