Difference between revisions 14818379 and 14865244 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 de modèles et d'espaces.
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 (dont "nocat=1" si une catégorie le justifie).
5) Complète les flexions de verbes en français à vérifier.
6) Traduit les importations de en.wikt.
7) Gère des modèles {{voir}} en début de page.
8) Ajoute les anagrammes
9) Teste les URL et indique si elles sont brisées
10) Remplace les modèles obsolètes
11) Créer des liens absents : http://fr.wiktionary.org/w/index.php?title=radiateur&diff=prev&oldid=14443668
12) Détecte les modèles à ajouter : http://fr.wiktionary.org/w/index.php?title=cl%C3%A9&diff=prev&oldid=14443625

Testé ici : http://fr.wiktionary.org/w/index.php?title=Utilisateur%3AJackBot%2Ftest&diff=14533806&oldid=14533695
'''

# Importation des modules
import catlib, pagegenerators, os, codecs, urllib, re, collections, socket,
import hyperlynx, CleDeTri, HTMLUnicode		# Faits maison
from wikipedia import *

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

# Modèles du site à traiter
limit6=96970
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[820] = u'pétanque'
Modele[821] = u'accord genre ?'
Modele[822] = u'supprimer-déf ?'
Modele[823] = u'hyperbole'
Modele[824] = u'idiotisme'
Modele[825] = u'indéfini'

limit4 = 826	# 
ébauchescode langue quoi qu'il arrive
Modele[826] = u'ébauche-synnote-gentilé'
Modele[827] = u'ébauche-étym-nom-scientifique'
Modele[828] = u'ébauche-trans'
Modele[829] = u'ébauche-déf'
Modele[830] = u'ébauche-étym'
Modele[831] = u'ébauche-pron'
Modele[832] = u'ébauche'
Modele[833] = u'ébauche-exe'
Modele[834] = u'ébauche-pron'
Modele[835] = u'ébauche-syn'
'''
# non traités
Modele[] = u'spécialement' 
Modele[] = u'T'
Modele[] = u'région'
Modele[] = u'régio'
Modele[] = u'régional'
'''
# Modèles régionaux, pb du nocat pour les prononciations
limit5 = 835
Modele[835] = u'Guadeloupe'6
Modele[836] = u'Guinée'
Modele[837] = u'Guyane'
Modele[838] = u'Haïti'
Modele[839] = u'Honduras'
Modele[840] = u'Île-de-France'
Modele[841] = u'Inde'
Modele[842] = u'Irlande'
(contracted; show full)Modele[959] = u'Écosse'
Modele[960] = u'Espagne'
Modele[961] = u'États-Unis'
Modele[962] = u'Europe'
Modele[963] = u'France'
Modele[964] = u'Franche-Comté'
Modele[965] = u'Gascogne'
Modele[966] = u'Gaspésie'

Modele[967] = u'Guadeloupe'

# Modèles de pronociation à synchroniser
Modele[9678] = u'en-conj-rég'
#Modele[] = u'fr-rég'
#Modele[] = u'fr-inv'

# Modèles des autres Wiktionnaires à convertir
LimitTemplate = 82
Template = range(1, LimitTemplate+1)
TemplateFR = range(1, LimitTemplate+1)
(contracted; show full)
			PageTemp = PageTemp[0:PageTemp.find(u'<sup/>')] + u'</sup>' + PageTemp[PageTemp.find(u'<sup/>')+len(u'<sup/>'):len(PageTemp)]
			
		if debogage == True: print u'Remplacements des modèles'
		PageTemp = re.sub(ur'{{(formatnum|Formatnum|FORMATNUM)\:([0-9]*) ', ur'{{\1:\2', PageTemp)
		PageTemp = re.sub(ur'{{terme*\|Registre neutre}} *', ur'', PageTemp)

		# Ligne de forme
		PageTemp = re.sub(ur'([^d\-]+\-\|[a-z]+\}\}\n)\# *', ur"\1'''" + PageHS + ur"''' {{pron}}\n# ", PageTemp)
		if PageTemp.find(u'{{Latn') == -1 and PageTemp.find(u'{{Grek') == -1 and PageTemp.find(u'{{Cyrl') == -1 and PageTemp.find(u'{{Armn') == -1 and PageTemp.find(u'{{Geor') == -1 and PageTemp.find(u'{{Hebr') == -1 and PageTemp.find(u'{{Arab') == -1 and PageTemp.find(u'{{Syrc') == -1 and PageTemp.find(u'{{Thaav{{Deva') == -1 and PageTemp.find(u'{{Hang') == -1 and PageTemp.find(u'{{Hira') == -1 and PageTemp.find(u'{{Kana') == -1 and PageTemp.find(u'{{Hrkt') == -1 and PageTemp.find(u'{{Hani') == -1 and PageTemp.find(u'{{Jpan') == -1 and PageTemp.find(u'{{Hans') == -1 and PageTemp.find(u'{{Hant') == -1 and PageTemp.find(u'{{zh-mot') == -1 and PageTemp.find(u'{{kohan') == -1 and PageTemp.find(u'{{ko-nom') == -1:
			PageTemp = re.sub(ur'([^d\-]+\-\|[a-z]+\}\}\n\{\{[^\n]*\n)\# *', ur"\1'''" + PageHS + ur"''' {{pron}}\n# ", PageTemp)
		while PageTemp.find(u'\n {') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'\n {')+1] + PageTemp[PageTemp.find(u'\n {')+2:len(PageTemp)]		
		while re.compile('{{T\|.*\n\n\*[ ]*{{T\|').search(PageTemp):
			i1 = re.search(u'{{T\|.*\n\n\*[ ]*{{T\|',PageTemp).end()
			PageTemp = PageTemp[:i1][0:PageTemp[:i1].rfind(u'\n')-1] + PageTemp[:i1][PageTemp[:i1].rfind(u'\n'):len(PageTemp[:i1])] + PageTemp[i1:]
(contracted; show full)
		while PageTemp.find(u'|notat=1') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'|notat=1')] + u'|nocat=1' + PageTemp[PageTemp.find(u'|notat=1')+len(u'|notat=1'):len(PageTemp)]
		regex = u'\{\{trad\|([a-z][a-z]?[a-z])\|\}\}'
		if re.search(regex, PageTemp):
			
#PageTemp = re.sub(regex, ur'{{ébauche-trad|\1}}', PageTemp)	# pb de symbole
			PageTemp = re.sub(regex, u'{{ébauche-trad}}', PageTemp)
		
		LimiteReg = 13
		ModRegion = range(1, LimiteReg)
		ModRegion[1] = u'AU'
		ModRegion[2] = u'AR'
		ModRegion[3] = u'AT'
		ModRegion[4] = u'BE'
(contracted; show full)				except wikipedia.ServerError:
					print "ServerError l 1527 : " + langue1
					break
				except wikipedia.BadTitle:
					print "BadTitle l 1530 : " + langue1
					break
				if PageTemp2.find(u'<noinclude>') != -1:
					langue = 
CleDeTri.CleDeTri(PageTemp2[0:PageTemp2.find(u'<noinclude>')])
					langue2 = u'zzz'
					TradCourante = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + PageTemp[0:PageTemp.find(u'\n')]
					TradSuivantes = u''
					PageEnd = PageEnd[0:PageEnd.rfind(u'\n')]
					PageTemp = PageTemp[PageTemp.find(u'\n'):len(PageTemp)]
(contracted; show full)							except wikipedia.ServerError: 
								print "ServerError l 1883 : " + langue2
								return
							except wikipedia.IsRedirectPage:
								print u'Redirection l 1886 : ' + langue2
								return
						if PageTemp3.find(u'<noinclude>') != -1:
							langue2 = 
CleDeTri.CleDeTri(PageTemp3[0:PageTemp3.find(u'<noinclude>')])
							if langue2 > langue:
								if debogage == True: 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')]
									summary = summary + ', traduction ' + langue2 + u' > ' + langue
(contracted; show full)					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.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:
(contracted; show full)							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.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|')]
(contracted; show full)
	) and (PageTemp.find(u':Catégorie:Gentilés') + 1 != PageTemp.rfind(u'Catégorie:Gentilés'))

	) or (PageTemp.find(u'{{note-gentilé'
	) != -1 and (PageTemp.find(u'{{note-gentilé') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u'{{note-gentilé') + 1 != PageTemp.rfind(u'{{note-gentilé'))

	
	) or (PageTemp.find(u'Catégorie:Continents'
	) != -1 and (PageTemp.find(u':Catégorie:Continents') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Continents') + 1 != PageTemp.rfind(u'Catégorie:Continents'))

	) or (PageTemp.find(u'Catégorie:Pays'
	) != -1 and (PageTemp.find(u':Catégorie:Pays') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Pays') + 1 != PageTemp.rfind(u'Catégorie:Pays'))

	) or (PageTemp.find(u'Catégorie:Localités'
	) != -1 and (PageTemp.find(u':Catégorie:Localités') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Localités') + 1 != PageTemp.rfind(u'Catégorie:Localités'))

	) or (PageTemp.find(u'Catégorie:Îles'
	) != -1 and (PageTemp.find(u':Catégorie:Îles') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Îles') + 1 != PageTemp.rfind(u'Catégorie:Îles'))

	) or (PageTemp.find(u'Catégorie:Régions'
	) != -1 and (PageTemp.find(u':Catégorie:Régions') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Régions') + 1 != PageTemp.rfind(u'Catégorie:Régions'))

	) or (PageTemp.find(u'Catégorie:Océans'
	) != -1 and (PageTemp.find(u':Catégorie:Océans') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Océans') + 1 != PageTemp.rfind(u'Catégorie:Océans'))

	) or (PageTemp.find(u'Catégorie:Mers'
	) != -1 and (PageTemp.find(u':Catégorie:Mers') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Mers') + 1 != PageTemp.rfind(u'Catégorie:Mers'))

	) or (PageTemp.find(u'Catégorie:Fleuves'
	) != -1 and (PageTemp.find(u':Catégorie:Fleuves') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Fleuves') + 1 != PageTemp.rfind(u'Catégorie:Fleuves'))

	) or (PageTemp.find(u'Catégorie:Rivières'
	) != -1 and (PageTemp.find(u':Catégorie:Rivières') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Rivières') + 1 != PageTemp.rfind(u'Catégorie:Rivières'))

	) or (PageTemp.find(u'Catégorie:Baies'
	) != -1 and (PageTemp.find(u':Catégorie:Baies') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Baies') + 1 != PageTemp.rfind(u'Catégorie:Baies'))

	) or (PageTemp.find(u'Catégorie:Détroits'
	) != -1 and (PageTemp.find(u':Catégorie:Détroits') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Détroits') + 1 != PageTemp.rfind(u'Catégorie:Détroits'))

	) or (PageTemp.find(u'Catégorie:Montagnes'
	) != -1 and (PageTemp.find(u':Catégorie:Montagnes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Montagnes') + 1 != PageTemp.rfind(u'Catégorie:Montagnes'))

	) or (PageTemp.find(u'Catégorie:Chefs-lieux'
	) != -1 and (PageTemp.find(u':Catégorie:Chefs-lieux') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Chefs-lieux') + 1 != PageTemp.rfind(u'Catégorie:Chefs-lieux
	) or (PageTemp.find(u'Catégorie:Anciennes divisions géographiques'
	) != -1 and (PageTemp.find(u':Catégorie:Anciennes divisions géographiques') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Anciennes divisions géographiques') + 1 != PageTemp.rfind(u'Catégorie:Anciennes divisions géographiques'))

	) or (PageTemp.find(u'Catégorie:Collectivités d’outre-mer'
	) != -1 and (PageTemp.find(u':Catégorie:Collectivités d’outre-mer') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Collectivités d’outre-mer‎') + 1 != PageTemp.rfind(u'Catégorie:Collectivités d’outre-mer‎'))

	) or (PageTemp.find(u'Catégorie:Continents'
	) != -1 and (PageTemp.find(u':Catégorie:Continents') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Continents') + 1 != PageTemp.rfind(u'Catégorie:Continents'))

	) or (PageTemp.find(u'Catégorie:Districts'
	) != -1 and (PageTemp.find(u':Catégorie:Districts') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Districts') + 1 != PageTemp.rfind(u'Catégorie:Districts'))

	) or (PageTemp.find(u'Catégorie:Hagiotoponymes‎'
	) != -1 and (PageTemp.find(u':Catégorie:Hagiotoponymes‎') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Hagiotoponymes‎') + 1 != PageTemp.rfind(u'Catégorie:Hagiotoponymes‎'))

	) or (PageTemp.find(u'Catégorie:Hydronymes'
	) != -1 and (PageTemp.find(u':Catégorie:Hydronymes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Hydronymes') + 1 != PageTemp.rfind(u'Catégorie:Hydronymes'))

		) or (PageTemp.find(u'Catégorie:Baies'
		) != -1 and (PageTemp.find(u':Catégorie:Baies') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Baies') + 1 != PageTemp.rfind(u'Catégorie:Baies'))

		) or (PageTemp.find(u'Catégorie:Chutes‎'
		) != -1 and (PageTemp.find(u':Catégorie:Chutes‎') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Chutes‎') + 1 != PageTemp.rfind(u'Catégorie:Chutes‎'))
		
		) or (PageTemp.find(u'Catégorie:Détroits'
		) != -1 and (PageTemp.find(u':Catégorie:Détroits') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Détroits') + 1 != PageTemp.rfind(u'Catégorie:Détroits'))
		
		) or (PageTemp.find(u'Catégorie:Fleuves'
		) != -1 and (PageTemp.find(u':Catégorie:Fleuves') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Fleuves') + 1 != PageTemp.rfind(u'Catégorie:Fleuves'))
	
		) or (PageTemp.find(u'Catégorie:Golfes'
		) != -1 and (PageTemp.find(u':Catégorie:Golfes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Golfes') + 1 != PageTemp.rfind(u'Catégorie:Golfes'))
	
		) or (PageTemp.find(u'Catégorie:Lacs'
		) != -1 and (PageTemp.find(u':Catégorie:Lacs') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Lacs') + 1 != PageTemp.rfind(u'Catégorie:Lacs'))
		
		) or (PageTemp.find(u'Catégorie:Mers'
		) != -1 and (PageTemp.find(u':Catégorie:Mers') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Mers') + 1 != PageTemp.rfind(u'Catégorie:Mers'))
	
		) or (PageTemp.find(u'Catégorie:Océans'
		) != -1 and (PageTemp.find(u':Catégorie:Océans') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Océans') + 1 != PageTemp.rfind(u'Catégorie:Océans'))

		) or (PageTemp.find(u'Catégorie:Rivières'
		) != -1 and (PageTemp.find(u':Catégorie:Rivières') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
		) and (PageTemp.find(u':Catégorie:Rivières') + 1 != PageTemp.rfind(u'Catégorie:Rivières'))

	) or (PageTemp.find(u'Catégorie:Îles'
	) != -1 and (PageTemp.find(u':Catégorie:Îles') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Îles') + 1 != PageTemp.rfind(u'Catégorie:Îles'))

	) or (PageTemp.find(u'Catégorie:Localités'
	) != -1 and (PageTemp.find(u':Catégorie:Localités') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Localités') + 1 != PageTemp.rfind(u'Catégorie:Localités'))	

	) or (PageTemp.find(u'Catégorie:Montagnes'
	) != -1 and (PageTemp.find(u':Catégorie:Montagnes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Montagnes') + 1 != PageTemp.rfind(u'Catégorie:Montagnes'))

	) or (PageTemp.find(u'Catégorie:Odonymes'
	) != -1 and (PageTemp.find(u':Catégorie:Odonymes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Odonymes') + 1 != PageTemp.rfind(u'Catégorie:Odonymes'))

	) or (PageTemp.find(u'Catégorie:Pays'
	) != -1 and (PageTemp.find(u':Catégorie:Pays') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Pays') + 1 != PageTemp.rfind(u'Catégorie:Pays'))

	) or (PageTemp.find(u'Catégorie:Péninsules'
	) != -1 and (PageTemp.find(u':Catégorie:Péninsules') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Péninsules') + 1 != PageTemp.rfind(u'Catégorie:Péninsules'))
	
	) or (PageTemp.find(u'Catégorie:Quartiers'
	) != -1 and (PageTemp.find(u':Catégorie:Quartiers') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Quartiers') + 1 != PageTemp.rfind(u'Catégorie:Quartiers'))
	
	) or (PageTemp.find(u'Catégorie:Volcans'
	) != -1 and (PageTemp.find(u':Catégorie:Volcans') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Volcans') + 1 != PageTemp.rfind(u'Catégorie:Volcans'))

	) or (PageTemp.find(u'Catégorie:Régions'
	) != -1 and (PageTemp.find(u':Catégorie:Régions') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Régions') + 1 != PageTemp.rfind(u'Catégorie:Régions'))

	) or (PageTemp.find(u'Catégorie:États'
	) != -1 and (PageTemp.find(u':Catégorie:États') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:États') + 1 != PageTemp.rfind(u'Catégorie:États'))

	) or (PageTemp.find(u'Catégorie:Provinces'
	) != -1 and (PageTemp.find(u':Catégorie:Provinces') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Provinces') + 1 != PageTemp.rfind(u'Catégorie:Provinces'))

	) or (PageTemp.find(u'Catégorie:Départements'
	) != -1 and (PageTemp.find(u':Catégorie:Départements') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Départements') + 1 != PageTemp.rfind(u'Catégorie:Départements'))

	) or (PageTemp.find(u'Catégorie:Cantons'
	) != -1 and (PageTemp.find(u':Catégorie:Cantons') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Cantons') + 1 != PageTemp.rfind(u'Catégorie:Cantons'))

	) or (PageTemp.find(u'Catégorie:Capitales'
	) != -1 and (PageTemp.find(u':Catégorie:Capitales') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Capitales') + 1 != PageTemp.rfind(u'Catégorie:Capitales'))

	) or (PageTemp.find(u'Catégorie:Districts'
	) != -1 and (PageTemp.find(u':Catégorie:Districts') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Districts') + 1 != PageTemp.rfind(u'Catégorie:DistrictSeigneuries‎'
	) != -1 and (PageTemp.find(u':Catégorie:Seigneuries‎') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Seigneuries‎') + 1 != PageTemp.rfind(u'Catégorie:Seigneuries‎'))
	
	) or (PageTemp.find(u'Catégorie:Chefs-lieux'
	) != -1 and (PageTemp.find(u':Catégorie:Chefs-lieux') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Chefs-lieux') + 1 != PageTemp.rfind(u'Catégorie:Chefs-lieux'))
	
	) or (PageTemp.find(u'Catégorie:Capitales'
	) != -1 and (PageTemp.find(u':Catégorie:Capitales') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1
	) and (PageTemp.find(u':Catégorie:Capitales') + 1 != PageTemp.rfind(u'Catégorie:Capitales'))):
							PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)]
						break
					elif Modele[p] == u'zoologie' or Modele[p] == u'zool' or Modele[p] == u'entomologie' or Modele[p] == u'entomol' or Modele[p] == u'entom' or Modele[p] == u'ornithologie':
(contracted; show full)
								if TitreTemp.find(u'ä'.upper()) !=-1: TitreTemp = TitreTemp.replace(u'ä'.upper(),u'z€€')	
								if TitreTemp.find(u'ö') !=-1: TitreTemp = TitreTemp.replace(u'ö',u'z€€€')	
								if TitreTemp.find(u'ö'.upper()) !=-1: TitreTemp = TitreTemp.replace(u'ö'.upper(),u'z€€€')	
							if TitreTemp != PageHS:
								TitreTemp = 
CleDeTri.CleDeTri(TitreTemp)
								PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + TitreTemp + PageTemp[PageTemp.find(u'}}'):len(PageTemp)]
							
						PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2]

					elif p < limit2:	# Paragraphe sans code langue
						if debogage == True: print "limit2"
						EstCodeLangue = "false"
(contracted; show full)							if debogage == True: print u'avec'
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						else:
							if debogage == True: print u'sans'
							PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"		
					elif p < limit5:
						if debogage == True: print "limit5"
						if debogage == True: print u'
ébauche : cCatégorisée quel que soit EstCodeLangue (ex : ébauches)'
						if codelangue:
							PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}"
						else:
							PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}"		
					else:
						if debogage == True: print u'Paragraphe régional : non catégorisé dans la prononciation'
						if PageEnd.rfind(u'{{') != -1:
(contracted; show full)			print "BadTitle en sauvegarde"
			return
		except AttributeError:
			print "AttributeError en sauvegarde"
			return
			
# Lancement

#TraitementLiens = crawlerLink(u'Modèle:note-gentilé',u'')

# Quotidiennement :
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'')
TraitementLiens = crawlerLink(u'Modèle:-',u'')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',FalseCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'')
TraitementLiens = crawlerLink(u'Modèle:trad',u'')
#TraitementLiensCategorie = crawlerCatLink(u'Catégorie:Modèles désuets',u'')
#TraitementLiens = crawlerLink(u'Modèle:SAMPA',u'') : remplacer les tableaux de prononciations ?
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:-',u'')
TraitementLiens = crawlerLink(u'Modèle:-ortho-alt-',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'')
TraitementLiens = crawlerLink(u'Modèle:=langue=',u'')

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