User:CanaryBot/set-label-desc.py

import logging
import pywikibot
from pywikibot import pagegenerators as pg

query='select ?item where {?item wdt:P31 wd:Q2225692 . ?item wdt:P17 wd:Q252}'
lang='es'
src='id'

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

es_blank = 0
es_filled= 0
for village in wd_sparql_query(query):
    es = ''
    id = ''
    if (src) in village.labels:
        id = village.labels['id']
        if (lang) in village.labels:
            es = village.labels[lang]
            es_filled += 1
            existed = '¡Ya existe la etiqueta en español! Revisar descripción %s-%d-%d-%d-[%s]-<%s>' % (village.title(),100*es_filled / (es_blank+es_filled+1),es_filled,es_blank,es,id)
            print(existed)
            logging.basicConfig(filename='../logs/indonesian-village.log', level=logging.INFO, format='%(asctime)s » %(message)s', datefmt='%d/%m/%Y %I:%M:%S %p')
            logging.info(existed)
        else:
            es_blank += 1
            data = {}
            data.update({'labels':{lang:id}})
            #data.update({'descriptions':'{%s:%s}' % ('es','pueblo de Indonesia')})
            data.update({'descriptions':{'es':'pueblo de Indonesia'}})
            print('[%s]-<%s>' % (es, id))
            try:
                #village.editEntity(data,summary=u'set es-label and es-desc from id-wiki')
                print(data)
                logging.basicConfig(filename='../logs/indonesian-village.log', level=logging.INFO, format='%(asctime)s » %(message)s', datefmt='%d/%m/%Y %I:%M:%S %p')
                logging.info(data)
            except:
                pass
    else:
        notExisted = '¡No existe en indonesio! %s-%d-%d-%d-[%s]-<%s>' % (village.title(),100*es_filled / (es_blank+es_filled+1),es_filled,es_blank,es,id)
        print(notExisted)
        logging.basicConfig(filename='../logs/indonesian-village.log', level=logging.INFO, format='%(asctime)s » %(message)s', datefmt='%d/%m/%Y %I:%M:%S %p')
        logging.info(notExisted)