Vés al contingut

Viquipèdia:Viquitrobada 2009/Taller de bots/Amical-bot.v0

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding:utf-8 -*-
	
global idioma, pagina_er, usuari, pagina_origen	, titol_de_la_pagina
#Carrega mòduls
import wikipedia, codecs, re, catlib
import re

import  httplib, time, urllib
from time import strftime as date


def executa_er(pagina_amb_er, text):
	#Funció per executar sobre un text, les expressions regulars emmagatzemades en una pàgina
	troba_les_er=re.compile("(?<=\n\*).*")
	errors_trobats = re.compile("== Errors trobats ==")
	pagina = wikipedia.Page( wikipedia.getSite("ca","wikipedia"), pagina_amb_er)
	try:
		pagina_expressions = pagina.get()
	except:
		return text
	expressions=troba_les_er.findall(pagina_expressions)
	errors_ja_trobats = errors_trobats.findall(pagina_expressions) #Els errors ja s'han trobat en un altre traducció
	errors_nous = 0
	maxim=len(expressions)
	i=0
	#Cerca i substitueix cada una de les expresions regulars
	while i < maxim:
		try:
			titol = re.compile(expressions[i])
		except:
			if len(errors_ja_trobats)>0:
				if errors_nous == 0:
					pagina_expressions = pagina_expressions+"\n== Errors trobats ==\n"
					errors_nous = 1
				pagina_expressions = pagina_expressions + u"l'expressió regular '"+expressions[i]+u"' no s'ha pogut compilar\n"
				pagina.put(pagina_expressions,u"bot notificant error en expressió regular")
			i=i+2
			continue
		try:
			text = titol.sub(expressions[i+1],text)
		except:
			if len(errors_ja_trobats)>0:
				if errors_nous == 0:
					pagina_expressions = pagina_expressions+"\n== Errors trobats ==\n"
					errors_nous = 1
				pagina_expressions = pagina_expressions + u"l'expressió '"+expressions[i+1]+u"' ha donat error al substituir\n"
				pagina.put(pagina_expressions,u"bot notificant error en expressió regular")
		i=i+2
	return text

def preprocessa(text,pagina):
	noutext = executa_er("Usuari:Jrgoma/Pre", text)
	#Grava la pàgina modificada	
	pagina.put(noutext,u'bot preprocessant article previ a la traduccioo automatica')
	
def postprocessa(text,pagina):
	noutext = executa_er("Usuari:Jrgoma/Post", text)
	#Grava la pàgina modificada	es pot eliminar quen ja funcioni i tornar el nou text
	pagina.put(noutext,u'bot postprocessant article despres de la traduccioo automatica')
	return noutext

 
def getURL(title, lang):
	#funció per cridat el traducor automàtic de gencat torna el text del article traduit al català
	#si el traductor està fora de servei hauria de tornar ''
    print 1
    page   = wikipedia.Page(wikipedia.getSite('ca'), title)
    tr_dir = {"en": "ENGLISH-CATALAN", "fr": "FRENCH-CATALAN", "de": "GERMAN-CATALAN", "es": "SPANISH-CATALAN"}
    if lang not in tr_dir:
		return 'idioma no suportat'
    tr_dir = tr_dir[lang]
  
    url    = u"http://%s.org%s" % (
        ".".join(page.site().sitename().split(":")[::-1]),
        page.site().edit_address(page.urlname()).split("&useskin=monobook")[0]
    )
    url    = "http://%s.wikipedia.org/wiki/%s?action=edit" % ('ca', urllib.quote(title.encode("utf-8")))
    print 2
    params ={
        "translationDirection": tr_dir,
        "subjectArea": "GV",
        "MARK_ALTERNATIVES": "0",
        "url": url
    }
    params = urllib.urlencode(params)
    user_agent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB6"
    headers= {
        'User-Agent': user_agent,
        "Content-type": "application/x-www-form-urlencoded",
        "Accept": "text/plain",
    }
    data=None
    print 3
    print params
    retry=0
    while data is None:
        print 4
        try:
            conn = httplib.HTTPConnection('traductor.gencat.net')
            print 5
            conn.request("POST", "/url.do", params, headers)
            response = conn.getresponse()
            data = response.read()
        except KeyboardInterrupt:
            print 6
            print u"l'usuari ha cancel·lat"
            break
        except Exception, e:
            print 7
            print e, retry
            retry+=1
            retry_time = retry*2
            if retry_time>30:
                retry_time =30
            time.sleep(retry_time*60)
            if retry>=30:break
    textarea = re.compile(r"^.*<textarea[^>]*>(.+?)</textarea>.*$", re.DOTALL)
    data = textarea.sub(ur"\1", data)
    data = wikipedia.html2unicode(data)
    return data

def titol_catala(idioma,titol):
	#Funció per trobar el títol en català d'una pàgina donada en l'idioma origen
	#Si la pàgina en l'idioma oringinal no exiteix o no té interwiki en català retorna ''
	#Altrament retorna el títol de la pàgina en catalá en majúscules o minúscules segon estigui el títol de la pàina original.
	interwikicatala=re.compile("(?<=\[\[ca:)[^|\]]+")
	page = wikipedia.Page( wikipedia.getSite(idioma,"wikipedia"), titol) 
	try:
		# Carrega la pàgina
		contingut = page.get(get_redirect = True)
	except wikipedia.NoPage:
		# L'enllaç en l'idioma original no existeix
		return ''
	enllaccatala=interwikicatala.search(contingut)
	if enllaccatala:
		enllacara=enllaccatala.group(0)
		#posar la primera lletra en minúscules si l'enllaç original la tenia.
		if titol[0]==titol[0].lower():
			enllacara=enllacara[0].lower()+enllacara[1:]
		return enllacara
	else:
		#A l'article en lidioma original no hi ha interwiki al català
		return ''

def tradueixenllacos(idioma,text,text_desti,paginadesti):
	noutext = text
	noutext_desti = text_desti

	#Prepara expressions regulars
	'''
	* p : és una expressió regular per trobar enllaços interns comença per dos claudators, 
	      segueix per una cadena de qualsevol caracter sense sense :  per evitar agafar imatges, 
	      categories i interwikis i acaba amb dos claudators es posa el ? per evitar que empalmi dos
	      enllaços interns diferents
	* parentesis i tancaparentesis : per cercar parèntesis
	* cerca : per agafar la cadena amb el nom de l'article eliminant els claudators, el | i el #
	'''
	p = re.compile('(\[\[[^:]*?]])')
	parentesis=re.compile("[\(]")
	tancaparentesis=re.compile("[\)]")
	cerca=re.compile("[^[#|\]]+") 

	#Trobar tots els elnllaços interns de la pagina a traduir
	enllacos=p.findall(text)
	maxim = len(enllacos)

	#Trobar tots els elnllaços interns de la pagina destí
	enllacos_desti=p.findall(text_desti)
	maxim_desti = len(enllacos_desti)

	#Intenta traduir cada un dels enllaços
	i=0
	while i < maxim:
		print u'Enllaços fets:', i, 'de:', maxim
		#Li treu els claudators i el | es queda amb el nom de l'article
		enllac=cerca.search(enllacos[i])
		enllac_desti=cerca.search(enllacos_desti[i])
		wikipedia.output(enllacos[i])
		i=i+1
		llegir=enllac.group(0)
		llegir_desti=enllac_desti.group(0)
		enllacara = titol_catala(idioma,llegir)
		if enllacara != '' :
			llegir_desti = parentesis.sub(r'[\\(]',llegir_desti)
			llegir_desti = tancaparentesis.sub(r'[\\)]',llegir_desti)
			canviar=re.compile("(?<=\[\[)"+llegir_desti)
			#Substitueix el nom de l'artice enllçat en l'altre idioma pel nom en català
			noutext_desti = canviar.sub(enllacara,noutext_desti)
	#Grava la pàgina modificada	(es pot eliminar quent vagi be el programa
	paginadesti.put(noutext_desti,u'bot traduint automaticament enllaços internes')	
	return noutext_desti

def tradueixplantilles(idioma,text,text_desti,paginadesti):
    #PENDENT DE FER QUE TAMBÉ AGAFI PLENTILLES AMB SALTS DE LÍNIA AL INTERIOR
	noutext = text
	noutext_desti = text_desti

	#Llegeix la pàgina amb el tractament de les plantilles
	paginatractament = wikipedia.Page( wikipedia.getSite('ca',"wikipedia"), 'Usuari:Jrgoma/Plantilles/'+idioma)  
	tractament = paginatractament.get()

	#Prepara expressions regulars
	'''
	p és una expressió regular per trobar plantilles
	q és una ER per trobar el nom de la plantilla
	r per trobar les variables
	s per separar el nom i el valor de cada variable
	t per trobar les instruccions de traducció de plantilles
	u per trobar les instruccions de cada variable de la plantilla
	v per trobar el títol de la plantilla en les instruccions de traducció
	w per trobar la traducció del títol de la plantilla
	t1 per treure els | entre claudat de dins de les plantilles es substiuiran per {{ segur que no hi és dins
	t2 per tornar a posar els | entra claudatos es cerca els {{
	'''
	p = re.compile('{{.+?}}')
	q = re.compile('(?<={{).+?(?= *[\|}])')
	r = re.compile('(?<=\|).+?(?=[\|}])')
	s = re.compile('.+(?=[=])|(?<=[=]).+')
	t = re.compile('[^)]+\)')
	u = re.compile('(?<=[\*][\*])[^\*]*?(?=[\n\)])')
	v = re.compile('(?<=\*\*\*).*?(?=\n)')
	w = re.compile('(?<=\().*?(?=[\n\)])')
	t1 = re.compile('(\[\[.*?)\|(.*\]\])')
	t2 = re.compile('(\[\[.*?){{(.*\]\])')
	#cadena i cadena2 per funconar amb t1 i t2
	cadena='\\1{{\\2'
	cadena2='\\1|\\2'

	#Trobar totes les plantilles de la pagina a traduir
	plantilles=p.findall(text)
	maxim = len(plantilles)

	#Trobar totes les plantilles de la pagina destí
	plantilles_desti=p.findall(text_desti)
	maxim_desti = len(plantilles_desti)

	#Trobar totes les instruccions de tractament
	instruccions=t.findall(tractament)
	maxim_instruccions = len(instruccions)

	'''
	Crear diccionaris a partir de les instruccions
	* traduccio_titol, és un diccionari que a cada títol de plantilla li asigna la seva traducció
	* traducció_variable, és un diccionari de diccionaris, a cada títol de plantilla li assigna el 
	diccionari de traducció de noms de variables (aquest a cada nom li assigna la seva traducció)
	* traduccio_tractament, altre diccionari de diccionaris, a cada títol de plantilla li assigna e
	un diccionri que a cada nom de variable li assigna el tipus de tractament que s'ha de donar al
	valor de la variable.
	'''
	traduccio_titol = {}
	traduccio_variable = {}
	tractament_variable = {}
	i=0
	while i < maxim_instruccions:
		#Trobar el títol
		titol = v.findall(instruccions[i])[0]
		#afegir al diccionari la traducció del títol
		traduccio_titol[titol] = w.findall(instruccions[i])[0]
		#trobar totes les instruccions de cada variable
		variables = u.findall(instruccions[i])
		maxim_variables = len(variables)
		#Crear diccionaris amb la traducció i el tractament de cada variable dins la plantilla
		j = 1
		diccionari_traduccio = {}
		diccionari_tractament = {}
		contavariables = 1
		while j+2 < maxim_variables:
			nomvariable = variables[j]
			if nomvariable == '':
				nomvariable = contavariables
				contavariables = contavariables +1
			diccionari_traduccio[nomvariable] = variables[j+1]
			diccionari_tractament[nomvariable] = variables[j+2]
			j = j+3
		#afegir aquests diccionaris als diccionaris de diccionaris 
		traduccio_variable[titol] = diccionari_traduccio
		tractament_variable[titol] = diccionari_tractament
		i = i+1

	#Intenta traduir cada una de les plantilles
	i=0
	while i < maxim:
		print u'Plantilles fetes', i, 'de:', maxim
		plantilla = plantilles[i]
		plantilla_desti = plantilles_desti[i]
		#treu | entre claudators de plantilla i de plantilladesti
		plantilla = t1.sub(cadena, plantilla)
		plantilla_desti = t1.sub(cadena, plantilla_desti)
		#cerca el nom de la plantilla a traduir
		nomplantilla = q.findall(plantilla)[0]
		nomplantilla = nomplantilla[0].upper()+nomplantilla[1:]
		#compila expressio regular de la plantilla desti per podrla substituir
		pre_er_plantilla_desti = plantilles_desti[i]
		# substituir "metacaracter" per \"metacaracter"
		#barres = re.compile('([\^\$\*\+\?\{\}\[\]\|\(\)])')
		barres = re.compile('([\|\.\^\$\*\+\?\{\}\[\]\(\)])')
		pre_er_plantilla_desti = barres.sub('\\\\\\1',pre_er_plantilla_desti)
		er_plantilla_desti = re.compile(pre_er_plantilla_desti)
		#si la plantilla no té instruccions per traduir-la deixa la original i continua
		if not(nomplantilla in traduccio_titol):
			noutext_desti = er_plantilla_desti.sub(plantilles[i],noutext_desti)
			i = i+1
			continue
		
		#tradueix el títol de la plantilla
		plantilla_traduida = '{{'+traduccio_titol[nomplantilla]
		
		#tradueix i tracta les variables
		
		#troba les variables
		variables = r.findall(plantilla)
		variables_desti = r.findall(plantilla_desti)
		maxim_variables = len(variables)
		j = 0
		contavariables = 1
		while j < maxim_variables:
			variable = variables[j]
			variable_desti = variables_desti[j]
			#separa nom i valor
			dades_variable = s.findall(variable)
			dades_variable_desti = s.findall(variable_desti)
			if len(dades_variable)>0:
				nom_variable = dades_variable[0]
				#elimina espais an blanc al començament del nom
				while nom_variable[0] == ' ':
					nom_variable = nom_variable[1:]
				valor_variable = dades_variable[1]
				valor_variable_desti = dades_variable_desti[1]
				#vigilar si no esta definida la variable
				if nom_variable in traduccio_variable[nomplantilla]:
					plantilla_traduida = plantilla_traduida + '|'+traduccio_variable[nomplantilla][nom_variable] +' = '
				else:
					plantilla_traduida = plantilla_traduida + '|'+nom_variable +' = '
			else:
				valor_variable = variable
				valor_variable_desti = variable_desti
				nom_variable = contavariables
				contavariables = contavariables + 1
				plantilla_traduida = plantilla_traduida + '|'
			#vigilar si no esta definida la variable
			if nom_variable in tractament_variable[nomplantilla]:
				tractament = tractament_variable[nomplantilla][nom_variable]
			else:
				tractament = 'N'
			if tractament == 'N':
				plantilla_traduida = plantilla_traduida + valor_variable
			elif tractament == 'S':
				plantilla_traduida = plantilla_traduida + valor_variable_desti
			elif tractament == 'TEI':
				titol = titol_catala(idioma,valor_variable)
				if titol == '':
					plantilla_traduida = plantilla_traduida + valor_variable_desti
				else:
					plantilla_traduida = plantilla_traduida + titol		
			j = j+1
		i = i+1	
		
		#tanca la plantilla amb }}
		plantilla_traduida = plantilla_traduida + '}}'
		#torna a posar els | en lloc dels {{ entre claudators
		plantilla_traduida = t2.sub(cadena2, plantilla_traduida)
		
		#substitueix la plantilla per la seva traducció
		noutext_desti = er_plantilla_desti.sub(plantilla_traduida,noutext_desti)
	#Grava la pàgina modificada	
	paginadesti.put(noutext_desti,u'bot traduint automaticament plantilles')
	return noutext_desti

def intercala(idioma,text,text_desti,paginadesti,pagina_original):
	#p és una expressió regular per trobar els salts de línia
	p = re.compile('.*?\n')

	#Trobar tots els parragrafs de la pagina orignal
	parragraforiginal=p.findall(text)
	maxim = len(parragraforiginal)

	#Trobar tots els parragrafs de la pagina traduida
	parragraftraduida=p.findall(text_desti)
	maxim_desti = len(parragraftraduida)
	print maxim, maxim_desti
	#Intercala els parragrafs de la pàgina traduida i la pàgina original
	i=0
	j=0
	resultat=''
	while i < maxim:
		if j < maxim_desti:
			#Per saltar pàrragrafs sense text indrouits a la ptraducció autmàtica
#			while len(parragraforiginal[i])/2>len(parragraftraduida[j]) and j+1 < maxim_desti:
#				j=j+1
			resultat=resultat+parragraforiginal[i]+'\n'+parragraftraduida[j]+'\n'
		else:
			resultat=resultat+parragraforiginal[i]
		i=i+1
		j=j+1
	#posa plantilla de traducció i interwiki al idioma original
	plantilla = u'{{Traducció|' + idioma + '|' + pagina_original + '}}\n'
	interwiki = '[[' + idioma + ':' + pagina original + ']]'
	resultat = plantilla + resultat + interwiki
	#Grava la pàgina modificada	
	paginadesti.put(resultat,u'bot intercalant text original amb text traduït')
	return resultat

	
def preprocessa(text,pagina):
	noutext = executa_er("Usuari:Jrgoma/Pre", text)
	#Grava la pàgina modificada	
	pagina.put(noutext,u'bot preprocessant article previ a la traduccioo automatica')
	return noutext
	
	
def arreglatraduccio(text,pagina_er,pagina):
	noutext = text
	if pagina_er != '':
		noutext = executa_er(pagina_er, text)
		#Grava la pàgina modificada	
		pagina.put(noutext,u'bot arreglant traducció automàtica amb les er de [['+ pagina er +']]')
	return noutext
	

	
def trobaparametres(pagina):
	#trobal els paràmetres de la plantilla de la pàgina i llegeix la pàgina a traduir
	global idioma, pagina_er, usuari, pagina_origen, pagina_original, titol_de_la_pagina
	plantilla = re.compile('(?<=\[\[)Usuari Discu.*(?=\|)')
	parametres = pagina.templatesWithParams()
	if len(parametres) == 0:
		#No hi ha plantilla, algú ha posat aquesta categoria a un article sense posar la plantilla
		categoria = re.compile(u'.*[[.*Categoria:.*Peticions de.*traducci. autom.tica.*]].*')
		text = pagina.get()
		text = categoria.sub('',text)
		pagina.put(text, u'bot el·lininant la categoria de petició de traduccuó: manca de plantilla')
		return 'no hi ha plantilla'
	idioma = parametres [0][1][0]
	pagina_original = parametres [0][1][1]
	pagina_er = ''
	usuari = ''
	if len(parametres [0][1])>3:
		pagina_er = parametres [0][1][2]
		usuari_avisa = plantilla.findall(parametres [0][1][3])
		if len(usuari_avisa) > 0:
			usuari = usuari_avisa[0]
		else:
			usuari = usuari_avisa
	pagina_2 = wikipedia.Page( wikipedia.getSite(idioma,"wikipedia"), pagina_original) 
	try:
		pagina_origen = pagina_2.get()
	except wikipedia.NoPage:
		#La pàgina no existeix
		#treure la plantilla
		text = pagina.get()
		plantilla2 = re.compile('{{.*[Pp]etici. de traducci..*}}')
		text = plantilla2.sub('', text)
		avisar_usuari('no hi ha pagina origen', titol_de_la_pagina)
		pagina.put(text, u'bot el·lininant la plantilla de petició de traduccuó: manca pàgina en idioma original')
		return 'no hi ha pagina origen'




def avisar_usuari(missatge, titol_de_la_pagina):
	#deixa un missatge a la pàgina de discussió del usuari informant del proces de les seves peticions
	global idioma, pagina_er, usuari, pagina_origen, pagina_original
	if missatge == 'traductor_down':
		resultat = u" no s'ha pogut completar degut a que en aquest moment el traductor automàtic no està disponible, es tornarà a intentar més tard. Si voleu podeu traduir-la amb un altre traductor automàtic i canviar la plantilla a 'Petició de tradució b' llavors el robot amical-bot continuarà el postprocés."
	elif missatge == 'preproces fet':
		resultat = u" s'ha preprocessat. Heu d'emprar un traductor automatic extern per traduir-lo del {{" +  idioma + u"}} donat que el traductor intern no el té incorporat, en acabar canvieu la plantilla a 'Petició de tradució b' llavors el robot amical-bot continuarà el postprocés."
	elif missatge == 'fet':
		resultat = u" s'ha completat amb èxit."
	elif missatge == 'no hi ha pagina origen':
		resultat = u" no es pot fer degut a que no existeix la pàgina sol·licitada en l'idioma origen."
	missatge = u"\n== Petició de traducció ==\nLa vostra petició de traducció de l'article [[" + titol de la pagina + "]]" + resultat
	pagina = wikipedia.Page( wikipedia.getSite('ca',"wikipedia"), usuari) 
	pagina_discusio = pagina.get()+missatge
	pagina.put(pagina_discusio,u'bot enviant missatge sobre petició de traducció automàtica')
	


def despresdetraduccioautomatica(traduit,pagina, titol_de_la_pagina):
	#acaba la feina despres de la acció d'un traductor automatic
	postprocessat = postprocessa(traduit,pagina)
	enllactraduit = tradueixenllacos(idioma,pagina_origen,postprocessat,pagina)
	plantillatraduida = tradueixplantilles(idioma,pagina_origen,enllactraduit,pagina)
	traduccioarreglada = arreglatraduccio(plantillatraduida,pagina_er,pagina)
	intercala(idioma,pagina_origen,traduccioarreglada,pagina,pagina_original)
	avisar_usuari('fet', titol_de_la_pagina)


def buidarpeticionsnoves():	
	global idioma, pagina_er, usuari, pagina_origen, pagina_original, titol_de_la_pagina
	#tradueix les pàgines de la categoria "Peticions de còpia i preprocés per traducció automàtica" si gencat esta down les preprocessa i la 
	#passa a la categoria "Peticions de traducció automàtica" canviant la plantilla
	projecte = wikipedia.getSite()
	cat = catlib.Category(projecte, u"Categoria:Peticions de còpia i preprocés per traducció automàtica")
	pagines = cat.articles()
	for pagina in pagines:
		titol_de_la_pagina = pagina.title()
		if titol_de_la_pagina == u'Plantilla:Petició de traducció' or titol_de_la_pagina == u'Plantilla:Petició de traducció/ús' :
			continue
		resultat = trobaparametres(pagina)
		if resultat == 'no hi ha plantilla' or resultat == 'no hi ha pagina origen':
			continue
		#copia la pàgina original sobre la actual, va be per poder veure la diferencia amb el preprocessat
		pagina.put(pagina_origen,u"bot copiant article de {{"+idioma+"}}[[W:"+idioma+":"+pagina_original+"]]")
		preprocessada = preprocessa(pagina_origen,pagina)
		traduitgencat = getURL(titol_de_la_pagina, idioma)
		if traduitgencat == 'idioma no suportat':
			# No s'ha traduit perquè l'idioma no està suportat, canviar plantilla a "a"
			plantilla = u"{{ Petició de traducció a|" + idioma + "|" + pagina_original + "|" + pagina_er + "| [[" + usuari + "]] }}"
			preprocessada = plantilla + treuprimeraplantilla(preprocessada)
			pagina.put(preprocessada,u"bot canviant plantilla, preprocés fet")
			avisar_usuari('preproces fet',titol_de_la_pagina)
			continue	
		if traduitgencat != '':
			pagina.put(traduitgencat,u"bot traduint article al català")
			despresdetraduccioautomatica(traduitgencat,pagina, titol_de_la_pagina)
		else:
			#No s'ha traduït perquè el traductor està fora de servei canviar plantilla a "b"
			plantilla = u"{{ Petició de traducció b|" + idioma + "|" + pagina_original + "|" + pagina_er + "| [[" + usuari + "]] }}"
			preprocessada = plantilla + treuprimeraplantilla(preprocessada)
			pagina.put(preprocessada,u"bot canviant plantilla per interrupció del servei de traducció")
			avisar_usuari('traductor_down',titol_de_la_pagina)
			continue


def treuprimeraplantilla(text):
	#treu la plantilla de petició de traducció i només deixa el que hi ha al darrete
	p = re.compile(r"{{.*Petici. de traducci.*}}.*\n")
	text = p.sub('', text)
	wikipedia.output(text)
	return text

			
def buidarpeticionsinterrompudes():
	#Torna a intentar la traducció amb gencat i acabar el procés de les pàgines a la categoria: "Peticions de traducció automàtica"
	global idioma, pagina_er, usuari, pagina_origen, pagina_original
	projecte = wikipedia.getSite()
	cat = catlib.Category(projecte, u"Categoria:Peticions de traducció automàtica")
	pagines = cat.articles()
	for pagina in pagines:
		titol_de_la_pagina =pagina.title()
		if titol_de_la_pagina == u'Plantilla:Petició de traducció b' or titol_de_la_pagina == u'Plantilla:Petició de traducció b/ús' :
			continue
		resultat = trobaparametres(pagina)
		if resultat == 'no hi ha plantilla' or resultat == 'no hi ha pagina origen':
			continue
		#Per si s'ha modificat la pàgina al idioma original convindria llegir la còpia que es va gravar o lligar-ho a una verssió fixa.
		traduitgencat = getURL(titol_de_la_pagina, idioma)
		if traduitgencat != '':
			traduitgencat = treuprimeraplantilla(traduitgencat)
			pagina.put(traduitgencat,u"bot traduint article al català")
			despresdetraduccioautomatica(traduitgencat,pagina,titol_de_la_pagina)

def buidarpeticionspendentspostproces():			
	#Acaba el postprocés de les pàgines a la categoria: "Peticions de postprocés després d'una traducció automàtica"
	#És el cas que l'usuari hagi emprat un traductor automatic alternatiu i hagi canviat la plantilla a "c"
	global idioma, pagina_er, usuari, pagina_origen, pagina_original
	projecte = wikipedia.getSite()
	cat = catlib.Category(projecte, u"Categoria:Peticions de postprocés després d'una traducció automàtica")
	pagines = cat.articles()
	for pagina in pagines:
		titol_de_la_pagina =pagina.title()
		if titol_de_la_pagina == u'Plantilla:Petició de traducció c' or titol_de_la_pagina == u'Plantilla:Petició de traducció c/ús' :
			continue
		resultat = trobaparametres(pagina)
		if resultat == 'no hi ha plantilla' or resultat == 'no hi ha pagina origen':
			continue
		traduit = pagina.get()
		traduit = treuprimeraplantilla(traduit)
		#Per si s'ha modificat la pàgina al idioma original convindria llegir la còpia que es va gravar o lligar-ho a una verssió fixa.
		despresdetraduccioautomatica(traduit, pagina, titol_de_la_pagina)


def principal():
	while 1==1:
		buidarpeticionsnoves()
		buidarpeticionsinterrompudes()
		buidarpeticionspendentspostproces()
		time.sleep(60)

principal()