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:P31 wd:Q13406463 . ?item rdfs:label ?labelnl FILTER(lang(?labelnl)="nl") ?item rdfs:label ?labelen FILTER(lang(?labelen)="en" && str(?labelnl) = str(?labelen) )}'
def logme(verbose, formatstring, *parameters):
with codecs.open("NL-labelfixer.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):
if ('nl' in wd.labels):
oldlabel=wd.labels['nl']
data={}
if ('nlwiki' in wd.sitelinks):
newlabel = wd.sitelinks['nlwiki']
else:
newlabel = u''
data.update({'labels': { 'nl': newlabel }})
wd.editEntity(data,summary=u'reset nl-label, [https://www.wikidata.org/wiki/User:Edoderoobot/en-nl-label-fixer 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',oldlabel,newlabel,'','','sparql-query')
def main():
print('1')
generator = wd_sparql_generator(query)
print('2')
for oneitem in generator:
if ('nlwiki' in oneitem.sitelinks):
print(oneitem.sitelinks['nlwiki'])
if (False):
main()
else:
site=pywikibot.Site('wikidata','wikidata')
repo=site.data_repository()
wd=pywikibot.ItemPage(repo,'Q26052')
wd.get(get_redirect=True)
action_one_item(wd)
wd=pywikibot.ItemPage(repo,'Q28869')
wd.get(get_redirect=True)
action_one_item(wd)