Vés al contingut

Viquipèdia:Viquitrobada 2009/Taller de bots/Intercalar l'article original

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding:latin2 -*-
'''
Bot per intercalar les frasses de l'article a traduir amb les de l'article traduit
automàticament per tal de facilitar el repàs.
Descarta les frasses nules de l'article traduir per evitar salts de lñinia apareguts
inadecuadament en la traducció automàtica.
'''

#Carrega llibreries
import wikipedia
import re

#Demana nom de la pàgina en català i idioma d'origen
pagina_a_traduir = wikipedia.input(u"Pàgina a traduïr?")
pagina_traduida = wikipedia.input(u"Pàgina traduida?")
idioma = wikipedia.input(u"Idioma?")

#llegeix la pàgina original 
pagina = wikipedia.Page( wikipedia.getSite(idioma,"wikipedia"), pagina_a_traduir)  
text = pagina.get()

#llegeix la pàgina destí 
paginadesti = wikipedia.Page( wikipedia.getSite("ca","wikipedia"), pagina_traduida)  
text_desti = paginadesti.get()

#Prepara expressions regulars
#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)

#Intercala els parragrafs de la pàgina traduida i la pàgina original
i=0
j=0
resultat=''
while i < maxim:
	print u'parragrafs fets:', i, 'de:', maxim
	#per si la pàgina traduida té menys parragrafs degut a haver afegit la interwiki 
	#al idioma original o més categories
	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
		print len(parragraforiginal[i]),len(parragraftraduida[j])
		resultat=resultat+parragraforiginal[i]+'\n'+parragraftraduida[j]+'\n'
	else:
		resultat=resultat+parragraforiginal[i]
	i=i+1
	j=j+1
		
#Grava la pàgina modificada	
paginadesti.put(resultat,u'bot intercalant text original amb text traduït')