Difference between revisions 14153660 and 14176687 on frwiktionary

[[Catégorie:JackBot]]
<source lang=python>
#!/usr/bin/env python
# coding: utf-8

# Ce script formate les pages du Wiktionnaire, tous les jours après minuit depuis le Toolserver :
# 1) Retire certains doublons.
# 2) Ajoute les clés de tris, prononciations vides, et certains liens vers les conjugaisons.
(contracted; show full)
			#print CleDeTri(PageHS)
			#print ClePage
			summary = summary + u', {{clé de tri}} corrigée'
			PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleDeTri(PageHS) + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}'):len(PageTemp)]

	while PageTemp.find(u'\n{clé de tri') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n{clé de tri')+1] + u'{' + PageTemp[PageTemp.find(u'\n{clé de tri'):len(PageTemp)]
	
	# Remplacements consensuels
	while PageTemp.find(u'&#32;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#32;')] + u'&nbsp;' + PageTemp[PageTemp.find(u'&#32;')+len(u'&#32;'):len(PageTemp)]
	while PageTemp.find(u'&#224;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#224;')] + u'à' + PageTemp[PageTemp.find(u'&#224;')+len(u'&#224;'):len(PageTemp)]
(contracted; show full)
	PageTemp = PageEnd + PageTemp
	PageEnd = u''
	'''while PageTemp.find(u'#*') != -1 and PageTemp.find(u'#*') != PageTemp.find(u'#*\'\'') and PageTemp.find(u'#*') != PageTemp.find(u'#* \'\''):
		PageTemp = PageTemp[0:PageTemp.find(u'#*')+2] + u'\'\'' + PageTemp[PageTemp.find(u'#*')+2:len(PageTemp)]'''

	while PageTemp.find(u'\n# [[' + PageHS + u'|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n# [[' + PageHS + u'|')+len(u'\n# [[')] + u'#fr' + PageTemp[PageTemp.find(u'\n# [[' + PageHS + u'|')+len(u'\n# [[' + PageHS):len(PageTemp)]
	
	# Retrait des espaces intégrés au modèle
	while PageTemp.find(u'|pinv= ') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'|pinv= ')+len(u'|pinv=')] + PageTemp[PageTemp.find(u'|pinv= ')+len(u'|pinv= '):len(PageTemp)]
	while PageTemp.find(u'|pinv=. ') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'|pinv=. ')+len(u'|pinv=.')] + PageTemp[PageTemp.find(u'|pinv=. ')+len(u'|pinv=. '):len(PageTemp)]
(contracted; show full)
	while PageTemp.find(u'{{mp}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{mp}}')+4] + u'lur' + PageTemp[PageTemp.find(u'{{mp}}')+4:len(PageTemp)] 
	while PageTemp.find(u'{{np}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{np}}')+4] + u'lur' + PageTemp[PageTemp.find(u'{{np}}')+4:len(PageTemp)]

		
	while PageTemp.find(u'{{mascul}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{mascul}}')] + u'{{au masculin}}' + PageTemp[PageTemp.find(u'{{mascul}}')+len(u'{{mascul}}'):len(PageTemp)] 
	while PageTemp.find(u'{{fémin}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{fémin}}')] + u'{{au féminin}}' + PageTemp[PageTemp.find(u'{{fémin}}')+len(u'{{fémin}}'):len(PageTemp)]
	while PageTemp.find(u'{{femin}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{femin}}')] + u'{{au féminin}}' + PageTemp[PageTemp.find(u'{{femin}}')+len(u'{{femin}}'):len(PageTemp)] 
	while PageTemp.find(u'{{sing}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{sing}}')] + u'{{au singulier}}' + PageTemp[PageTemp.find(u'{{sing}}')+len(u'{{sing}}'):len(PageTemp)]  
	while PageTemp.find(u'{{plur}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{plur}}')] + u'{{au pluriel}}' + PageTemp[PageTemp.find(u'{{plur}}')+len(u'{{plur}}'):len(PageTemp)] 
	while PageTemp.find(u'{{pluri}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{pluri}}')] + u'{{au pluriel}}' + PageTemp[PageTemp.find(u'{{pluri}}')+len(u'{{pluri}}'):len(PageTemp)] 
	while PageTemp.find(u'{{mascul|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{mascul|')] + u'{{au masculin|' + PageTemp[PageTemp.find(u'{{mascul|')+len(u'{{mascul|'):len(PageTemp)] 
	while PageTemp.find(u'{{fémin|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{fémin|')] + u'{{au féminin|' + PageTemp[PageTemp.find(u'{{fémin|')+len(u'{{fémin|'):len(PageTemp)]
	while PageTemp.find(u'{{femin|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{femin|')] + u'{{au féminin|' + PageTemp[PageTemp.find(u'{{femin|')+len(u'{{femin|'):len(PageTemp)] 
	while PageTemp.find(u'{{sing|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{sing|')] + u'{{au singulier|' + PageTemp[PageTemp.find(u'{{sing|')+len(u'{{sing|'):len(PageTemp)]  
	while PageTemp.find(u'{{plur|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{plur|')] + u'{{au pluriel|' + PageTemp[PageTemp.find(u'{{plur|')+len(u'{{plur|'):len(PageTemp)] 
	while PageTemp.find(u'{{pluri|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{pluri|')] + u'{{au pluriel|' + PageTemp[PageTemp.find(u'{{pluri|')+len(u'{{pluri|'):len(PageTemp)] 
		
	# Faux homophones : lemme et sa flexion
	if PageTemp.find(u'{{-flex-') != -1 and PageHS[len(PageHS)-1:len(PageHS)] == u's' and PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]\n*') == -1 and PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]') != -1 and PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']] ') == -1 and PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(Pag(contracted; show full)
	PageTemp = PageEnd + PageTemp
	PageEnd = u''"""
	
	# Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres)
	if socket.gethostname() != "willow" and socket.gethostname() != "yarrow" and socket.gethostname() != "nightshade":
		if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and PageTemp.find(u'{{langue|fr}}') != -1 and len(PageHS) < 7: # sinon trop long ( > 1 h par page)
			
#print socket.gethostname()
			anagrammes = anagram(PageHS)
			ListeAnagrammes = u''
			for anagramme in anagrammes:
				if anagramme != PageHS:
					pageAnagr = Page(site,anagramme)
					#print anagramme.encode(config.console_encoding, 'replace')
					if pageAnagr.exists():
(contracted; show full)
			'''
		
			#print (PageEnd.encode(config.console_encoding, 'replace')[0:1000])
			#print (PageTemp[0:position].encode(config.console_encoding, 'replace'))
			# Comparaison avec chaque modèle connu dans Modele[p]
			for p in range(1,limit6):
				if Modele[p] == PageTemp[0:position]:
					
#print (Modele[p].encode(config.console_encoding, 'replace'))
					# Si on est dans un modèle spécial, le traiter, sinon par catégorie de génériques
					if not codelangue and  (p < limit1 or p >= limit3):
						PageEnd = u'{{formater|Code langue manquant dans ' + Modele[p] + u'}}\n' + PageBegin
						summary = u'Page à formater manuellement'
						sauvegarde(page,PageEnd, summary)
						return

(contracted; show full)
							PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2]
							PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
						else:
							if PageTemp.find(u'|nocat=1') != -1:
								PageTemp = PageTemp[0:PageTemp.find(u'|nocat=1')] + PageTemp[PageTemp.find(u'|nocat=1')+len(u'|nocat=1'):len(PageTemp)]
							PageTemp = u'|' + codelangue + PageTemp
						break


					elif Modele[p] == u'-prénom-' or Modele[p] == u'-flex-prénom-':	# Modèle à trois paramètres : codelangue, num et genre
						EstCodeLangue == "true"
						if PageTemp.find("genre=") != -1 and PageTemp.find("genre=") < PageTemp.find("}}") and (PageTemp.find("num=") == -1 or PageTemp.find("num=") > PageTemp.find("}}")):
							if PageTemp.find("genre=") > position+1: # genre= est après le code langue
								PageEnd = PageEnd + Modele[p] + u'|' + codelangue + PageTemp[PageTemp.find("genre=")-1:PageTemp.find(u'}}')+2]
								PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
								break
							else: # genre= est avant un éventuel code langue
								PageTemp2 = PageTemp[position+1:len(PageTemp)]
								if (PageTemp2.find(u'|') != -1) and (PageTemp2.find(u'|') < PageTemp2.find(u'}}')): # il y a un code langue
									PageEnd = PageEnd + PageTemp[0:position+PageTemp2.find(u'|')+2] + codelangue + u'}}'
									PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
									break
								else: # Pas de code langue
									PageEnd = PageEnd + PageTemp[0:position+1+PageTemp2.find(u'}}')] + u'|' + codelangue + u'}}'
									PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
									break
						elif PageTemp.find("genre=") != -1 and PageTemp.find("genre=") < PageTemp.find("}}") and PageTemp.find("num=") != -1 and PageTemp.find("num=") < PageTemp.find("}}"): 
							if PageTemp.find("genre=") < PageTemp.find("num="):
								# en travaux (recalculer les num)
								break
							else:
								# en travaux (recalculer les num)
								break
						elif PageTemp.find("num=") != -1 and PageTemp.find("num=") < PageTemp.find("}}") and (PageTemp.find("genre=") == -1 or PageTemp.find("genre=") > PageTemp.find("}}")):
							if PageTemp.find("num=") > position+1: # num= est après le code langue
								PageEnd = PageEnd + Modele[p] + u'|' + codelangue + PageTemp[PageTemp.find("num=")-1:PageTemp.find(u'}}')+2]
								PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
								break
							else: # num= est avant un éventuel code langue
								PageTemp2 = PageTemp[position+1:len(PageTemp)]
								if (PageTemp2.find(u'|') != -1) and (PageTemp2.find(u'|') < PageTemp2.find(u'}}')): # il y a un code langue
									PageEnd = PageEnd + PageTemp[0:position+PageTemp2.find(u'|')+2] + codelangue + u'}}'
									PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
									break
								else: # Pas de code langue
									PageEnd = PageEnd + PageTemp[0:position+1+PageTemp2.find(u'}}')] + u'|' + codelangue + u'}}'
									PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
									break						
							break
						PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
						break
						
					elif Modele[p] == u'source':
						if PageTemp.find(u'{{w|') != -1 and PageTemp.find(u'{{w|') < PageTemp.find(u'}}'):
							PageTemp2 = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
							PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2]
							PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)+PageTemp2.find(u'}}')+2]
							break
(contracted; show full)							PageEnd = PageEnd + u'trad-fin'
						else:
							PageEnd = PageEnd + u')'
						PageTemp = PageTemp[position:len(PageTemp)]
						break
					if p < limit1:	# Si on est dans le paragraphe définition
						EstCodeLangue = "true"
						
if PageTemp[position+1:position+4] == "num" and PageTemp[position+1:position+5] != "num}":
							PageEnd = PageEnd + PageTemp[0:position+6] + "|" + codelangue + "}}"
						elif PageTemp[position+4:position+7] == "num" and PageTemp[position+4:position+8] != "num}":
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "|" + PageTemp[position+4:position+9] + "}}"
						elif PageTemp[position+5:position+8] == "num" and PageTemp[position+5:position+9] != "num}":
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "|" + PageTemp[position+5:position+10] + "}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"# Tous ces modèles peuvent facultativement contenir |clé= et |num=, les prénoms et -flex-prénom- |genre=
						PageTemp2 = PageTemp[position+1:len(PageTemp)]
						position2 = 0
						while PageTemp2.find(u'|') != -1 and PageTemp2.find(u'|') < PageTemp2.find(u'}}'):
							if (PageTemp2.find(u'=') == -1 or PageTemp2.find(u'=') > PageTemp2.find(u'|')) and PageTemp2[0:PageTemp2.find(u'|')] != codelangue:
								summary = summary + u', ' + Modele[p] + u'|' + PageTemp2[0:PageTemp2.find(u'|')] + u' -> ' + Modele[p] + u'|' + codelangue
								PageTemp = PageTemp[0:position+1+position2] + codelangue + PageTemp[position+1+position2+len(PageTemp2[0:PageTemp2.find(u'|')]):len(PageTemp2)]
								PageTemp2 = PageTemp[position+1:len(PageTemp)]
							position2 = position2 + PageTemp2.find(u'|')+1
							PageTemp2 = PageTemp2[PageTemp2.find(u'|')+1:len(PageTemp2)]
						if (PageTemp2.find(u'=') == -1 or PageTemp2.find(u'=') > PageTemp2.find(u'}}')) and PageTemp2[0:PageTemp2.find(u'}}')] != codelangue:
							summary = summary + u', ' + Modele[p] + u'|' + PageTemp2[0:PageTemp2.find(u'}}')] + u' -> ' + Modele[p] + u'|' + codelangue
							PageTemp = PageTemp[0:position+1+position2] + codelangue + PageTemp[position+1+position2+len(PageTemp2[0:PageTemp2.find(u'}}')]):len(PageTemp2)]
						# Clé de tri propre à une langue
						if PageTemp.find(u'|clé=') == -1 or PageTemp.find(u'|clé=') > PageTemp.find(u'}}'):
							if codelangue == u'ru':
								if PageHS.find(u'ё') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'ё',u'е€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'ӕ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'ӕ',u'а€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
							elif codelangue == u'os':
								if PageHS.find(u'ё') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'ё',u'е€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'ӕ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'ӕ',u'а€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								# Digrammes
								if PageHS.find(u'гъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'гъ',u'г€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'дж') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'дж',u'д€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'дз') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'дз',u'д€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'къ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'къ',u'к€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'пъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'пъ',u'п€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'тъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'тъ',u'т€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'хъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'хъ',u'х€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'цъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'цъ',u'ц€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
								if PageHS.find(u'чъ') !=-1: PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + PageHS.replace(u'чъ',u'ч€') + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]

						PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2]
					elif p < limit2:	# Paragraphe sans code langue
						EstCodeLangue = "false"
						trad = u'false'
						PageEnd = PageEnd + PageTemp[0:position] + "}}"
					elif p < limit3:	# Paragraphe sans code langue contenant un texte
						EstCodeLangue = "false"
						trad = u'false'
(contracted; show full)
TraitementLiens = crawlerLink(u'Modèle:trad',u'')
TraitementLiens = crawlerLink(u'Modèle:-',u'')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'')
TraitementLiens = crawlerLink(u'Modèle:-ortho-alt-',u'')
TraitementLiens = crawlerLink(u'Modèle:=langue=',u'')
TraitementLiens = crawlerLink(u'Modèle:trad-',u'')
'''

TraitementCategorie = crawlerCat(u'Catégorie:ossète',False,u'')
TraitementCategorie = crawlerCat(u'Catégorie:russe',False,u'')

TraitementLiens = crawlerLink(u'Modèle:mascul',u'')
TraitementLiens = crawlerLink(u'Modèle:fémin',u'')
TraitementLiens = crawlerLink(u'Modèle:femin',u'')
TraitementLiens = crawlerLink(u'Modèle:sing',u'')
TraitementLiens = crawlerLink(u'Modèle:plur',u'')
TraitementLiens = crawlerLink(u'Modèle:pluri',u'')

TraitementPage = modification(u'Utilisateur:JackBot/test')
TraitementLiens = crawlerLink(u'Modèle:R:DAF8',u'homme')
TraitementFichier = crawlerFile('articles_list.txt')
TraitementLiensCategorie = crawlerCatLink(u'Modèles de code langue',u'')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects',True)
TraitementRecherche = crawlerSearch(u'chinoislé de tri')
TraitementUtilisateur = crawlerUser(u'Utilisateur:JackBot')
TraitementRedirections = crawlerRedirects()
TraitementTout = crawlerAll(u'')
while 1:
	TraitementRC = crawlerRC()
'''
</source>