Difference between revisions 10906141 and 10984384 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)		else:
			try:
				PageBegin = page.get()
			except wikipedia.NoPage: return
			except wikipedia.IsRedirectPage: return
			except wikipedia.LockedPage: return
	else:

		print "NoPage"
		return
	PageTemp = PageBegin
	if PageTemp.find(u'{{formater') != -1 or PageTemp.find(u'{{supp') != -1: return
	# Traductions des modèles des autres Wiktionnaires
	for p in range(1,LimitTemplate):
		while PageTemp.find(Template[p]) != -1: PageTemp = PageTemp[0:PageTemp.find(Template[p])] + TemplateFR[p] + PageTemp[PageTemp.find(Template[p])+len(Template[p]):len(PageTemp)]
	# Ajout des {{voir}}
	if PageTemp.find(u'{{voir|') == -1 and PageTemp.find(u'{{voir/') == -1:
(contracted; show full)

	# Nettoyage
	if PageTemp.find(u'{{voir}}\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}\n')] + PageTemp[PageTemp.find(u'{{voir}}\n')+len(u'{{voir}}\n'):len(PageTemp)]
	if PageTemp.find(u'{{voir}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}')] + PageTemp[PageTemp.find(u'{{voir}}')+len(u'{{voir}}'):len(PageTemp)]
	
	if (PageTemp.find(u'{{vérifier') != -1 and 
(PageTemp.find(u'{{vérifier') < PageTemp.find(u'{{=') and PageTemp.find(u'{{=') != -1) or PageTemp.find(u'{{vérifier') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1) or PageTemp.find(u'{{PàS') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'==')-1]
		PageTemp = PageTemp[PageTemp.find(u'==')-1:len(PageTemp)]

	# Clés de tri
	if PageTemp.find(u'{{clé de tri}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri}}')] + PageTemp[PageTemp.find(u'{{clé de tri}}')+len(u'{{clé de tri}}'):len(PageTemp)]
	if PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')] + PageTemp[PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')+len(u'{{clé de tri|' + PageHS.lower() + u'}}'):len(PageTemp)]
	if PageTemp.find(u'{{clé de tri') == -1:
		ClePage = CleDeTri(PageHS)
		if ClePage != u'' and ClePage != PageHS:
			if PageTemp.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Catégorie:'):len(PageTemp)]
			elif PageTemp.find(u'[[Category:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Category:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Category:'):len(PageTemp)]
			else:	# Avant interwikis
				if re.compile('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]').search(PageTemp):
					try:
						i1 = re.search('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]',PageTemp).start()
						PageTemp = PageTemp[:i1regex = ur'\[\[(.+?)(?:\]\]\n)'
				if re.compile(regex).search(PageTemp):
					try:
						PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{clé de tri|' + ClePage + u'}}\n\n' + PageTemp[i1:re.search(regex,PageTemp).end():len(PageTemp)]
					except:
						print u'pb regex interwiki'
				else:
					PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'
	else:
		PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri'):len(PageTemp)]
		ClePage = PageTemp2[PageTemp2.find(u'|')+1:PageTemp2.find(u'}}')]
(contracted; show full)
	while PageTemp.find(u'{{-}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-}}')] + PageTemp[PageTemp.find(u'{{-}}')+len(u'{{-}}'):len(PageTemp)]
	while PageTemp.find(u'\n{{trad-milieu}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n{{trad-milieu}}')] + PageTemp[PageTemp.find(u'\n{{trad-milieu}}')+len(u'\n{{trad-milieu}}'):len(PageTemp)]

	while PageTemp.find(u'-ortho-alt-') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'-ortho-alt-')] + u'-var-ortho-' + PageTemp[PageTemp.find(u'-ortho-alt-')+len(u'-ortho-alt-'):len(PageTemp)]
	
	while PageTemp.find(u'\n{{colonnes|') != -1:
		PageTemp2 = PageTemp[0:PageTemp.find(u'\n{{colonnes|')]
		if PageTemp2.rfind(u'{{') != -1 and PageTemp2.rfind(u'{{') == PageTemp2.rfind(u'{{trad-début'):	# modèles impriqués dans trad
			PageTemp2 = PageTemp[PageTemp.find(u'\n{{colonnes|')+len(u'\n{{colonnes|'):len(PageTemp)]
			if PageTemp2.find(u'\n}}\n') != -1:
(contracted; show full)
	while PageTemp.find(u'{{Annexe|Couleurs en français}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{Annexe|Couleurs en français}}')] + u'{{Thésaurus|fr|couleur}}' + PageTemp[PageTemp.find(u'{{Annexe|Couleurs en français}}')+len(u'{{Annexe|Couleurs en français}}'):len(PageTemp)]
	
	
			
		
	PageTemp = PageEnd + PageTemp
	PageEnd = u''
	# Classement des traductions
	while PageTemp.find(u'{{T|') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{T|')]
		PageTemp = PageTemp[PageTemp.find(u'{{T|'):len(PageTemp)]
		# Rangement de la ligne de la traduction par ordre alphabétique de la langue dans PageEnd
(contracted; show full)' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')+1:len(PageTemp)]
	
	''' 
BAnagrammes beaucoup trop long ( > 1 h par page)
	# Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres)
	if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and PageTemp.find(u'{{=fr=}}') != -1:
		anagrammes = anagram(PageHS)
		ListeAnagrammes = u''
		for anagramme in anagrammes:
			print anagramme
			pageAnagr = Page(site,anagramme)
(contracted; show full)
			EstCodeLangue = "true"
		elif PageTemp.find(u'{{-car-') != -1:
			if PageTemp.find(u'{{-car-') < PageTemp.find("{{=") or PageTemp.find("{{=") == -1:
				codelangue = u'conv'
			elif position == PageTemp.find("{{="):
				codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("=}}")]
			EstCodeLangue = "true"
		elif position == PageTemp.find(
"u'{{="'):
			PageTemp2 = PageTemp[position+3:len(PageTemp)]
			if PageTemp2.find("}}") < PageTemp2.find("|") or PageTemp2.find("|") == -1:
				if PageTemp.find("{{=") < PageTemp.find("=}}"):
					codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("=}}")]
				else:
					PageTemp2 = PageTemp[PageTemp.find(u'=}}')+3:len(PageTemp)]
					codelangue = PageTemp[PageTemp.find(u'{{=')+3:PageTemp.find(u'=}}')+3+PageTemp2.find(u'=}}')]
			else:
				codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("{{=")+3+PageTemp2.find("=|")]
				position = PageTemp.find("}}")
			PageTemp2 = PageTemp[PageTemp.find(u'=}}')+3:len(PageTemp)]
			if len(PageHS) == 1 and (codelangue == u'zh' or codelangue == u'ja' or codelangue == u'ko-hanja' or codelangue == u'vi-chunho') and (PageTemp2.find(u'{{-') == -1 or (PageTemp2.find(u'{{-') > PageTemp2.find(u'{{=') and PageTemp2.find(u'{{=') != -1) or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-réf-') or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-pron-') or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-drv-')):
				PageTemp = PageTemp[0:PageTemp.find(u'==\n')+3] + u'{{-sinogramme-|' + codelangue + u'}}\n\'\'\'{{subst:PAGENAME}}\'\'\'\n\n' + PageTemp[PageTemp.find(u'==\n')+3:len(PageTemp)]elif position == PageTemp.find(u'{{langue|'):
			PageTemp2 = PageTemp[position+len(u'{{langue|'):len(PageTemp)]
			if PageTemp2.find("}}") < PageTemp2.find("|") or PageTemp2.find("|") == -1:
				if PageTemp.find(u'{{langue|') < PageTemp.find("}}"):
					codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find("}}")]
				else:
					PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)]
					codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')]
			else:
				codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'{{langue|')+len(u'{{langue|')+PageTemp2.find("}}")]
				position = PageTemp.find("}}")
		elif position == PageTemp.find(u'{{langue}}'):
			# Recherche d'un codelangue à préciser
			PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)]
			PageTemp2 = PageTemp[PageTemp.find(u'{{')+2:len(PageTemp)]
			PageTemp2 = PageTemp[0:PageTemp.find(u'}}')]
			if PageTemp2.find("|") != -1:
				codelangue = PageTemp2[PageTemp2.find("|")+1:len(PageTemp2)]
				PageTemp = PageTemp[0:PageTemp.find(u'{{langue}}')] + u'{{langue|' + codelangue + u'}}' + PageTemp[PageTemp.find(u'{{langue}}')+len(u'{{langue}}'):len(PageTemp)]
				position = PageTemp.find("}}")
				
		position = position + 2
		PageEnd = PageEnd + PageTemp[0:position]		# Transfert vers la page finale de l'article jusqu'au modèle en traitement exclu
		PageTemp = PageTemp[position:len(PageTemp)]
		if PageTemp.find(" }}") < PageTemp.find("}}") and PageTemp.find(" }}") != -1 : # Détermination du caractère délimitant la fin du nom du modèle
			PageTemp = PageTemp[0:PageTemp.find(" }}")] + PageTemp[PageTemp.find(" }}")+1:len(PageTemp)]
(contracted; show full)
			if PageTemp2.find(u'|') < PageTemp2.find(u'}}') and PageTemp2.find(u'|') != -1:
				if PageTemp2[0:PageTemp2.find(u'|')] == PageHS:
					PageTemp = PageTemp[0:position] + PageTemp[position+1+PageTemp2.find(u'|'):len(PageTemp)]
			else:
				if PageTemp2[0:PageTemp2.find(u'}}')] == PageHS:
					PageTemp = PageTemp[0:position] + PageTemp[position+1+PageTemp2.find(u'}}'):len(PageTemp)]
			
		
		#raw_input(PageEnd.encode(config.console_encoding, 'replace')[0:1000])
		# Comparaison avec chaque modèle connu
		for p in range(1,limit5):
			if Modele[p] == PageTemp[0:position]:
				#print(Modele[p].encode(config.console_encoding, 'replace'))
				#raw_input(codelangue)
				# Modèles spéciaux
(contracted; show full)					if EstCodeLangue == "true":
						PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
					else:
						PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"					
				else:
					if PageEnd.rfind(u'{{') != -1:
						PageEnd2 = PageEnd[0:PageEnd.rfind(u'{{')]
						if EstCodeLangue == "true" and 
PageTemp.find(u'{{') != PageTemp.find(u'{{pron|') and PageEnd2.rfind(u'{{') != PageEnd2.rfind(u'{{pron|'(PageEnd2.rfind(u'{{') != PageEnd2.rfind(u'{{pron|') or PageEnd.rfind(u'{{pron|') < PageEnd.rfind(u'\n') or PageEnd2.rfind(u'{{pron|') == -1) and ((PageTemp.find(u'{{') != PageTemp.find(u'{{pron|') or PageTemp.find(u'{{pron|') > PageTemp.find(u'\n')) or PageTemp.find(u'{{pron|') == -1):
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"
				if position == PageTemp.find("|"):
					position = PageTemp.find("}}")
				PageTemp = PageTemp[position+2:len(PageTemp)]
			elif (PageTemp[0:position] == u'-flex-verb-' or PageTemp[0:position] == u'-flex-verbe-') and codelangue == u'fr':
(contracted; show full)			if PageTemp != u"{{/Stop}}":
				pywikibot.output (u"\n*** \03{lightyellow}Arrêt d'urgence demandé\03{default} ***")
				exit(0)

def sauvegarde(PageCourante, Contenu):
	ArretDUrgence()
	result = "ok"
	
#print(Contenu.encode(config.console_encoding, 'replace')[0:4000])	#[len(Contenu)-2000:len(Contenu)]) #
	#result = raw_input("Sauvegarder ? (o/n)")
	if result != "n" and result != "no" and result != "non":
		try:
			PageCourante.put(Contenu, summary)
		except wikipedia.NoPage: return
		except wikipedia.IsRedirectPage: return
		except wikipedia.LockedPage: return
		except pywikibot.EditConflict: return
		except wikipedia.ServerError: return
		except wikipedia.BadTitle: return
	
# Lancement
TraitementLiens = crawlerLink(u'Modèle:trad-début',u'putréfaction')
TraitementLiens = crawlerLink(u'Modèle:(',u'')
TraitementLiens = crawlerLink(u'Modèle:-flex-nom-',u'')
TraitementLiens = crawlerLink(u'Modèle:clé de tri',u'')
'''
TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Codes langue manquants',True,u'')
TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Flexions à vérifier',True,u'')
TraitementLiens = crawlerLink(u'Modèle:1ergroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:2egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:3egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:trad',u'')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'')
'''
TraitementLiens = crawlerLink(u'Modèle:région',u'')
TraitementLiens = crawlerLink(u'Modèle:terme',u'')
TraitementLiens = crawlerLink(u'Modèle:trad-début',u'alléger')
TraitementLiens = crawlerLink(u'Modèle:(',u'')
TraitementLiens = crawlerLink(u'Modèle:-flex-nom-',u'')
TraitementLiens = crawlerLink(u'Modèle:clé de tri',u'')

TraitementPage = modification(u'Utilisateur:JackBot/test')
TraitementUtilisateur = crawlerUser(u'User:JackBot')
TraitementFichier = crawlerFile('articles_listed.tx
TraitementPage = modification(u'Utilisateur:JackBot/test')
TraitementFichier = crawlerFile('articles_list.txt')
TraitementUtilisateur = crawlerUser(u'User:JackBot')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects',True)
TraitementRecherche = crawlerSearch(u'chinois')
TraitementUtilisateur = crawlerUser(u'Utilisateur:JackBot')
TraitementTout = crawlerAll(u'')
while 1:
	TraitementRC = crawlerRC()
'''
</source>