User:Edoderoobot/normalized label to alias.py

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

query=u'select ?item where { ?item wdt:P31 wd:Q5 . ?item wdt:P27 wd:Q43 . ?item wdt:P106 wd:Q937857 }'
query=u'select ?item where { ?item wdt:P31 wd:Q5 . ?item wdt:P27 wd:Q43 .  }'

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 action_one_item(wd):
  if (not 'nl' in wd.labels): return
  name=wd.labels['nl']
  result=u''
  for i in range(0,len(name)):
    onechar=name[i:i+1] 
    if (onechar in conversion):
      result += conversion[onechar]
    else:
      result += onechar
  
  if (result!=name):  
    if ('nl' in wd.aliases): 
     for alias in wd.aliases['nl']:
      if alias==result: 
       return  #alias already set
    data={}
    resultArray=[]
    resultArray.append(result)
    data.update({'aliases'     :{'nl':resultArray}})
    print(data)
    wd.editEntity(data,summary=u'#normalize-alias, [[User:Edoderoobot/normalized_label_to_alias.py|python code]]')
  else:
    print(name) #to see if more characters should be converted
  
def main():
  
  #wd=pywikibot.ItemPage(pywikibot.Site().data_repository(),'Q1474991')
  #wd.get()
  #action_one_item(wd)
  #print(0/0)
  
  items = wd_sparql_generator(query)
  for oneitem in items:
    action_one_item(oneitem)
  
main()