Difference between revisions 13869130 and 13904720 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.
# 3) Met à jour les liens vers les traductions (modèles trad, trad+, trad-, trad-début et trad-fin), et les classe par ordre alphabétique.
# 4) Ajoute les codes langues appropriés dans les modèles du Wiktionnaire du namespace 0 et paragraphes appropriés.
# 5) Complète les flexions de verbes à vérifier.
# 6) Traduit les importations de en.wikt.
# 7) Gestionère des modèles {{voir}} en début de page.

# Importation des modules
import catlib, pagegenerators, os, codecs, urllib, re, collections
from wikipedia import *

# Déclaration
language = "fr"
family = "wiktionary"
mynick = "JackBot"
site = getSite(language,family)

# Modèles du site à traiter
limit6=91623
Modele = range(1, limit6+1)
# http://fr.wiktionary.org/wiki/Cat%C3%A9gorie:Mod%C3%A8les_de_type_de_mot_du_Wiktionnaire
Modele[1] = u'-adj-'
Modele[2] = u'-flex-adj-indéf-'
Modele[3] = u'-adj-dém-'
Modele[4] = u'-adj-excl-'
Modele[5] = u'-adj-indéf-'
(contracted; show full)Modele[776] = u'combat'
Modele[777] = u'sports de combat'
Modele[778] = u'capoeira'
Modele[779] = u'aïkido'
Modele[780] = u'karaté'
Modele[781] = u'argot militaire'
Modele[782] = u'argot polytechnicien'

limit5 = 783
# non traités
#Modele[783] = u'spécialement' 
#ki alpin'
Modele[784] = u'T'

# Modèles régionaux, pb du nocat pour les prononciationsski de fond'
Modele[7845] = u'Afrique du Sudréseau'
Modele[7856] = u'Algériecanoë-kayak'
Modele[7867] = u'Allemagnecanoë'
Modele[7878] = u'Alsacescol'
Modele[7889] = u'Amérique centrale'
obsolète'
limit5 = 790
# non traités
#Modele[789] = u'Amérique du Nord'
spécialement' 
#Modele[790] = u'Amérique du Sud'T'

# Modèles régionaux, pb du nocat pour les prononciations
Modele[791] = u'Amérique latine'
Modele[792] = u'Anjou'
Modele[793] = u'Antilles'
Modele[794] = u'Aquitaine'
Modele[795] = u'Argentine'
Modele[796] = u'Australie'
Modele[797] = u'Autriche'
(contracted; show full)Modele[907] = u'USA'
Modele[908] = u'UK'
Modele[909] = u'GB'
Modele[910] = u'AU'
Modele[911] = u'NZ'
Modele[912] = u'IE'
Modele[913] = u'Acadie'
Modele[914] = u'Afrique'

Modele[915] = u'Afrique du Sud'
Modele[916] = u'Algérie'
Modele[917] = u'Allemagne'
Modele[918] = u'Alsace'
Modele[919] = u'Amérique centrale'
Modele[920] = u'Amérique du Nord'
Modele[921] = u'Amérique du Sud'

# Modèles des autres Wiktionnaires à convertir
LimitTemplate = 66
Template = range(1, LimitTemplate+1)
TemplateFR = range(1, LimitTemplate+1)
Template[1] = u'===Adjective==='
TemplateFR[1] = u'{{-adj-}}'
(contracted; show full)	if page.exists():
		if page.namespace() !=0 and PageHS != u'Utilisateur:JackBot/test':
			return
		else:
			try:
				PageBegin = page.get()
			except wikipedia.NoPage:
				print "NoPage l 11
0913"
				return
			except wikipedia.IsRedirectLockedPage: 
				print "IsRedirectLocked l 11126"
				return
			except wikipedia.LockedPage: 
				print "LockedIsRedirectPage: 
				PageBegin = page.get(get_redirect=True)
				TxtTmp = u'<!--\n  Redirection créée par le robot User:DaftBot.\n  La création automatique de la page ciblée est prévue prochainement.\n-->'
				if PageBegin.find(TxtTmp) != -1:
					summary = u'[[Catégorie:Redirections à remplacer]]'
					PageBegin = PageBegin[0:PageBegin.find(TxtTmp)] + summary + PageBegin[PageBegin.find(TxtTmp)+len(TxtTmp):len(PageBegin)]
					sauvegarde(page,PageBegin, summary)
				else:
					print "IsRedirect l 11159"
				return
	else:
		print "NoPage l 1118"
		return
	PageTemp = PageBegin
	while PageTemp.find(u'{{ ') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{ ')+2] + PageTemp[PageTemp.find(u'{{ ')+3:len(PageTemp)]
(contracted; show full)
		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)]
	while PageTemp.find(u'{{-car-}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-car-}}')] + u'{{caractère}}' + PageTemp[PageTemp.find(u'{{-car-}}')+len(u'{{-car-}}'):len(PageTemp)]

	while PageTemp.find(u'{{-chiffre-') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-chiffre-')] + u'{{-numéral-' + PageTemp[PageTemp.find(u'{{-chiffre-')+len(u'{{-chiffre-'):len(PageTemp)]
	while PageTemp.find(u'{{-note-|s=s}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-note-|s=s}}')] + u'{{-notes-}}' + PageTemp[PageTemp.find(u'{{-note-|s=s}}')+len(u'{{-note-|s=s}}'):len(PageTemp)]
	
	# Codes langues
	while PageTemp.find(u'=prv=') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'=prv=')] + u'langue|oc' + PageTemp[PageTemp.find(u'=prv=')+len(u'=prv='):len(PageTemp)]
	AncienModele = range(1, 13)
	NouveauModele = range(1, 13)
	AncienModele[1] = u'ko-hanja'
	NouveauModele[1] = u'ko-Hani'
	AncienModele[2] = u'be-x-old'
	NouveauModele[2] = u'be-tarask'
	AncienModele[3] = u'zh-min-nan'
	NouveauModele[3] = u'nan'
	AncienModele[4] = u'lsf'
	NouveauModele[4] = u'fsl'
	AncienModele[5] = u'arg'
	NouveauModele[5] = u'an'
	AncienModele[6] = u'nav'
	NouveauModele[6] = u'nv'
	AncienModele[7] = u'prv'
	NouveauModele[7] = u'oc'
	AncienModele[8] = u'nds-NL'
	NouveauModele[8] = u'nds-nl'	
	AncienModele[9] = u'gsw-FR'
	NouveauModele[9] = u'gsw-fr'
	AncienModele[10] = u'zh-sc'
	NouveauModele[10] = u'zh-Hans'
	AncienModele[11] = u'roa-rup'
	NouveauModele[11] = u'rup'
	for p in range(1,12):
		while PageTemp.find(u'|' + AncienModele[p] + u'|') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'|' + AncienModele[p] + u'|')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'|' + AncienModele[p] + u'|')+len(u'|' + AncienModele[p] + u'|')-1:len(PageTemp)]
		while PageTemp.find(u'|' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'|' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'|' + AncienModele[p] + u'}')+len(u'|' + AncienModele[p] + u'}')-1:len(PageTemp)]
		while PageTemp.find(u'{' + AncienModele[p] + u'|') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'{' + AncienModele[p] + u'|')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'{' + AncienModele[p] + u'|')+len(u'{' + AncienModele[p] + u'|')-1:len(PageTemp)]
		while PageTemp.find(u'{' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'{' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'{' + AncienModele[p] + u'}')+len(u'{' + AncienModele[p] + u'}')-1:len(PageTemp)]
		while PageTemp.find(u'=' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'=' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'=' + AncienModele[p] + u'}')+len(u'=' + AncienModele[p] + u'}')-1:len(PageTemp)]
	while PageTemp.find(u'{{WP|lang=sgs') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{WP|lang=sgs')] + u'{{WP|lang=bat-smg' + PageTemp[PageTemp.find(u'{{WP|lang=sgs')+len(u'{{WP|lang=sgs'):len(PageTemp)]
if PageTemp.find(u'{{-nom-sciences-|conv}}') != -1 and PageTemp.find(u'[[Catégorie:Noms scientifiques]]') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:Noms scientifiques]]')] + PageTemp[PageTemp.find(u'[[Catégorie:Noms scientifiques]]')+len(u'[[Catégorie:Noms scientifiques]]'):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(PageHS)-1] + u']],') == -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')] + PageTemp[PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')+len(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')+1:len(PageTemp)]
	elif 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(PageHS)-1] + u']],') == -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')] + PageTemp[PageTemp.find(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')+len(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')+1:len(PageTemp)]
	# Gentités et leurs adjectifs
	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')] + u'{{fr-accord-mixte|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')] + u'{{fr-accord-mixte|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')] + u'{{fr-accord-s|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')+len(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')] + u'{{fr-accord-s|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+len(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])'):len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])')] + u'{{fr-accord-el|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')] + u'{{fr-accord-el|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])')] + u'{{fr-accord-en|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')] + u'{{fr-accord-en|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'te]], {{fplur}} : [[' + PageHS + u'tes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'te]], {{fplur}} : [[' + PageHS + u'tes]])')] + u'{{fr-accord-et|}}' + 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]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')] + u'{{fr-accord-et|}}' + 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)]
		
	# URL de références : elles ne contiennent pas les diacritiques des {{PAGENAME}}
	while PageTemp.find(u'[http://www.sil.org/iso639-3/documentation.asp?id=') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'[http://www.sil.org/iso639-3/documentation.asp?id=')+len(u'[http://www.sil.org/iso639-3/documentation.asp?id='):len(PageTemp)]
(contracted; show full)
		summary = summary + u', ajout de {{R:Mediadico}}'
	while PageTemp.find(u'{{R:DAF8}}\n{{Import:DAF8}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{R:DAF8}}\n{{Import:DAF8}}')] + PageTemp[PageTemp.find(u'{{R:DAF8}}\n{{Import:DAF8}}')+len(u'{{R:DAF8}}\n'):len(PageTemp)]
		summary = summary + u', doublon {{R:DAF8}}'

	while PageTemp.find(u'{{R:DAF8}}\n\n{{Import:DAF8}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{R:DAF8}}\n\n{{Import:DAF8}}')] + PageTemp[PageTemp.find(u'{{R:DAF8}}\n\n{{Import:DAF8}}')+len(u'{{R:DAF8}}\n\n'):len(PageTemp)]
		summary = summary + u', doublon {{R:DAF8}}'
	while PageTemp.find(u'{{Import:DAF8}}\n{{R:DAF8}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{Import:DAF8}}\n{{R:DAF8}}')+len(u'{{Import:DAF8}}')] + PageTemp[PageTemp.find(u'{{Import:DAF8}}\n{{R:DAF8}}')+len(u'{{Import:DAF8}}\n{{R:DAF8}}'):len(PageTemp)]
		summary = summary + u', doublon {{R:DAF8}}'
	while PageTemp.find(u'{{R:Littré}}\n{{Import:Littré}}') != -1:
(contracted; show full)						return
					except wikipedia.IsRedirectPage:
						print u'Redirection l 1552 : ' + langue2
						return
					if PageTemp3.find(u'<noinclude>') != -1:
						langue2 = CleDeTri(PageTemp3[0:PageTemp3.find(u'<noinclude>')])
						if langue2 > langue:
							summary = summary + ', traduction ' + langue2 + u'
> > ' + langue
							#print langue2 + u' > ' + langue
							if PageEnd.rfind(u'\n') > PageEnd.rfind(u'trad-début'):
								TradSuivantes = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + TradSuivantes
								PageEnd = PageEnd[0:PageEnd.rfind(u'\n')]
							else:
								# Cas de la première de la liste
								TradCourante = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + TradCourante
								PageEnd = PageEnd[0:PageEnd.rfind(u'\n')]
						#print PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)].encode(config.console_encoding, 'replace')
				PageEnd = PageEnd + TradCourante + TradSuivantes
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'\n')+1]
		PageTemp = PageTemp[PageTemp.find(u'\n')+1:len(PageTemp)]
		#print(PageEnd.encode(config.console_encoding, 'replace'))
		#print(PageTemp.encode(config.console_encoding, 'replace'))
	PageTemp = PageEnd + PageTemp
	PageEnd = u''	
	#raw_input(PageTemp.encode(config.console_encoding, 'replace'))

	if PageTemp.find(u'{{-nom-sciences-|conv}}') != -1 and PageTemp.find(u'[[Catégorie:Noms scientifiques]]') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:Noms scientifiques]]')] + PageTemp[PageTemp.find(u'[[Catégorie:Noms scientifiques]]')+len(u'[[Catégorie:Noms scientifiques]]'):len(PageTemp)]
	
	# Repasse derrière Piedbot
	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(PageHS)-1] + u']],') == -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')] + PageTemp[PageTemp.find(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')+len(u'{{-homo-}}\n*[[' + PageHS[0:len(PageHS)-1] + u']]')+1:len(PageTemp)]
	elif 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(PageHS)-1] + u']],') == -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')] + PageTemp[PageTemp.find(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')+len(u'{{-homo-}}\n* [[' + PageHS[0:len(PageHS)-1] + u']]')+1:len(PageTemp)]

	# Gentités et leurs adjectifs
	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')] + u'{{fr-accord-mixte|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')] + u'{{fr-accord-mixte|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')] + u'{{fr-accord-s|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])')+len(u'({{p}} : [[' + PageHS + u']], {{f}} : [[' + PageHS + u'e]], {{fplur}} : [[' + PageHS + u'es]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')] + u'{{fr-accord-s|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])')+len(u'({{p}} : \'\'\'' + PageHS + u'\'\'\', {{f}} : \'\'\'' + PageHS + u'e]], {{fplur}} : \'\'\'' + PageHS + u'es]])'):len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])')] + u'{{fr-accord-el|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'le]], {{fplur}} : [[' + PageHS + u'les]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')] + u'{{fr-accord-el|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'le]], {{fplur}} : \'\'\'' + PageHS + u'les]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])')] + u'{{fr-accord-en|}}' + PageTemp[PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])')+len(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'ne]], {{fplur}} : [[' + PageHS + u'nes]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')] + u'{{fr-accord-en|}}' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'ne]], {{fplur}} : \'\'\'' + PageHS + u'nes]])')+1:len(PageTemp)]

	if PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'te]], {{fplur}} : [[' + PageHS + u'tes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : [[' + PageHS + u's]], {{f}} : [[' + PageHS + u'te]], {{fplur}} : [[' + PageHS + u'tes]])')] + u'{{fr-accord-et|}}' + 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]])'):len(PageTemp)]
	if PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')] + u'{{fr-accord-et|}}' + 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)]

	''' Anagrammes beaucoup trop long ( > 1 h par page), tester if len(PageHS) < 5 dans les vraies pages :
	# 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'{{langue|fr}}') != -1:
		anagrammes = anagram(PageHS)
		ListeAnagrammes = u''
		for anagramme in anagrammes:
			print anagramme
			pageAnagr = Page(site,anagramme)
			if pageAnagr.exists():
				if pageAnagr.namespace() !=0 and anagramme != u'Utilisateur:JackBot/test':
					return
				else:
					try:
						PageTempAnagr = pageAnagr.get()
					except wikipedia.NoPage: return
					except wikipedia.IsRedirectPage: return
					except wikipedia.LockedPage: return
				if PageTempAnagr.find(u'{{langue|fr}}') != -1:

	# Classement des sections modifiables
	"""PageEnd = u''
	while PageTemp.find(u'{{langue|') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{langue|')+len(u'{{langue|')]
		PageTemp = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):len(PageTemp)]
		if PageTemp.find(u'{{langue|') != -1:
			# Rangement des paragraphes par ordre alphabétique de langue dans PageEnd
			langue1 = PageTemp[0:PageTemp.find(u'}')]
			if langue1.find(u'|') != -1: langue1 = langue1[0:langue1.find(u'|')]
			if langue1 != u'':
				#print(langue1) # ca pt
				Langue1 = Page(site,u'Modèle:' + langue1)
				try: PageTemp2 = Langue1.get()
				except wikipedia.NoPage:
					print "NoPage l 1521 : " + langue1
					return
				except wikipedia.IsRedirectPage:
					PageTemp2 = Langue1.getRedirectTarget().title() + u'<noinclude>'
				except wikipedia.ServerError:
					print "ServerError l 1527 : " + langue1
					return
				except wikipedia.BadTitle:
					print "BadTitle l 1530 : " + langue1
					return
				if PageTemp2.find(u'<noinclude>') != -1:
					langue = CleDeTri(PageTemp2[0:PageTemp2.find(u'<noinclude>')])
					langue2 = u'zzz'
					if PageTemp.find(u'\n== {{langue|') != -1:
						ParagCourant = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + PageTemp[0:PageTemp.find(u'\n== {{langue|')]
						PageTemp = PageTemp[PageTemp.find(u'\n== {{langue|'):len(PageTemp)]
					elif PageTemp.find(u'\n=={{langue|') != -1:
						ParagCourant = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + PageTemp[0:PageTemp.find(u'\n=={{langue|')]
						PageTemp = PageTemp[PageTemp.find(u'\n=={{langue|'):len(PageTemp)]
					else:
						ParagCourant = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + PageTemp
						PageTemp = u''
					PageEnd = PageEnd[0:PageEnd.rfind(u'\n')]
					ParagSuivants = u''
					#raw_input (ParagCourant.encode(config.console_encoding, 'replace'))
					# Comparaison du paragraphe courant avec le précédent, et rangement dans ParagSuivants de ce qui doit le suivre
					while PageEnd.rfind(u'{{langue|') != -1  and PageEnd.rfind(u'{{langue|') < PageEnd.rfind(u'}}')  and PageEnd.rfind(u'{{langue|') != PageEnd.rfind(u'{{langue|fr'):
						langue2 = PageEnd[PageEnd.rfind(u'{{langue|')+len(u'{{langue|'):len(PageEnd)]
						langue2 = langue2[0:langue2.find(u'}}')]
						if langue2.find(u'|') != -1: langue2 = langue2[0:langue2.find(u'|')]
						Langue2 = Page(site,u'Modèle:' + langue2)
						try: PageTemp3 = Langue2.get()
						except wikipedia.NoPage: 
							print "NoPage l 1607 : " + langue2
							return
						except wikipedia.ServerError: 
							print "ServerError l 1610 : " + langue2
							return
						except wikipedia.IsRedirectPage:
							print u'Redirection l 1613 : ' + langue2
							return
						except wikipedia.BadTitle:
							print u'BadTitle l 1616 : ' + langue2
							return
						if PageTemp3.find(u'<noinclude>') != -1:
							langue2 = CleDeTri(PageTemp3[0:PageTemp3.find(u'<noinclude>')])
							print langue2 # espagnol catalan
							if langue2 > langue:
								summary = summary + ', section ' + langue2 + u' > ' + langue
								print langue2 + u' > ' + langue
								ParagSuivants = PageEnd[PageEnd.rfind(u'{{langue|'):len(PageEnd)] + ParagSuivants
								PageEnd = PageEnd[0:PageEnd.rfind(u'{{langue|')]
								ParagSuivants = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + ParagSuivants
							else:
								ParagCourant = PageEnd[PageEnd.rfind(u'{{langue|'):len(PageEnd)] + ParagCourant
								PageEnd = PageEnd[0:PageEnd.rfind(u'{{langue|')]
								ParagCourant = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + ParagCourant
								#raw_input (ParagCourant.encode(config.console_encoding, 'replace')) catalan, espagnol, portugais
							PageEnd = PageEnd[0:PageEnd.rfind(u'\n')]
						else: 
							print u'l 1629'
							return
					#raw_input (PageEnd.encode(config.console_encoding, 'replace'))
					PageEnd = PageEnd + ParagCourant + ParagSuivants
			else:
				print u'l 1634'
				return
			PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{langue|')]
			PageTemp = PageTemp[PageTemp.find(u'{{langue|'):len(PageTemp)]
			#raw_input (PageTemp.encode(config.console_encoding, 'replace'))
		else:
			PageEnd = PageEnd + PageTemp
			PageTemp = u''
		#print(PageEnd.encode(config.console_encoding, 'replace'))
		#print(PageTemp.encode(config.console_encoding, 'replace'))
	PageTemp = PageEnd + PageTemp
	PageEnd = u''"""

	# 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'{{langue|fr}}') != -1 and len(PageHS) < 7: # sinon trop long ( > 1 h par page)
		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():
					if pageAnagr.namespace() !=0 and anagramme != u'Utilisateur:JackBot/test':
						return
					else:
						try:
							PageTempAnagr = pageAnagr.get()
						except wikipedia.NoPage: return
						except wikipedia.IsRedirectPage: return
						except wikipedia.LockedPage: return
					if PageTempAnagr.find(u'{{langue|fr}}') != -1:
						ListeAnagrammes = ListeAnagrammes + u'* [[' + anagramme + u']]\n'
		if ListeAnagrammes != u'':
			position = PageTemp.find(u'{{langue|fr}}')+len(u'{{langue|fr}}')
			PageTemp2 = PageTemp[position:len(PageTemp)]
			if PageTemp2.find(u'{{-voir-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-voir-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1):
				PageTemp = PageTemp[0:position+PageTemp2.find(u'{{-voir-}}')] + u'{{-anagr-}}\n\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'{{-voir-}}'):len(PageTemp)]
			elif PageTemp2.find(u'{{-réf-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-réf-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1):
				PageTemp = PageTemp[0:position+PageTemp2.find(u'{{-réf-}}')] +  u'{{-anagr-}}\n\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'{{-réf-}}'):len(PageTemp)]
			elif PageTemp2.find(u'== {{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'== {{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1):
				PageTemp = PageTemp[0:position+PageTemp2.find(u'== {{langue|')] + u'{{-anagr-}}\n\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'== {{langue|'):len(PageTemp)]
			elif PageTemp2.find(u'=={{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'=={{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1):
				PageTemp = PageTemp[0:position+PageTemp2.find(u'=={{langue|')] + u'{{-anagr-}}\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'=={{langue|'):len(PageTemp)]								
			elif PageTemp2.find(u'{{clé de tri') != -1:
				PageTemp = PageTemp[0:position+PageTemp2.find(u'{{clé de tri')] + u'{{-anagr-}}\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'{{clé de tri'):len(PageTemp)]
			elif PageTemp2.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:position+PageTemp2.find(u'[[Catégorie:')] + u'{{-anagr-}}\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'[[Catégorie:'):len(PageTemp)]
			else:	# Avant interwikis ^w^wikt^b^n^s^q
				if re.compile('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]').search(PageTemp):
					try:
						i1 = re.search('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]',PageTemp).start()	# ATTENTION à [[wikt:...
						PageTemp = PageTemp[:i1] + u'{{-anagr-}}\n' + ListeAnagrammes + PageTemp[i1:]
					except:
						print u'pb regex interwiki'
				else:
					PageTemp = PageTemp + u'{{-anagr-}}\n' + ListeAnagrammes'''
\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'=={{langue|'):len(PageTemp)]								
			elif PageTemp2.find(u'{{clé de tri') != -1:
				PageTemp = PageTemp[0:position+PageTemp2.find(u'{{clé de tri')] + u'{{-anagr-}}\n\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'{{clé de tri'):len(PageTemp)]
			elif PageTemp2.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:position+PageTemp2.find(u'[[Catégorie:')] + u'{{-anagr-}}\n\n' + ListeAnagrammes + PageTemp[position+PageTemp2.find(u'[[Catégorie:'):len(PageTemp)]
			else:	# Avant interwikis
				if PageTemp.find(u'[[en:') or PageTemp.find(u'[[ko:') or PageTemp.find(u'[[vi:') != -1:
					regex = ur'\[\[(.+?)(?:\]\]\n)'		# copié de pywikipedia mais pas infaillible, d'où le [[en:...
					if re.compile(regex).search(PageTemp):
						try:
							PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[re.search(regex,PageTemp).end():len(PageTemp)]
						except:
							print u'pb regex interwiki'
					else:
						PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes
				else:
					PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes

	# Remplacement des codes langues
	while PageTemp.find(u'=prv=') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'=prv=')] + u'langue|oc' + PageTemp[PageTemp.find(u'=prv=')+len(u'=prv='):len(PageTemp)]
	AncienModele = range(1, 13)
	NouveauModele = range(1, 13)
	AncienModele[1] = u'ko-hanja'
	NouveauModele[1] = u'ko-Hani'
	AncienModele[2] = u'be-x-old'
	NouveauModele[2] = u'be-tarask'
	AncienModele[3] = u'zh-min-nan'
	NouveauModele[3] = u'nan'
	AncienModele[4] = u'lsf'
	NouveauModele[4] = u'fsl'
	AncienModele[5] = u'arg'
	NouveauModele[5] = u'an'
	AncienModele[6] = u'nav'
	NouveauModele[6] = u'nv'
	AncienModele[7] = u'prv'
	NouveauModele[7] = u'oc'
	AncienModele[8] = u'nds-NL'
	NouveauModele[8] = u'nds-nl'	
	AncienModele[9] = u'gsw-FR'
	NouveauModele[9] = u'gsw-fr'
	AncienModele[10] = u'zh-sc'
	NouveauModele[10] = u'zh-Hans'
	AncienModele[11] = u'roa-rup'
	NouveauModele[11] = u'rup'
	for p in range(1,12):
		while PageTemp.find(u'|' + AncienModele[p] + u'|') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'|' + AncienModele[p] + u'|')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'|' + AncienModele[p] + u'|')+len(u'|' + AncienModele[p] + u'|')-1:len(PageTemp)]
		while PageTemp.find(u'|' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'|' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'|' + AncienModele[p] + u'}')+len(u'|' + AncienModele[p] + u'}')-1:len(PageTemp)]
		while PageTemp.find(u'{' + AncienModele[p] + u'|') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'{' + AncienModele[p] + u'|')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'{' + AncienModele[p] + u'|')+len(u'{' + AncienModele[p] + u'|')-1:len(PageTemp)]
		while PageTemp.find(u'{' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'{' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'{' + AncienModele[p] + u'}')+len(u'{' + AncienModele[p] + u'}')-1:len(PageTemp)]
		while PageTemp.find(u'=' + AncienModele[p] + u'}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'=' + AncienModele[p] + u'}')+1] + NouveauModele[p] + PageTemp[PageTemp.find(u'=' + AncienModele[p] + u'}')+len(u'=' + AncienModele[p] + u'}')-1:len(PageTemp)]
	while PageTemp.find(u'{{WP|lang=sgs') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{WP|lang=sgs')] + u'{{WP|lang=bat-smg' + PageTemp[PageTemp.find(u'{{WP|lang=sgs')+len(u'{{WP|lang=sgs'):len(PageTemp)]
						
	# Ajouts des codes langues
	EstCodeLangue = u'false'
	trad = u'false'
	codelangue = None
	position = 1
	p = 1
	while position > -1:	# On sauvegarde la partie traitée d'une page provisoire dans une page finale jusqu'à disparition de la première
(contracted; show full)
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "|" + PageTemp[position+5:position+10] + "}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
					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 
modèltexte
						EstCodeLangue = "false"
						trad = u'false'
						if PageTemp.find(u'}}') > PageTemp.find(u'{{') and PageTemp.find(u'{{') != -1:
							PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)]
							PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2]
							PageTemp = PageTemp[PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2:len(PageTemp)]
							break
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "}}"PageTemp.find(u'}}')+2]
					elif p < limit4:	# ébauche : catégorisée quel que soit EstCodeLangue
						if codelangue:
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"		
					elif p < limit5:	# Paragraphe avec code langue
						if EstCodeLangue == "true":
(contracted; show full)
# Traitement des modifications d'un compte
def crawlerUser(username):
	gen = pagegenerators.UserContributionsGenerator(username)
	for Page in pagegenerators.PreloadingGenerator(gen,100):
		modification(Page.title())


# Toutes les redirections
def crawlerRedirects():
	for Page in site.allpages(start=u'', namespace=0, includeredirects='only'):
		modification(Page.title())	
										
# Traitement de toutes les pages du site
def crawlerAll(start):
	gen = pagegenerators.AllpagesPageGenerator(start,namespace=0,includeredirects=False)
	for Page in pagegenerators.PreloadingGenerator(gen,100):
		#print (Page.title().encode(config.console_encoding, 'replace'))
		modification(Page.title())
		
def trim(s):
(contracted; show full)			print "NoPage l 3796"
			return
		except wikipedia.BadTitle: 
			print "NoPage l 3799"
			return
	
# Lancement

TraitementPage = modification(u'déferlable')
'''
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:=langue=',u'')

TraitementLiens = crawlerLink(u'Modèle:(',u'')
TraitementLiens = crawlerLink(u'Modèle:-flex-nom-',u'')'''
TraitementLiens = crawlerLink(u'Modèle:trad-début',u'')
TraitementLiens = crawlerLink(u'Modèle:clé de tri',u'')
TraitementLiens = crawlerLink(u'Modèle:(',u'')
TraitementLiens = crawlerLink(u'Modèle:R:DAF8',u'homme')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:pron conv',True,u'')

TraitementFichier = crawlerFile('articles_list.txt')
TraitementRedirections = crawlerRedirects()
TraitementLiensCategorie = crawlerCatLink(u'Modèles de code langue',u'')
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>