Vés al contingut

Viquiprojecte:Grup Tècnic/Formació tècnica 2015/codi.py

De la Viquipèdia, l'enciclopèdia lliure
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pwb
import pywikibot
import sys
import codecs
import json
import re

def afegeixLiniaPropietat(nomArticle, propietat, literal, tipus):
	if tipus == "Q":
		f2.write("{}\t{}\t{}\tS143\tQ1067140\n".format(nomArticle, propietat, literal))
	if tipus == "S":
		f2.write("{}\t{}\t\"{}\"\tS143\tQ1067140\n".format(nomArticle, propietat, literal))		
def formatdataglobal(data, precisio):
	data = "%011d" % (int(data))
	data = (u'+%s-01-01T00:00:00Z/%s') % (data, precisio)
	return data
 
def formatdata(data):
	"""Exemples:
		1900
		1900-1910
		ca. 1900
		Ca.1900
		s.d
		c. 1900
		ca. 1945-1949
	"""
	if data=="s.d" or data=="s.d.":
		return ("", "", "")
	data = data.replace("c.","ca. ")
	has_circa = "ca." in data.lower()
	anycreacio = data.lower().replace(" ", "").replace("ca.", "")
	anycreacio = anycreacio.split(u"-")
	if len(anycreacio) == 1:
		return (formatdataglobal(anycreacio[0], u"09"), "", "")
 
	else:
		decada = str((int(anycreacio[0])//10)*10)
		return (formatdataglobal(anycreacio[0], u"09"), formatdataglobal(anycreacio[1], u"09"), formatdataglobal(decada, u"08"))
 
try:
	f1 = codecs.open('MACBA.json', 'r', 'utf8')
except (OSError, IOError) as e:
	print u'No trobo el fitxer o no el sé obrir.'
	exit(0) 
 
try:
	f2 = codecs.open('MACBAStatement.txt', 'ab', 'utf8')
except (OSError, IOError) as e:
	print u'No trobo el fitxer o no el sé obrir.'
	exit(0) 
 
txt = f1.read()
f1.close()
jsonObject = json.loads(txt)
 
for item in jsonObject:
	f2.write(u"CREATE\n")
	if item["R_"]:
		afegeixLiniaPropietat(u"LAST", u"P217", item["R_"], u"S") #inventari
	afegeixLiniaPropietat(u"LAST", u"P31", u"Q1067140", u"Q") #quadre
	if item["DATA"]:
		any_min, any_max, decada = formatdata(item["DATA"])
		if any_max:
			f2.write("{}\t{}\t{}\t{}\t{}\t{}\t{}\tS143\tQ1067140\n".format(u"LAST", u"P571", decada, u"S1326", any_min, u"S1326", any_max))
		elif any_min:
			afegeixLiniaPropietat(u"LAST", u"P571", any_min, u"S") #data
	afegeixLiniaPropietat(u"LAST", u"Lfr", item["TÍTOL"], u"S") #data
	afegeixLiniaPropietat(u"LAST", u"P195", u"Q1067140", "Q") #colleccio
	afegeixLiniaPropietat(u"LAST", u"P276", u"Q1067140", "Q")  #situat/da