import pywikibot
from pywikibot import pagegenerators as pg
def list_template_usage(site_obj, tmpl_name):
name = "{}:{}".format(site_obj.namespace(10), tmpl_name)
tmpl_page = pywikibot.Page(site_obj, name)
ref_gen = pg.ReferringPageGenerator(tmpl_page, onlyTemplateInclusion=True)
filter_gen = pg.NamespaceFilterPageGenerator(ref_gen, namespaces=[0])
generator = site_obj.preloadpages(filter_gen, pageprops=True)
return generator
enwp = pywikibot.Site("en","wikipedia")
tmpl_gen = list_template_usage(enwp, "Infobox anatomy")
anatomy = pywikibot.Page(enwp, "Template:Infobox anatomy")
bone = pywikibot.Page(enwp, "Template:Infobox bone")
artery = pywikibot.Page(enwp, "Template:Infobox artery")
vein = pywikibot.Page(enwp, "Template:Infobox vein")
lymph = pywikibot.Page(enwp, "Template:Infobox lymph")
nerve = pywikibot.Page(enwp, "Template:Infobox anatomy")
brain = pywikibot.Page(enwp, "Template:Infobox brain")
muscle = pywikibot.Page(enwp, "Template:Infobox muscle")
embryology = pywikibot.Page(enwp, "Template:Infobox embryology")
anatomy_family = [anatomy, bone, artery, vein,
lymph, nerve, brain, muscle, embryology]
for i, page in enumerate(tmpl_gen):
#item = pywikibot.ItemPage.fromPage(page)
#print(page.title(), item.getID())
#print(type(page.templatesWithParams()))
for template in page.templatesWithParams():
#print(template)
if template[0] in anatomy_family:
#print(template[0])
for param in template[1]:
#print(param, param.startswith("Code="))
if param.startswith("Code="):
#print(param[5:], param[5:] != "")
if (len(param[5:]) and
not param[5:].startswith("{{Terminologia")):
item = pywikibot.ItemPage.fromPage(page)
print(page.title(), item.getID(), template[0])
print("Code in Wikipedia:", param[5:])
item_dict = item.get()
claim_dict = item_dict["claims"]
TA_list = claim_dict.get("P1323")
TH_list = claim_dict.get("P1694")
TE_list = claim_dict.get("P1693")
if TA_list:
for TA in TA_list:
print("TA in Wikidata:", TA.getTarget())
if TH_list:
for TH in TH_list:
print("TH in Wikidata:", TH.getTarget())
if TE_list:
for TE in TE_list:
print("TE in Wikidata:", TE.getTarget())
print("")
break
break
if i == 5000:
print("i == 5000")
break
print("End of Output")