Usuari:ArnauBot/migrar

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding: utf-8 -*-
"""
Descripció:
	migrar_variant fa una llista de cada paràmetre que no es troba (un sol cop)
	aquest fa per cada article, els paràmetres que no s'han trobat

"""
#
#  (C) Arnaugir 2014
#
# Distributed under the terms of the MIT license.
#
#

import os, sys, re, codecs, time
from wikitools import wiki
from wikitools import api
from wikitools import page
from wikitools import category
from wikitools import pagelist
import mwparserfromhell

from datetime import datetime
from datetime import timedelta
import json
from pprint import pprint

site = wiki.Wiki("http://ca.wikipedia.org/w/api.php")
site.login("ArnauBot",password="...",remember=True)

params = {
'action'    :'query',
'list'      :'categorymembers',
'cmtype'    :'page',
'cmtitle'   :u'Categoria:Articles que utilitzen la plantilla obsoleta Infotaula Monarca',
'rawcontinue':'1'
}
request = api.APIRequest(site, params)
data = pagelist.listFromQuery(site,request.query()['query']['categorymembers'])

l=""
dictParams = {u"name":u"nom","nom complet":"nom de naixement","sobrenom":"altres noms","alias":"altres noms",u"altres_noms":"altres noms","honorific prefix":u"prefix honorífic","honorifix-prefix":"tractament","honorific_prefix":u"prefix honorífic","tractament":u"prefix honorífic","honorifix suffix":u"sufix honorífic","honorific_suffix":u"sufix honorífic",u"encapçalat":u"sufix honorífic","residence":u"residència","children":"fills","alma_mater":"alma mater","data_de_naixement":"data de naixement","birth_date":"data de naixement","lloc_de_naixement":"lloc de naixement","birth_place":"lloc de naixement",u"data de defunció":u"data de mort",u"data_de_defunció":u"data de mort",u"death_date":u"data de mort","lloc de defunció":"lloc de mort","lloc_de_defunció":"lloc de mort","death_place":"lloc de mort",u"death_cause":"causa de mort",u"causa defunció":"causa de mort",u"causa_defuncio":"causa de mort","nationality":"nacionalitat","citizenship":"ciutadania","ethnicity":u"ètnia","image":"imatge","imagesize":"mida","text imatge":"peu","caption":"peu","burial":"sepultura","burial_place":"sepultura","enterrament":"sepultura",u"resting_place_coordinates":"coordenades lloc sepultura",u"coordenades_lloc_enterrat":"coordenades lloc sepultura","spouse":u"cònjuge","relations":"pares","party":"partit","profession":u"professió","religion":u"religió","education":u"educació",u"conegut_per":"conegut per",u"known":"conegut per",u"known_for":"conegut per",u"known for":"conegut per","occupation":u"ocupació",u"professió":u"ocupació",u"profession":u"ocupació",u"years active":u"període en actiu",u"years_active":u"període en actiu",u"anys en actiu":u"període en actiu",u"anys_en_actiu":u"període en actiu",u"organization":u"organització",u"organizations":u"organització",u"organitzacions":u"organització","employer":"ocupador","empleat":"ocupador",u"altrestítols":u"títol",u"altres títols":u"títol",u"notable works":"obres notables",u"notable_works":"obres notables",u"obres destacades":"obres notables",u"height":u"alçada",u"weight":u"pes",u"color d'ulls":u"ulls",u"Color de cabell":u"cabell",u"genre":u"gènere",u"genere":u"gènere",u"movement":u"moviment",u"style":u"estil",u"salary":u"sou",u"salari":u"sou",u"net worth":u"valor net",u"net_worth":u"valor net",u"networth":u"valor net",u"valor_net":u"valor net","casa reiale":"casa reial","dinastia":"dinastia","signature":"signatura","amplada signatura":"signatura_mida","footnotes":"notes","website":"lloc_web","web":"lloc_web","office":u"càrrec","order":u"càrrec","term_start":"inici","term_end":"final","president":"a_nom","monarca":"a_nom","monarch":"a_nom","primeminister":"b_nom","prime_minister":"b_nom","vicepresident":"e_nom","deputy":"f_nom","constituency":"k_nom","office2":u"càrrec2","order2":u"càrrec2","term_start2":"inici2","term_end2":"final2","president2":"a_nom2","monarca2":"a_nom2","monarch2":"a_nom2","primeminister2":"b_nom2","prime_minister2":"b_nom2","vicepresident2":"e_nom2","deputy2":"f_nom2","constituency2":"k_nom2","office3":u"càrrec3","order3":u"càrrec3","term_start3":"inici3","term_end3":"final3","president3":"a_nom3","monarca3":"a_nom3","monarch3":"a_nom3","primeminister3":"b_nom3","prime_minister3":"b_nom3","vicepresident3":"e_nom3","deputy3":"f_nom3","constituency3":"k_nom3","office4":u"càrrec4","order4":u"càrrec4","term_start4":"inici4","term_end4":"final4","president4":"a_nom4","monarca4":"a_nom4","monarch4":"a_nom4","primeminister4":"b_nom4","prime_minister4":"b_nom4","vicepresident4":"e_nom4","deputy4":"f_nom4","constituency4":"k_nom4","office5":u"càrrec5","order5":u"càrrec5","term_start5":"inici5","term_end5":"final5","president5":"a_nom5","monarca5":"a_nom5","monarch5":"a_nom5","primeminister5":"b_nom5","prime_minister5":"b_nom5","vicepresident5":"e_nom5","deputy5":"f_nom5","constituency5":"k_nom5","office6":u"càrrec6","order6":u"càrrec6","term_start6":"inici6","term_end6":"final6","president6":"a_nom6","monarca6":"a_nom6","monarch6":"a_nom6","primeminister6":"b_nom6","prime_minister6":"b_nom6","vicepresident6":"e_nom6","deputy6":"f_nom6","constituency6":"k_nom6","office7":u"càrrec7","order7":u"càrrec7","term_start7":"inici7","term_end7":"final7","president7":"a_nom7","monarca7":"a_nom7","monarch7":"a_nom7","primeminister7":"b_nom7","prime_minister7":"b_nom7","vicepresident7":"e_nom7","deputy7":"f_nom7","constituency7":"k_nom7","office8":u"càrrec8","order8":u"càrrec8","term_start8":"inici8","term_end8":"final8","president8":"a_nom8","monarca8":"a_nom8","monarch8":"a_nom8","primeminister8":"b_nom8","prime_minister8":"b_nom8","vicepresident8":"e_nom8","deputy8":"f_nom8","constituency8":"k_nom8","office9":u"càrrec9","order9":u"càrrec9","term_start9":"inici9","term_end9":"final9","president9":"a_nom9","monarca9":"a_nom9","monarch9":"a_nom9","primeminister9":"b_nom9","prime_minister9":"b_nom9","vicepresident9":"e_nom9","deputy9":"f_nom9","constituency9":"k_nom9","successor":"successor","predecessor":"predecessor","predecessor2":"predecessor2","successor2":"successor2","predecessor3":"predecessor3","successor3":"successor3","predecessor4":"predecessor4","successor4":"successor4","predecessor5":"predecessor5","successor5":"successor5","predecessor6":"predecessor6","successor6":"successor6","predecessor7":"predecessor7","successor7":"successor7","predecessor8":"predecessor8","successor8":"successor8","predecessor9":"predecessor9","successor9":"successor9", u"escut càrrec":u"escut càrrec",u"escut càrrec2":u"escut càrrec2", u"escut càrrec3":u"escut càrrec3", u"escut càrrec4":u"escut càrrec4", u"escut càrrec5":u"escut càrrec5", u"escut càrrec6":u"escut càrrec6", u"escut càrrec7":u"escut càrrec7", u"escut càrrec8":u"escut càrrec8", u"escut càrrec9":u"escut càrrec9"}

#falta: etiqueta_dinastia
# si hi ha parametres que vulguem mantenir encara que estiguin buits, cal afegirlos, encara que siguin ells mateixos (ex "successor":"successor")
i=0;
for item in data:
	i=i+1;
	wikipage = item
	print item
	if (wikipage.exists):
		text = wikipage.getWikiText().decode('utf-8', 'replace')
		code = mwparserfromhell.parse(text)
		t=code.filter_templates();
		l=l+"* [["+item.title+"]]: "
		llistaManquen=[]
		for template in t:
			llistaRemove=[]
			if  template.name.matches((u"Monarca",u"Infotaula Monarca", u"Infotaula_Monarca", u"Infotaula de noble", u"Infotaula_de_noble")):
				for param in template.params:
					p=param.name.strip()
					if p in dictParams:
						param.name.replace(p, dictParams[p])  
						if p=="dinastia": template.add("etiqueta_dinastia","Dinastia",before="dinastia")
						if p=="casa reial": template.add("etiqueta_dinastia","Casa reial",before="casa reial")


					else:
						if (p not in dictParams) and (p not in dictParams.values()):
							if unicode(param.value).strip() == "": #si no té valor el paràmetre, ens el carreguem directament (aixi ho demana amador) i no el llistem pas
								llistaRemove.append(param)
							else:
								if unicode(p) not in llistaManquen:
									llistaManquen.append(p)
				if template.has("1"): template.remove("1")
				if template.has("dead"): template.remove("dead")
				if template.has("width"): template.remove("width")
				if template.has("height"): template.remove("height")
				if template.has("mida d'imatge"): template.remove("mida d'imatge")
				template.name.replace(template.name.strip(), u"Infotaula de polític")
				template.add("colorprofessio","monarca",before=template.params[0]) #afegir al principi

			for k in range(0,len(llistaRemove)): #cal ferho aqui pq si no funciona malament el mwpfh
				template.remove(llistaRemove[k])
		for j in range(0,len(llistaManquen)):
			l=l+"<tt>"+llistaManquen[j]+"</tt>, "
		l=l+"\n"
		textmodif = unicode(code)
		try: #fem try-except per si la pàgina està protegida, llavors s'ho salta
			wikipage.edit(text=textmodif,bot="yes",summary=u"Robot migra infotaula Monarca a infotaula Polític. Vegeu [[Viquiprojecte:Adaptació de plantilles a Wikidata/infotaules biogràfiques|VP:Adaptació plantilles]]",skipmd5=True)
			time.sleep(3)
		except:
			time.sleep(1)
		if i==10000:
			break;	
		
				
text="Per cada article, s'han trobat aquests parametres que no tenia contemplats:\n\n"+l
wikipage = page.Page(site, title="Usuari:ArnauBot/Articles editats")
textmodif = unicode(text)
wikipage.edit(text=textmodif,bot="yes",summary=u"Robot actualitza amb informació per l'amadalvarez",skipmd5=True)