User:Edoderoobot/prefill-BRIN.py

From Wikidata
Jump to navigation Jump to search
import pywikibot
from pywikibot import pagegenerators as pg

"""
in August 2016 the new requested property P3061/BRIN-number was created.
This number has previously been imported as "alias", 
this script will move those from the alias to P3061
"""

query = u'select ?item where { ?item wdt:P31/wdt:P279* wd:Q3914 . ?item wdt:P17 wd:Q55 }'

undefined = 'n/a' 
blank = '    '
BRINproperty='P3061'

def wd_sparql_generator(query):        
  wikidatasite=pywikibot.Site('wikidata','wikidata') 
  generator=pg.WikidataSPARQLPageGenerator(query,site=wikidatasite)
  
  for wd in generator:
    if (not wd.isRedirectPage()):
     if (wd.exists()):
      wd.get(get_redirect=True)
      yield wd

def main():
  repo = pywikibot.Site('wikidata','wikidata').data_repository()
  scholen = wd_sparql_generator(query)
  for school in scholen:
    if ('nl' in school.descriptions):  
      nldesc = school.descriptions['nl']
    else:
      nldesc = 'n/a'    
    if (BRINproperty in school.claims):
      propBRIN = school.claims.get(BRINproperty)[0].getTarget()
    else:
      propBRIN=blank
    aliasBRIN = undefined
    if ('nl'in school.aliases):  
     for alias in school.aliases['nl']:
      if (alias.find('BRIN-nummer')>0):
        aliasBRIN = alias[0:4]
        print('%s: <%s>-{%s}-%s' % (school.title(),aliasBRIN,propBRIN,nldesc))

    if ((propBRIN==blank) and (aliasBRIN!=undefined)):
        print('Set to: %s' % aliasBRIN)
        claim = pywikibot.Claim(repo,BRINproperty) 
        claim.setTarget(aliasBRIN)
        school.addClaim(claim,summary=u'prefill-BRIN.py [[User:Edoderoobot/prefill-BRIN.py|source]]')
        
        
main()