Files
42_104/caddy/www/qiji-luopan/download_country_flags.py
2026-06-23 19:33:50 +08:00

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())