User:Edoderoobot/spaanse-burgemeester.py

From Wikidata
Jump to navigation Jump to search
import pywikibot
from pywikibot import pagegenerators as pg
import codecs
import sys
import datetime
from datetime import datetime, date, time

query='SELECT ?item WHERE {?item wdt:P279 wd:Q5663900 . OPTIONAL {?item rdfs:label ?labelnl FILTER(lang(?labelnl)="nl")} . }'

def logme(verbose, formatstring, *parameters):
  with codecs.open("Spaanse-burgemeester.log.csv", "a", encoding="utf-8") as logfile:
    formattedstring = u'%s%s' % (formatstring, '\n')
   
    try:   
      logfile.write(formattedstring % (parameters) )
    except :
      exctype, value = sys.exc_info()[:2]
      print("1) Error writing to logfile on: [%s] [%s]" % (exctype, value))
      verbose = True    #now I want to see what!   
    logfile.close()
  if verbose:
    print(formatstring % (parameters))  


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 action_one_item(wd):
    repo=pywikibot.Site('wikidata','wikidata').data_repository()
    town = u'' #get from P1001
    if ('P1001' in wd.claims):
      jurisdictieLNK=wd.claims.get('P1001')[0].getTarget()
      if (not (jurisdictieLNK==None)):
        jurisdictie=pywikibot.ItemPage(repo,jurisdictieLNK.title())
        jurisdictie.get(get_redirect=True)
        if ('nl' in jurisdictie.labels):
          town = jurisdictie.labels['nl']
        newlabel='burgemeester van %s' % town
        newdescription='ambt in Spaanse stad'
        data={}
        if not('nl' in wd.labels):
          data.update({'labels': { 'nl': newlabel }})
        if not('nl' in wd.descriptions):
          data.update({'descriptions':{'nl':newdescription}})    
        if (True):
          wd.editEntity(data,summary=u'nl-description, [https://www.wikidata.org/wiki/User:Edoderoobot/spaanse-burgemeester.py python code], logfile on https://goo .gl/BezTim')
          logme(False, '%s|%s|%s|%s|%s|%s|%s|%s',datetime.now().strftime("%Y-%b-%d/%H:%M:%S"),wd.title(),'nl','',newlabel,'',newdescription,'spaanse burgemeester')
        else:
          print('%s-%s' % (newlabel,newdescription))      
      else:
        logme(False, '%s|%s|%s|%s|%s|%s|%s|%s',datetime.now().strftime("%Y-%b-%d/%H:%M:%S"),wd.title(),'nl','','','','','P1001==None')
    else:
      logme(False, '%s|%s|%s|%s|%s|%s|%s|%s',datetime.now().strftime("%Y-%b-%d/%H:%M:%S"),wd.title(),'nl','','','','','no P1001')
    
def main():
  aantal = 0
  print('1')
  generator = wd_sparql_generator(query)
  print('2')
  for oneitem in generator:
    aantal += 1
    action_one_item(oneitem)
    #if aantal>11: break
    
     
main()