import pywikibot
from pywikibot.pagegenerators import SubCategoriesPageGenerator
try:
from skip import skip_list #list of items to skip
except:
skip_list = []
site = pywikibot.Site("en", "wikipedia")
repo = pywikibot.Site("wikidata", "wikidata").data_repository()
claim = pywikibot.Claim(repo, u'P31')
target = pywikibot.ItemPage(repo, u"Q4167410")
claim.setTarget(target)
lang_descs = target.get()['labels']
for page in CategorizedPageGenerator(pywikibot.Category(site,"All_disambiguation_pages"), recurse=False, start=None, step=None, total=None, content=False):
try:
item = pywikibot.ItemPage.fromPage(page)
if item.getID() in skip_list: continue
dictionary = item.get()
descs = dictionary['descriptions']
results = {}
kl = list(set(lang_descs.keys()).difference(set(descs.keys())))
if not kl: continue
if 'P31' not in item.claims:
item.addClaim(claim)
if len(item.claims['P31']) > 1:
print item.getID()
else:
for lang in lang_descs.keys():
if lang not in descs.keys() or descs[lang] == u'':
#or lang_descs[lang] != descs[lang]: #maybe correct descriptions
results[lang] = lang_descs[lang]
item.editDescriptions(results, summary="adding descriptions")
del item
except:
print page