59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
import asyncio
|
|
import httpx
|
|
from pathlib import Path
|
|
|
|
COUNTRIES = [
|
|
"ad","ae","af","ag","ai","al","am","ao","aq","ar","as","at","au","aw","ax","az",
|
|
"ba","bb","bd","be","bf","bg","bh","bi","bj","bl","bm","bn","bo","bq","br","bs","bt","bv","bw","by","bz",
|
|
"ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cw","cx","cy","cz",
|
|
"de","dj","dk","dm","do","dz",
|
|
"ec","ee","eg","eh","er","es","et",
|
|
"fi","fj","fk","fm","fo","fr",
|
|
"ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy",
|
|
"hk","hm","hn","hr","ht","hu",
|
|
"id","ie","il","im","in","io","iq","ir","is","it",
|
|
"jm","jo","jp",
|
|
"ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz",
|
|
"la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly",
|
|
"ma","mc","md","me","mf","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz",
|
|
"na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz",
|
|
"om",
|
|
"pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py",
|
|
"qa",
|
|
"re","ro","rs","ru","rw",
|
|
"sa","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","sr","ss","st","sv","sx","sy","sz",
|
|
"tc","td","tf","tg","th","tj","tk","tl","tm","tn","to","tr","tt","tv","tw","tz",
|
|
"ua","ug","um","us","uy","uz",
|
|
"va","vc","ve","vg","vi","vn","vu",
|
|
"wf","ws",
|
|
"ye","yt",
|
|
"za","zm","zw"
|
|
]
|
|
|
|
BASE_URL = "https://www.forex.se/dist/client/default/assets/flags/"
|
|
SAVE_DIR = Path("./flags")
|
|
SAVE_DIR.mkdir(exist_ok=True)
|
|
|
|
async def download_flag(client, code):
|
|
url = f"{BASE_URL}{code}.svg"
|
|
save_path = SAVE_DIR / f"{code}.svg"
|
|
|
|
try:
|
|
resp = await client.get(url)
|
|
if resp.status_code == 200:
|
|
save_path.write_bytes(resp.content)
|
|
print(f"[OK] {code}.svg")
|
|
else:
|
|
print(f"[MISS] {code}.svg (status: {resp.status_code})")
|
|
except Exception as e:
|
|
print(f"[ERR] {code}.svg → {e}")
|
|
|
|
async def main():
|
|
async with httpx.AsyncClient(timeout=10) as client:
|
|
tasks = [download_flag(client, c) for c in COUNTRIES]
|
|
await asyncio.gather(*tasks)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
|