#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# (C) Edoderoo/Edoderoobot (meta.wikimedia.org), 2016
#
# Distributed under the terms of the CC-BY-SA 3.0 licence.
#
import pywikibot
from pywikibot import pagegenerators as pg
from pywikibot.data import api
import codecs
import sys
import datetime
from datetime import datetime, date, time
import csv
test=True
#test=False
"""
File format expected columns:
item language label description prop1 prop1value prop2 prop2value prop3 prop3value prop4 prop4value prop5 prop5value prop6 prop6value prop7 prop7value prop8 prop8value prop9 prop9value prop10 prop10value
if item is blank, a new item will be created
right now, one language and 10 properties are supported
"""
def createNewItem(repo):
newmember=repo.editEntity({},{},summary='#import_csv')
newmember=pywikibot.ItemPage(repo,newmember['entity']['id'])
newmember.get()
return newmember
def createClaim(repo,item,P,Q):
newclaim =pywikibot.Claim(repo,P)
newtarget=pywikibot.ItemPage(repo,Q)
newclaim.setTarget(newtarget)
item.addClaim(newclaim,summary='#localGov-tool')
def testHeaderLine():
pass
def process(repo, line):
#print('Process!')
if (line['item']==''):
if (not test): wditem=createNewItem(repo)
else:
wditem=pywikibot.ItemPage(repo,line['item'])
wditem.get(get_redirect=True)
data={}
if (line['language']!='') and (line['description']!=''):
data.update( {'descriptions': {line['language']:line['description']}} )
for i in range (0,10):
propI = '%s%d' % ('prop',i)
propIvalue = '%s%d%s' % ('prop',i,'value')
if (not test):
wditem.editEntity(data,summary=u'nl-description, [[User:Edoderoobot/Set-nl-description|python code]], logfile on https://goo .gl/A7LJXo')
else:
print(data)
def wd_from_file(usefilename):
#print('There we go: %s'%(usefilename))
csvfile=open(usefilename,'r')
reader = csv.DictReader(csvfile,delimiter=',', quotechar='\"')
for a_line in reader:
yield a_line
def main(usefilename):
repo=pywikibot.Site('wikidata','wikidata').data_repository()
for a_line in wd_from_file(usefilename):
process(repo,a_line)
if (len(sys.argv)>1):
main(sys.argv[1])
else:
print('give a CSV-file as a parameter: %d', len(sys.argv))