User:Edoderoobot/normalized label to alias.py

From Wikidata
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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()