parent
690d3281df
commit
3bad50cb27
|
@ -43,18 +43,36 @@ def get_entity(qid: str) -> dict[str, typing.Any] | None:
|
||||||
return entity if "missing" not in entity else None
|
return entity if "missing" not in entity else None
|
||||||
|
|
||||||
|
|
||||||
def qid_to_commons_category(qid: str) -> str | None:
|
def qid_to_commons_category(qid: str, check_p910: bool = True) -> str | None:
|
||||||
"""Commons category for a given Wikidata item."""
|
"""Commons category for a given Wikidata item."""
|
||||||
entity = get_entity(qid)
|
entity = get_entity(qid)
|
||||||
|
cat_start = "Category:"
|
||||||
if not entity:
|
if not entity:
|
||||||
return None
|
return None
|
||||||
commons_cat: str | None
|
|
||||||
try:
|
|
||||||
commons_cat = entity["claims"]["P373"][0]["mainsnak"]["datavalue"]["value"]
|
|
||||||
except Exception:
|
|
||||||
commons_cat = None
|
|
||||||
|
|
||||||
return commons_cat
|
try:
|
||||||
|
cat: str = entity["claims"]["P373"][0]["mainsnak"]["datavalue"]["value"]
|
||||||
|
return cat
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
sitelink = entity["sitelinks"]["commonswiki"]["title"]
|
||||||
|
except KeyError:
|
||||||
|
sitelink = None
|
||||||
|
|
||||||
|
if sitelink:
|
||||||
|
return sitelink[len(cat_start) :] if sitelink.startswith(cat_start) else None
|
||||||
|
|
||||||
|
if not check_p910:
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
cat_qid = entity["claims"]["P910"][0]["mainsnak"]["datavalue"]["value"]["id"]
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return qid_to_commons_category(cat_qid, check_p910=False)
|
||||||
|
|
||||||
|
|
||||||
Row = dict[str, dict[str, typing.Any]]
|
Row = dict[str, dict[str, typing.Any]]
|
||||||
|
|
Loading…
Reference in a new issue