Initial commit: caddy static file server workspace
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
58
caddy/www/qiji-luopan/download_country_flags.py
Normal file
58
caddy/www/qiji-luopan/download_country_flags.py
Normal file
@@ -0,0 +1,58 @@
|
||||
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())
|
||||
|
||||
Reference in New Issue
Block a user