User:Edoderoobot/import wd from csv.py

#!/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))