User:Edoderoobot/straat-alias.py

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

straatquery=u'select ?item where {?item wdt:P31 wd:Q79007 . ?item wdt:P17 wd:Q55}'

conversion = { 
              u'Ç': u'C',    u'ç': u'c',    u'ß': u'ss',   u'æ': u'ae',   u'Æ': u'AE',   u'Ł': u'L',    u'ł': u'l',    u'ź': u'z',    u'Ź': u'Z',    u'Ć': u'C',    u'ć': u'c',    u'ž': u'z',    u'İ': u'I',
              u'à': u'a',    u'á': u'a',    u'ä': u'a',    u'â': u'a',    u'À': u'A',    u'Á': u'A',    u'Ä': u'A',    u'Â': u'A',    u'å': u'a',    u'Å': u'A',    u'ą': u'a',    u'Ą': u'A',    u'Ñ': u'N',
              u'é': u'e',    u'ë': u'e',    u'è': u'e',    u'ê': u'e',    u'È': u'E',    u'É': u'E',    u'Ë': u'E',    u'Ê': u'E',    u'ę': u'e',    u'E': u'E',    u'ń': u'n',    u'ś': u's',    u'ñ': u'n',
              u'ì': u'i',    u'í': u'i',    u'ï': u'i',    u'î': u'i',    u'Ï': u'I',    u'Î': u'I',    u'Í': u'I',    u'Ì': u'I',    u'ż': u'z',    u'Ń': u'N',    u'Ś': u'S',    u'Ž': u'Z',    u'Ð': u'dh',
              u'ò': u'o',    u'ó': u'o',    u'ö': u'o',    u'ô': u'o',    u'Ò': u'O',    u'Ó': u'O',    u'Ö': u'O',    u'Ô': u'O',    u'ø': u'o',    u'Ø': u'O',    u'Ż': u'Z',    u'ÿ': u'ij',   u'ð': u'dh',
              u'ù': u'u',    u'ú': u'u',    u'ü': u'u',    u'û': u'u',    u'Ù': u'U',    u'Ú': u'U',    u'Û': u'U',    u'Ü': u'U',    u'Ű': u'U',    u'ű': u'u',    u'ő': u'o',    u'Ő': u'O',    u'Đ': u'Dj',
              u'č': u'c',    u'Č': u'C',    u'Ė': u'E',    u'ė': u'e',    u'į': u'I',    u'Į': u'i',    u'š': u's',    u'Š': u'S',    u'Ų': u'U',    u'ų': u'u',    u'ū': u'u',    u'Ū': u'U',    u'đ': u'dj',
              u'ı': u'i',    u'ş': u's',    u'Ş': u'S',    u'ğ': u'g',    u'Þ': u'Th',   u'þ': u'th',   u'Ý': u'Y',    u'ý': u'y',    u'': u'',    u'': u'',    u'': u'',    u'': u'',    u'': u'',    
              }                                                                                                                       


def wd_sparql_generator(query):        
  wikidatasite=pywikibot.Site('wikidata',u'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()
  straten = wd_sparql_generator(straatquery)
  for straat in straten:
    if 'P131' in straat.claims:
      if 'nl' in straat.labels:
        gemeente=pywikibot.ItemPage(repo,straat.claims.get('P131')[0].getTarget().title())
        gemeente.get(get_redirect=True)
        if 'nl' in gemeente.labels:
          alias='%s (%s)' % (straat.labels['nl'],gemeente.labels['nl'])
          result=u''
          for i in range(0,len(alias)):
            onechar=alias[i:i+1] 
            if (onechar in conversion):
              result += conversion[onechar]
            else:
              result += onechar
          print(result)
          resultArray=[]
          skip=False
          if ('nl' in straat.aliases): 
           for alias in straat.aliases['nl']:
            if alias==result: 
             skip=True  #alias already set
            else:
             resultArray.append(alias)      
          if (not skip):
            data={}
            resultArray.append(result)
            data.update({'aliases'     :{'nl':resultArray}})
            print(data)
            straat.editEntity(data,summary=u'#nl-straat-alias, [[User:Edoderoobot/straat-alias.py|python code]]')
            print(0/0) #force error, check result manually

main()