"""Wikimedia Commons search helper for the kewpie external-proxy collection.""" import json import sys import urllib.parse import _fetch def csearch(q, limit=30): u = ( "https://commons.wikimedia.org/w/api.php?action=query&generator=search" f"&gsrsearch={urllib.parse.quote(q)}&gsrnamespace=6&gsrlimit={limit}" "&prop=imageinfo&iiprop=url|size|extmetadata&format=json" ) d = json.loads(_fetch.text(u)) out = [] for p in d.get("query", {}).get("pages", {}).values(): ii = (p.get("imageinfo") or [{}])[0] em = ii.get("extmetadata", {}) out.append( ( p["title"], ii.get("width"), ii.get("height"), em.get("LicenseShortName", {}).get("value"), em.get("Artist", {}).get("value", "")[:60], ii.get("url"), ) ) return out if __name__ == "__main__": for q in sys.argv[1:]: print("###", q) for t in csearch(q): print(" ", t[0], "|", t[1], "x", t[2], "|", t[3], "|", t[4])