From e0e9d467aeb64f97e87735195a2a1135848cd0be Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Sun, 26 Apr 2026 20:37:29 +0200 Subject: [PATCH] Added UK country split in the country list --- assets/country_flag/eng.png | Bin 0 -> 374 bytes assets/country_flag/sct.png | Bin 0 -> 1093 bytes assets/country_flag/wls.png | Bin 0 -> 3202 bytes src/Helpers/TSHCountryHelper.py | 99 +++++++++++++++++++++++++++++++- 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100755 assets/country_flag/eng.png create mode 100755 assets/country_flag/sct.png create mode 100755 assets/country_flag/wls.png diff --git a/assets/country_flag/eng.png b/assets/country_flag/eng.png new file mode 100755 index 0000000000000000000000000000000000000000..aed9845a1a172f6a6bc0942135285c51191de400 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBN!VDzaUNx)&QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIP}1)4{b0B9bklyLZf3zKFxH zM4|cIQ9Zpd004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0003* zP)t-s|NsBn>GxBZ+yrOL0A$MmX3XsK`-ivZ8FbJ9Wy}5k{>0q#Mv&SAXUv7R<`;9& z_WAw&{r+}19wB{Cb&;Vo0A9&K0zv=S#{QUj?zuEFZ zjoAWb%m!%8RG8e*ht*gz1Q(Si`W2V%m-=BSDM|@h$>h`~Cj9)$u%v*aBtC2x-k)oZi&s_U7>Vd9LIVaL*-t)1JiZ z_4)n#{QkGp@HvRr0cFbwYRz4q-qz;!Gv#v)TYYq3vAA2qu|`? z_%4CfsLSmDV#*qH(9F!t_7C3600001VoOIvYf@#Um;e9(2XskIMF;2#1pziWoOY;| z00060Nklk9nF; z=j_b9^X~4<&M@{VJ-s@RIu_9N_Arg;4Sm2nbLY@!(6ct_A21GfL;?nl1N}@SdXxEY z5**AXRd@^f9vU7Q{euLIjtmc}+^se{`X3vg_>BaIiSaRHZns(49IoH~;vcy9z2gDbN`X&-zWolobb|z|XBzI@>e1KE0s|f{3cQewrP^UENoY?iG`TM$IyE#pH8(3TFgh?W7Bfys00000 LNkvXXu0mjfL2MLJ literal 0 HcmV?d00001 diff --git a/assets/country_flag/wls.png b/assets/country_flag/wls.png new file mode 100755 index 0000000000000000000000000000000000000000..12d676f846a07271e13ffcf250d4426f39c4cf5d GIT binary patch literal 3202 zcmV-|41M#7P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 None: + super().__init__() + + def AddUKCountries(self): + try: + f = open("./assets/countries+states+cities.json", + 'r', encoding='utf-8') + countries_json = orjson.loads(f.read()) + f.close() + + checked_countries = self.uk_data.keys() + found_countries = [] + found_northern_ireland = False + for c in countries_json: + ccode = c.get("iso2") if not c.get("iso2").isdigit() else "".join([ + word[0] for word in re.split(r'\s+|-', c.get("name"))]) + if ccode in checked_countries: + found_countries.append(ccode) + + # Add new countries + for key in checked_countries: + if key not in found_countries: + countries_json.append(self.uk_data[key]) + + print("Writing file") + + with open("./assets/countries+states+cities.json", + 'wt', encoding="utf-8") as f: + f.write(json.dumps(countries_json, indent=2)) + + print("File written") + except: + logger.error(f"An error has occured when adding the data for UK countries - {traceback.format_exc()}") + + def GetUKEmoji(ccode, emoji): + if ccode == "ENG": + emoji = "🏴󠁧󠁢󠁥󠁮󠁧󠁿" + if ccode == "SCT": + emoji = "🏴󠁧󠁢󠁳󠁣󠁴󠁿" + if ccode == "WLS": + emoji = "🏴󠁧󠁢󠁷󠁬󠁳󠁿" + return emoji + class TSHCountryHelper(QObject): instance: "TSHCountryHelper" = None @@ -35,6 +127,7 @@ class TSHCountryHelper(QObject): cities = {} countryModel = None signals = TSHCountryHelperSignals() + uk_handler = TSHUKHandler() def __init__(self) -> None: super().__init__() @@ -62,6 +155,8 @@ def validate(filename): orjson.loads(f.read()) return True + logger.info("Updating data_countries file...") + DownloadDialog( url=url, filename=str(out_file), @@ -69,7 +164,7 @@ def validate(filename): validator=validate, ).exec() - logger.info("Updating data_countries file...") + TSHCountryHelper.uk_handler.AddUKCountries() TSHCountryHelper.LoadCountries() logger.info("data_countries file updated.") @@ -95,7 +190,7 @@ def GetBasicCountryInfo(country_code): data["emoji"] = countryflag.getflag(TSHCountryHelper.countries[country_code]["code"]) except InvalidCountryError: # logger.warning(f'The following country could not be found in the countryflag library: {TSHCountryHelper.countries[country_code]["code"]}') - data["emoji"] = None + data["emoji"] = TSHUKHandler.GetUKEmoji(TSHCountryHelper.countries[country_code]["code"], None) return data