Exemple #1
0
def modification(PageHS):
	summary = u'Formatage'
	page = Page(site,PageHS)
	if page.namespace() != 0: return
	try:
		PageBegin = page.get()
	except wikipedia.NoPage:
		print "NoPage"
		return
	except wikipedia.IsRedirectPage:
		print "Redirect page"
		return
	PageTemp = PageBegin
	PageEnd = u''
	
	# Traitement des modèles
	regex = ur'\{\{[P|p]ortail([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des portails'
		PageTemp = re.sub(regex, ur'', PageTemp)
	regex = ur'\{\{[P|p]alette([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des palettes'
		PageTemp = re.sub(regex, ur'', PageTemp)
	PageTemp = PageTemp.replace(u'{{PDC}}', u'profondeur de champ')
	
	# Traitement des hyperliens
	PageTemp = hyperlynx.hyperlynx(PageTemp)
	
	# Clés de tri pour les noms
	if PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')]
		PageTemp = PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'):PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie')] + PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}'):len(PageTemp)]
	if PageTemp.find(u'{{DEFAULTSORT:') == -1:
		ClePage = CleDeTri.CleDeTri(PageHS)
		if ClePage != u'' and ClePage != None:
			if PageHS.rfind(u' ') != -1:
				Nom = PageHS[PageHS.rfind(u' ')+1:len(PageHS)]
				PageHS2 = PageHS[PageHS.find(u'/')+1:len(PageHS)]
				PageHS2 = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
				Prenom = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
				Prenom = Prenom[Prenom.find(u'/')+1:len(Prenom)]
				Prenom = Prenom[0:Prenom.find(u' ')]
				print PageHS2
				print Nom
				print Prenom
				if Nom[0:1] == PageHS2[0:1]:
					PageEnd = PageEnd + u'{{DEFAULTSORT:' + CleDeTri.CleDeTri(Nom) + u', ' + CleDeTri.CleDeTri(Prenom) + u'}}\n\n'
				else:
					print PageHS.encode(config.console_encoding, 'replace')
			else:
				print PageHS.encode(config.console_encoding, 'replace')
	PageEnd = PageEnd + PageTemp
	if PageEnd != PageBegin: sauvegarde(page,PageEnd,summary)
Exemple #2
0
def modification(PageHS):
	summary = u'Formatage'
	page = Page(site,PageHS)
	if page.namespace() != 0: return
	try:
		PageBegin = page.get()
	except wikipedia.NoPage:
		print "NoPage"
		return
	except wikipedia.IsRedirectPage:
		print "Redirect page"
		return
	PageTemp = PageBegin
	PageEnd = u''
	
	# Traitement des modèles
	regex = ur'\{\{[P|p]ortail([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des portails'
		PageTemp = re.sub(regex, ur'', PageTemp)
	regex = ur'\{\{[P|p]alette([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des palettes'
		PageTemp = re.sub(regex, ur'', PageTemp)
	PageTemp = PageTemp.replace(u'{{PDC}}', u'profondeur de champ')
	PageTemp = PageTemp.replace(u'[[Catégorie:{{PAGENAME}}|{{SUBPAGENAME}}]]', u'{{AutoCat}}')
	PageTemp = PageTemp.replace(u'[[Catégorie:{{BASEPAGENAME}}|{{SUBPAGENAME}}]]', u'{{AutoCat}}')
	PageTemp = PageTemp.replace(u'{{BookCat}}', u'{{AutoCat}}')
	PageTemp = PageTemp.replace(u'{{reflist}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Reflist}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'<references/>', u'{{Références}}')
	PageTemp = PageTemp.replace(u'<references />', u'{{Références}}')
	
	# Traitement des hyperliens
	PageTemp = hyperlynx.hyperlynx(PageTemp)
	
	# Clés de tri pour les noms propres
	if PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]') != -1:
		PageEnd = PageEnd + PageTemp[:PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')]
		PageTemp = PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'):PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie')] + PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}'):]
	
	''' Ne convient pas pour les biographies https://fr.wikibooks.org/w/index.php?title=Photographie/Personnalit%C3%A9s/B/Pierre_Berdoy&diff=prev&oldid=526479
	regex = ur'()\n{{DEFAULTSORT[^}]*}}'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1', PageTemp)
	regex = ur'()\n{{defaultsort[^}]*}}'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1', PageTemp)
	'''
	PageEnd = PageEnd + PageTemp
	if PageEnd != PageBegin: sauvegarde(page,PageEnd,summary)
Exemple #3
0
def modification(PageHS):
	summary = u'Formatage'
	page = Page(site,PageHS)
	if page.namespace() != 0: return
	try:
		PageBegin = page.get()
	except wikipedia.NoPage:
		print "NoPage"
		return
	except wikipedia.IsRedirectPage:
		print "Redirect page"
		return
	PageTemp = PageBegin
	PageEnd = u''
	
	# Traitement des modèles
	regex = ur'\{\{[P|p]ortail([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des portails'
		PageTemp = re.sub(regex, ur'', PageTemp)
	regex = ur'\{\{[P|p]alette([^\}]*)\}\}'
	if re.search(regex, PageTemp):
		summary += ', retrait des palettes'
		PageTemp = re.sub(regex, ur'', PageTemp)
	PageTemp = PageTemp.replace(u'{{PDC}}', u'profondeur de champ')
	
	# Traitement des hyperliens
	PageTemp = hyperlynx.hyperlynx(PageTemp)
	
	# Clés de tri pour les noms propres
	if PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]') != -1:
		PageEnd = PageEnd + PageTemp[:PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')]
		PageTemp = PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'):PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie')] + PageTemp[PageTemp.find(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')+len(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}'):]
	
	regex = ur'()\n{{DEFAULTSORT[^}]*}}'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1', PageTemp)
	regex = ur'()\n{{defaultsort[^}]*}}'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1', PageTemp)
	PageEnd = PageEnd + PageTemp
	if PageEnd != PageBegin: sauvegarde(page,PageEnd,summary)
Exemple #4
0
def modification(PageHS):
	summary = u'Formatage'
	page = Page(site,PageHS)
	print(PageHS.encode(config.console_encoding, 'replace'))
	if not page.exists(): return
	if page.namespace() != ns and PageHS.find(u'Utilisateur:JackBot/test') == -1 and PageHS.find(u'Modèle:Cite pmid/') == -1:
		return
	else:
		#print 'ok'
		try:
			PageBegin = page.get()
		except wikipedia.NoPage:
			print "NoPage"
			return
		except wikipedia.IsRedirectPage:
			print "Redirect page"
			return
		except wikipedia.LockedPage:
			print "Locked/protected page"
			return
	PageTemp = PageBegin
	
	# Traitements des URL et leurs modèles
	if debogage == True: print u'Test des URL'
	PageTemp = hyperlynx.hyperlynx(PageTemp)
	if debogage == True: raw_input (u'--------------------------------------------------------------------------------------------')
	if PageTemp != PageBegin:
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/11#Identifier les liens brisés (le retour ;-))|Vérification des liens externes]]'
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/12#Remplacer_les_.7B.7BCite_web.7D.7D_par_.7B.7BLien_web.7D.7D|traduction de leurs modèles]]'
	regex = ur'({{[l|L]ien *\|[^}]*)traducteur( *=)'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1trad\2', PageTemp)
	
	# Nombres
	PageTemp = re.sub(ur'{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}', ur'{{\1:\2\3}}', PageTemp)

	# Protocoles
	PageTemp = PageTemp.replace(u'http://http://', u'http://')
	
	# Analyse des crochets et accolades (à faire : hors LaTex)
	if PageTemp.count('{') - PageTemp.count('}') != 0:
		if PageHS.find(u'Utilisateur:JackBot/') == -1: log(u'*[[' + PageHS + u']] : accolade cassée')
		#if debogageLent == True: raise Exception(u'Accolade cassée')
	if PageTemp.count('[') - PageTemp.count(']') != 0:
		if PageHS.find(u'Utilisateur:JackBot/') == -1: log(u'*[[' + PageHS + u']] : crochet cassé')
		#if debogageLent == True: raise Exception(u'Crochet cassé')
	if PageBegin.count('[[') - PageBegin.count(']]') != PageTemp.count('[[') - PageTemp.count(']]'):
		txtfile = codecs.open(output, 'a', 'utf-8')
		txtfile.write(PageTemp + u'\n\n------------------------------------------------------------------------------------------------------------\n\n')
		txtfile.close()	
		if debogage == True: print u'Crochets cassés'	#raise Exception(u'Crochets cassés')
		return
	if PageBegin.count('{{') - PageBegin.count('}}') != PageTemp.count('{{') - PageTemp.count('}}'):
		txtfile = codecs.open(output, 'a', 'utf-8')
		txtfile.write(PageTemp + u'\n\n------------------------------------------------------------------------------------------------------------\n\n')
		txtfile.close()	
		if debogage == True: print u'Accolades cassées'	#raise Exception(u'Accolades cassées')
		return

	# Catégories
	if PageHS.find(u'Modèle:Cite pmid/') != -1:
		PageTemp = PageTemp.replace(u'Catégorie:Modèle de source‎', u'Catégorie:Modèle pmid')
		PageTemp = PageTemp.replace(u'[[Catégorie:Modèle pmid]]', u'[[Catégorie:Modèle pmid‎|{{SUBPAGENAME}}]]')

	# Sauvegarde
	PageEnd = PageTemp
	if PageEnd != PageBegin:
		PageEnd = re.sub(ur'<br>', ur'<br/>', PageEnd)
		PageEnd = PageEnd.replace(ur'</ref><ref>', ur'</ref>{{,}}<ref>', )
		sauvegarde(page,PageEnd,summary)
Exemple #5
0
def modification(PageHS):
    summary = u"Formatage"
    page = Page(site, PageHS)
    print (PageHS.encode(config.console_encoding, "replace"))
    if not page.exists():
        return
    if page.namespace() != ns and page.title().find(u"Utilisateur:JackBot/test") == -1:
        return
    else:
        try:
            PageBegin = page.get()
        except wikipedia.NoPage:
            print "NoPage"
            return
        except wikipedia.IsRedirectPage:
            print "Redirect page"
            return
        except wikipedia.LockedPage:
            print "Locked/protected page"
            return
    PageTemp = PageBegin
    PageEnd = u""

    # Traitements des URL et leurs modèles
    if debogage == True:
        print u"Test des URL"
    PageTemp = hyperlynx.hyperlynx(PageTemp)
    if debogage == True:
        raw_input(u"--------------------------------------------------------------------------------------------")
    if PageTemp != PageBegin:
        summary = (
            summary
            + u", [[Wikipédia:Bot/Requêtes/2012/11#Identifier les liens brisés (le retour ;-))|Vérification des liens externes]]"
        )
        summary = (
            summary
            + u", [[Wikipédia:Bot/Requêtes/2012/12#Remplacer_les_.7B.7BCite_web.7D.7D_par_.7B.7BLien_web.7D.7D|traduction de leurs modèles]]"
        )

        # Nombres
    PageTemp = re.sub(ur"{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}", ur"{{\1:\2\3}}", PageTemp)
    """Semi-auto
	if re.search(ur'(¤|₳|฿|¢|₡|₵|₢|₫|€|ƒ|₣|₲|₭|£|₤|₥|₦|₱|\$|₮|₩|¥|Ƶ|₯|₴|₪|₠|₰)([0-9]+)(&nbsp;| )*([0-9]+)?[.,]([0-9]+)(&nbsp;| +)?', PageTemp):
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2013/03#.7B.7BRequ.C3.AAte_en_cours.7D.7D_Mille_millions_de_mille_sabords_.28et_pas_Sabords_mille_millions_de_mille_sabords.29|symbole monétaire]]'
		PageTemp = re.sub(ur'(¤|₳|฿|¢|₡|₵|₢|₫|€|ƒ|₣|₲|₭|£|₤|₥|₦|₱|\$|₮|₩|¥|Ƶ|₯|₴|₪|₠|₰)([0-9]+)(&nbsp;| )*([0-9]+)?[.,]([0-9]+)(&nbsp;| +)?', ur'{{unité|$2$4.$5|$1}}', PageTemp)
	"""
    # Analyse des crochets et accolades (à faire : hors LaTex)
    if PageTemp.count("{") - PageTemp.count("}") != 0:
        if PageHS.find(u"Utilisateur:JackBot/") == -1:
            log(u"*[[" + PageHS + u"]] : accolade cassée")
        # if debogageLent == True: raise Exception(u'Accolade cassée')
    if PageTemp.count("[") - PageTemp.count("]") != 0:
        if PageHS.find(u"Utilisateur:JackBot/") == -1:
            log(u"*[[" + PageHS + u"]] : crochet cassé")
        # if debogageLent == True: raise Exception(u'Crochet cassé')
    if PageBegin.count("[[") - PageBegin.count("]]") != PageTemp.count("[[") - PageTemp.count("]]"):
        txtfile = codecs.open(output, "a", "utf-8")
        txtfile.write(
            PageTemp
            + u"\n\n------------------------------------------------------------------------------------------------------------\n\n"
        )
        txtfile.close()
        if debogage == False:
            raise Exception(u"Crochets cassés")
    if PageBegin.count("{{") - PageBegin.count("}}") != PageTemp.count("{{") - PageTemp.count("}}"):
        txtfile = codecs.open(output, "a", "utf-8")
        txtfile.write(
            PageTemp
            + u"\n\n------------------------------------------------------------------------------------------------------------\n\n"
        )
        txtfile.close()
        if debogage == False:
            raise Exception(u"Accolades cassées")

        # En travaux : déplacement par étapes de PageTemp vers PageEnd en s'arrêtant sur chaque point à modifier
    """positionW = -1
	if PageTemp.find(u'{{Sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{Sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{Sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{Homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{Homonymie}}\n')+len(u'{{Homonymie}}\n')
	elif PageTemp.find(u'{{homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{homonymie}}\n')+len(u'{{homonymie}}\n')
	elif PageTemp.find(u'{{Titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{Titres homonymes}}\n')+len(u'{{Titres homonymes}}\n')
	elif PageTemp.find(u'{{titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{titres homonymes}}\n')+len(u'{{titres homonymes}}\n')		
	elif PageTemp.find(u'{{Communes') != -1:
		positionW = PageTemp.find(u'{{Communes')
	elif PageTemp.find(u'{{communes') != -1:
		positionW = PageTemp.find(u'{{communes')
	elif PageTemp.find(u'{{Patronyme') != -1:
		positionW = PageTemp.find(u'{{Patronyme')
	elif PageTemp.find(u'{{patronyme') != -1:
		positionW = PageTemp.find(u'{{patronyme')		
	elif PageTemp.find(u'=== Liens externes ===\n') != -1:
		positionW = PageTemp.find(u'=== Liens externes ===\n')+len(u'=== Liens externes ===\n')
	elif PageTemp.find(u'== Voir aussi ==\n') != -1:
		positionW = PageTemp.find(u'== Voir aussi ==\n')+len(u'== Voir aussi ==\n')
	elif PageTemp.find(u'{{Palette') != -1:
		positionW = PageTemp.find(u'{{Palette')
	elif PageTemp.find(u'{{palette') != -1:
		positionW = PageTemp.find(u'{{palette')
	elif PageTemp.find(u'{{Portail') != -1:
		positionW = PageTemp.find(u'{{Portail')
	elif PageTemp.find(u'{{portail') != -1:
		positionW = PageTemp.find(u'{{portail')
	elif PageTemp.find(u'[[Catégorie:') != -1:
		positionW = PageTemp.find(u'[[Catégorie:')
	elif re.compile('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]').search(PageTemp):
		try:
			i1 = re.search('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]',PageTemp).start()
			positionW = len(PageTemp[:i1])
		except:
			print u'pb regex interwiki'
	else:
		positionW = 0"""

    if PageTemp.find(u"{{DEFAULTSORT:") == -1 and PageTemp.find(u"{{CLEDETRI:") == -1 and ns == 0:
        ClePage = CleDeTri.CleDeTri(PageHS)
        if ClePage != u"" and ClePage != None and ClePage != PageHS:
            """ if PageTemp.find(u'né en ...')
				if PageHS.rfind(u' ') != -1:
					Nom = PageHS[PageHS.rfind(u' ')+1:len(PageHS)]
					PageHS2 = PageHS[PageHS.find(u'/')+1:len(PageHS)]
					PageHS2 = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = Prenom[Prenom.find(u'/')+1:len(Prenom)]
					Prenom = Prenom[0:Prenom.find(u' ')]
					print PageHS2
					print Nom
					print Prenom
					if Nom[0:1] == PageHS2[0:1]:
						PageEnd = PageEnd + u'{{DEFAULTSORT:' + CleDeTri.CleDeTri(Nom) + u', ' + CleDeTri.CleDeTri(Prenom) + u'}}\n\n'
					else:
						print PageHS.encode(config.console_encoding, 'replace')
				else:
					print PageHS.encode(config.console_encoding, 'replace')
			else:"""
            if PageTemp.find(u"[[Catégorie:") != -1:
                PageTemp = (
                    PageTemp[0 : PageTemp.find(u"[[Catégorie:")]
                    + u"\n{{DEFAULTSORT:"
                    + 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{{DEFAULTSORT:"
                    + 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[:i1] + u"\n{{DEFAULTSORT:" + ClePage + u"}}\n\n" + PageTemp[i1:]
                    except:
                        print u"pb regex interwiki"
                else:
                    PageTemp = PageTemp + u"\n\n{{DEFAULTSORT:" + ClePage + u"}}\n"
    else:
        PageTemp2 = PageTemp[PageTemp.find(u"{{DEFAULTSORT") : len(PageTemp)]
        ClePage = PageTemp2[PageTemp2.find(u"|") + 1 : PageTemp2.find(u"}}")]
        if CleDeTri.CleDeTri(PageHS) != ClePage and debogage == True:
            print (u"Fausse clé de tri dans :")
            print (PageHS.encode(config.console_encoding, "replace"))
            print (ClePage.encode(config.console_encoding, "replace"))

            # raw_input(PageEnd.encode(config.console_encoding, 'replace'))
    PageEnd = PageEnd + PageTemp
    if PageEnd != PageBegin:
        PageEnd = re.sub(ur"<br>", ur"<br/>", PageEnd)
        sauvegarde(page, PageEnd, summary)
Exemple #6
0
def modification(PageHS):
	summary = u'[[Aide:Syntaxe|Autoformatage]]'
	PageEnd = "" # On sauvegarde la partie traitée d'une page provisoire dans une page finale jusqu'à disparition de la première
	page = Page(site,PageHS)
	print(PageHS.encode(config.console_encoding, 'replace'))
	if page.exists():
		try:
			PageBegin = page.get()
		except wikipedia.NoPage:
			print "NoPage"
			return
		except wikipedia.IsRedirectPage:
			print "Redirect page"
			return
		except wikipedia.LockedPage:
			print "Locked/protected page"
			return
	else:
		print u'Page inexistante'
		return
	PageTemp = PageBegin
	
	# Clés de tri
	sizeR = 7
	regex = range(1, sizeR+1)
	regex[1] = ur'()\n{{[Cc]lé de tri[^}]*}}'
	regex[2] = ur'({{[Cc]hapitre[^}]*)\| *clé *=[^}\|]*'
	regex[3] = ur'({{[Ll]eçon[^}]*)\| *clé *=[^}\|]*'
	regex[4] = ur'({{[Cc]ours[^}]*)\| *clé *=[^}\|]*'
	regex[5] = ur'({{[Dd]épartement[^}]*)\| *clé *=[^}\|]*'
	regex[6] = ur'({{[Ff]aculté[^}]*)\| *clé *=[^}\|]*'
	
	for p in range(1,sizeR-1):
		if re.search(regex[p], PageTemp):
			PageTemp = re.sub(regex[p], ur'\1', PageTemp)
			if summary.find(u'clé de tri') == -1: summary = summary + u', retrait de la clé de tri'

	# Remplacements consensuels
	#if page.namespace() != 0 and page.namespace() != 106 and page.namespace() != 108 and page.title() != u'Utilisateur:JackBot/test' and page.title() != u'Utilisateur:JackBot/test/test2': 
	#	return
	
	for p in range(1,sizeT-1):
		if PageTemp.find(u'{{' + temp[p] + u'|') != -1 or PageTemp.find(u'{{' + temp[p] + u'}}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(temp[p])] + Ttemp[p] + PageTemp[PageTemp.find(temp[p])+len(temp[p]):len(PageTemp)]
		#p=p+1
		
	# http://fr.wikiversity.org/wiki/Catégorie:Modèle_mal_utilisé
	if CorrigerModeles == True:
		if PageTemp.find('{Chapitre') != -1 or PageTemp.find('{chapitre') != -1:
			''' Bug du modèle tronqué :
			if re.compile('{Chapitre').search(PageTemp):
				if re.compile('{Chapitre[.\n]*(\n.*align.*=.*\n)').search(PageTemp):
					i1 = re.search(u'{{Chapitre[.\n]*(\n.*align.*=.*\n)',PageTemp).end()
					i2 = re.search(u'(\n.*align.*=.*\n)',PageTemp[:i1]).start()
					PageTemp = PageTemp[:i2] + u'\n' + PageTemp[i1:]
				PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
				PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
			elif re.compile('{chapitre').search(PageTemp):
				if re.compile('{chapitre[.\n]*(\n.*align.*=.*\n)').search(PageTemp):
					i1 = re.search(u'{{chapitre[.\n]*(\n.*align.*=.*\n)',PageTemp).end()
					i2 = re.search(u'(\n.*align.*=.*\n)',PageTemp[:i1]).start()
					PageTemp = PageTemp[:i2] + u'\n' + PageTemp[i1:]
				PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
				PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
				
				if re.compile('{{Chapitre[\n.]*(\n.*leçon.*=.*\n)').search(PageTemp):
					print "leçon1"
				if re.compile('{{Chapitre.*\n.*\n.*(\n.*leçon.*=.*\n)').search(PageTemp):
					print "leçon2"
				if re.compile('{{Chapitre.*\n.*\n.*\n.*(\n.*leçon.*=.*\n)').search(PageTemp):
					print "leçon3"
				if re.compile('{{Chapitre[.\n]*(\n.*niveau.*=.*\n)').search(PageTemp):
					print "niveau"
					print re.compile('{{Chapitre[.\n]*(\n.*niveau.*=.*\n)').search(PageTemp)
				if re.compile('{{Chapitre[.\n]*(\n.*précédent.*=.*\n)').search(PageTemp):
					print "précédent"
				if re.compile('{{Chapitre[.\n]*(\n.*suivant.*=.*\n)').search(PageTemp):
					print "suivant"
			else: # Pas de modèle chapitre
				print u'Pas de chapitre dans :'
				print (PageHS.encode(config.console_encoding, 'replace'))
				return
			raw_input (PageTemp.encode(config.console_encoding, 'replace'))'''

			Lecon = u''
			# Majuscule
			if PageTemp.find(u'Leçon') != -1 and PageTemp.find(u'Leçon') < 100:
				PageTemp2 = PageTemp[PageTemp.find(u'Leçon'):len(PageTemp)]
				Lecon = Valeur(u'Leçon',PageTemp)
			# Minuscule
			elif PageTemp.find(u'leçon') != -1 and PageTemp.find(u'leçon') < 100:
				PageTemp2 = PageTemp[PageTemp.find(u'leçon'):len(PageTemp)]
				Lecon = Valeur(u'leçon',PageTemp)
			#raw_input (Lecon.encode(config.console_encoding, 'replace'))
			
			if Lecon.find(u'|') != -1:
				Lecon = Lecon[0:Lecon.find(u'|')]
			while Lecon[0:1] == u'[':
				Lecon = Lecon[1:len(Lecon)]
			while Lecon[len(Lecon)-1:len(Lecon)] == u']':
				Lecon = Lecon[0:len(Lecon)-1]
			if (Lecon == u'../' or Lecon == u'') and PageHS.find(u'/') != -1:
				Lecon = PageHS[0:PageHS.rfind(u'/')]
			#raw_input (Lecon.encode(config.console_encoding, 'replace'))
			
			if Lecon != u'' and Lecon.find(u'.') == -1: 
				page2 = Page(site,Lecon)
				if page2.exists():
					if page2.namespace() != 0 and page2.title() != u'Utilisateur:JackBot/test': 
						return
					else:
						try:
							PageLecon = page2.get()
						except wikipedia.NoPage:
							print "NoPage"
							return
						except wikipedia.IsRedirectPage:
							PageLecon = page2.getRedirectTarget().get()
						except wikipedia.LockedPage:
							print "Locked/protected page"
							return
					#raw_input (PageLecon.encode(config.console_encoding, 'replace'))
					
					# Majuscule
					if PageLecon.find(u'{{Leçon') != -1:
						if Valeur(u'Leçon',PageTemp) == u'':
							if PageTemp.find(u'Leçon') < PageTemp.find(u'}}') or PageTemp.find(u'Leçon') < PageTemp.find(u'}}'):
								if Valeur(u'Leçon',PageTemp) == u'':
									PageTemp2 = PageTemp[PageTemp.find(u'Leçon')+len(u'Leçon'):len(PageTemp)]
									PageTemp2 = PageTemp2[0:PageTemp2.find(u'\n')]
									while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u' ' or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'\t':
										PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
									if PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'=':
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'Leçon')+len(u'Leçon')+PageTemp2.find(u'=')+1] + page2.title()
										PageTemp = PageTemp[PageTemp.find(u'Leçon')+len(u'Leçon')+PageTemp2.find(u'=')+1:len(PageTemp)]
									else:
										print u'Signe égal manquant dans :'
										print PageTemp2[len(PageTemp2)-1:len(PageTemp2)]
							else:
								PageEnd = PageEnd + u'\n|Leçon=' + page2.title()
						PageEnd = PageEnd + PageTemp
						if PageLecon.find(u'niveau') != -1:
							PageTemp = PageLecon[PageLecon.find(u'niveau'):len(PageLecon)]
							if PageTemp.find(u'=') < PageTemp.find(u'\n') and PageTemp.find(u'=') != -1:
								if Valeur(u'niveau',PageLecon) != -1:
									PageTemp = PageEnd
									if PageTemp.find(u'{{Chapitre') != -1:
										PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
										PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									elif PageTemp.find(u'{{chapitre') != -1:
										PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
										PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
									else: return
									if PageTemp.find(u'niveau') < PageTemp.find(u'}}') and PageTemp.find(u'niveau') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'niveau')+len(u'niveau'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										if PageTemp2[0:PageTemp2.find(u'\n')] == u'':
											PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'niveau')+len(u'niveau')] + "=" + Valeur(u'niveau',PageLecon)
											PageTemp = PageTemp2
										elif Valeur(u'niveau',PageLecon) != PageTemp2[0:PageTemp2.find(u'\n')]:
											if debogage == True: 
												print u'Différence de niveau dans ' + PageHS.encode(config.console_encoding, 'replace') + u' : '
												print Valeur(u'niveau',PageLecon)
												print PageTemp2[0:PageTemp2.find(u'\n')].encode(config.console_encoding, 'replace')
									else:
										PageEnd = PageEnd + u'\n  | niveau      = ' + Valeur(u'niveau',PageLecon)
									#print (PageEnd.encode(config.console_encoding, 'replace'))
									#raw_input (PageTemp.encode(config.console_encoding, 'replace'))
					# Minuscule
					elif PageLecon.find(u'{{leçon') != -1:
						if Valeur(u'leçon',PageTemp) == u'':
							if PageTemp.find(u'leçon') < PageTemp.find(u'}}') or PageTemp.find(u'leçon') < PageTemp.find(u'}}'):
								if Valeur(u'leçon',PageTemp) == u'':
									PageTemp2 = PageTemp[PageTemp.find(u'leçon')+len(u'leçon'):len(PageTemp)]
									PageTemp2 = PageTemp2[0:PageTemp2.find(u'\n')]
									while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u' ' or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'\t':
										PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
									if PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'=':
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'leçon')+len(u'leçon')+PageTemp2.find(u'=')+1] + page2.title()
										PageTemp = PageTemp[PageTemp.find(u'leçon')+len(u'leçon')+PageTemp2.find(u'=')+1:len(PageTemp)]
									else:
										print u'Signe égal manquant dans :'
										print PageTemp2[len(PageTemp2)-1:len(PageTemp2)]
							else:
								PageEnd = PageEnd + u'\n|leçon=' + page2.title()
						PageEnd = PageEnd + PageTemp
						PageTemp = u''
						if PageLecon.find(u'niveau') != -1:
							niveauLecon = Valeur(u'niveau',PageLecon)
							print niveauLecon
							PageTemp = PageLecon[PageLecon.find(u'niveau'):len(PageLecon)]
							if PageTemp.find(u'=') < PageTemp.find(u'\n') and PageTemp.find(u'=') != -1:
								if niveauLecon != -1:
									PageTemp = PageEnd
									if PageTemp.find(u'{{Chapitre') != -1:
										PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
										PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									elif PageTemp.find(u'{{chapitre') != -1:
										PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
										PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
									else: return
									if PageTemp.find(u'niveau') < PageTemp.find(u'}}') and PageTemp.find(u'niveau') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'niveau')+len(u'niveau'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										niveauChapitre = PageTemp2[0:PageTemp2.find(u'\n')]
										if niveauChapitre == u'':
											PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'niveau')+len(u'niveau')] + "=" + niveauLecon
											PageTemp = PageTemp2
										elif niveauChapitre != niveauLecon:
											print u'Niveau du chapitre différent de celui de la leçon dans ' + PageHS.encode(config.console_encoding, 'replace')
									else:
										PageEnd = PageEnd + u'\n|niveau=' + niveauLecon
										
					PageEnd = PageEnd + PageTemp
					PageTemp = u''
					#raw_input (PageEnd.encode(config.console_encoding, 'replace'))
					
					'''print Valeur(u'niveau',PageEnd)
					print u'********************************************'
					print Valeur(u'numéro',PageEnd)
					print u'********************************************'
					print Valeur(u'précédent',PageEnd)
					print u'********************************************'
					print Valeur(u'suivant',PageEnd)
					raw_input(u'Fin de paramètres')'''
					NumLecon = u''
					PageTemp2 = u''
					if Valeur(u'numéro',PageEnd) == u'' or Valeur(u'précédent',PageEnd) == u'' or Valeur(u'suivant',PageEnd) == u'':
						if PageLecon.find(PageHS) != -1:
							PageTemp2 = PageLecon[0:PageLecon.find(PageHS)]	# Nécessite que le département ait un nom déifférent et que les leçons soient bien nommées différemment
						elif PageLecon.find(PageHS[PageHS.rfind(u'/')+1:len(PageHS)]) != -1:
							PageTemp2 = PageLecon[0:PageLecon.find(PageHS[PageHS.rfind(u'/')+1:len(PageHS)])]
						if PageTemp2 != u'':
							while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == " " or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "=" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "[" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "{" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "|" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{C" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{c" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{L" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{l":
								PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
							if PageTemp2.rfind(u' ') > PageTemp2.rfind(u'|'):
								NumLecon = PageTemp2[PageTemp2.rfind(u' ')+1:len(PageTemp2)]
							else:
								NumLecon = PageTemp2[PageTemp2.rfind(u'|')+1:len(PageTemp2)]
							#print (PageTemp2.encode(config.console_encoding, 'replace'))				
							if NumLecon != u'' and NumLecon != u'département':
								# Le numéro de la leçon permet de remplir les champs : |numéro=, |précédent=, |suivant=
								if Valeur(u'numéro',PageEnd) == u'':
									if PageEnd.find(u'numéro') == -1:
										PageTemp = PageEnd
										PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
										PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
										if PageTemp.find(u'numéro') < PageTemp.find(u'}}') and PageTemp.find(u'numéro') != -1:
											PageTemp2 = PageTemp[PageTemp.find(u'numéro')+len(u'numéro'):len(PageTemp)]
											while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
												PageTemp2 = PageTemp2[1:len(PageTemp2)]
											PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'numéro')+len(u'numéro')] + "=" + NumLecon
											PageTemp = PageTemp2
										else:
											PageEnd = PageEnd + u'\n|numéro=' + NumLecon
										PageEnd = PageEnd + PageTemp
										PageTemp = u''
								if Valeur(u'précédent',PageEnd) == u'' and NumLecon	== 1:
									PageTemp = PageEnd
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									if PageTemp.find(u'précédent') < PageTemp.find(u'}}') and PageTemp.find(u'précédent') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'précédent')+len(u'précédent'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+len(u'précédent')] + "=" + NumLecon
										PageTemp = PageTemp2
									else:
										PageEnd = PageEnd + u'\n|précédent=' + NumLecon
									PageEnd = PageEnd + PageTemp
									PageTemp = u''								
								elif Valeur(u'précédent',PageEnd) == u'' and Valeur(str(int(NumLecon)-1),PageLecon) != u'':
									PageTemp = PageEnd
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									if PageTemp.find(u'précédent') < PageTemp.find(u'}}') and PageTemp.find(u'précédent') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'précédent')+len(u'précédent'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+len(u'précédent')] + "=" + Valeur(str(int(NumLecon)-1),PageLecon)
										PageTemp = PageTemp2
									else:
										PageEnd = PageEnd + u'\n|précédent=' + Valeur(str(int(NumLecon)-1),PageLecon)
									PageEnd = PageEnd + PageTemp
									PageTemp = u''
								if Valeur(u'suivant',PageEnd) == u'' and Valeur(str(int(NumLecon)+1),PageLecon) != u'':					
									PageTemp = PageEnd
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									if PageTemp.find(u'suivant') < PageTemp.find(u'}}') and PageTemp.find(u'suivant') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'suivant')+len(u'suivant'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'suivant')+len(u'suivant')] + "=" + Valeur(str(int(NumLecon)+1),PageLecon)
										PageTemp = PageTemp2
									else:
										if PageTemp.find(u'précédent') != -1:
											PageTemp2 = PageTemp[PageTemp.find(u'précédent'):len(PageTemp)]
											PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+PageTemp2.find(u'\n')] + u'\n|suivant=' + Valeur(str(int(NumLecon)+1),PageLecon)
											PageTemp = PageTemp[PageTemp.find(u'précédent')+PageTemp2.find(u'\n'):len(PageTemp)]
										else:
											PageEnd = PageEnd + u'\n|suivant=' + Valeur(str(int(NumLecon)+1),PageLecon)
									PageEnd = PageEnd + PageTemp
									PageTemp = u''
				else: # Pas de leçon
					print u'Pas de leçon : '
					print (Lecon.encode(config.console_encoding, 'replace'))
					print u'dans : '
					print (PageHS.encode(config.console_encoding, 'replace'))
					#raw_input ('Attente')
				PageEnd = PageEnd + PageTemp
				PageTemp = u''
		elif PageTemp.find(u'{Leçon') != -1 or PageTemp.find(u'{leçon') != -1:
			# Evaluations
			page2 = Page(site,u'Discussion:' + PageHS)
			if page2.exists():
				try:
					PageDisc = page2.get()
				except wikipedia.NoPage:
					print "NoPage"
					return
				except wikipedia.IsRedirectPage:
					print "Redirect page"
					return
				except wikipedia.LockedPage:
					print "Locked/protected page"
					return
			else: 
				PageDisc = u''
			if PageDisc.find(u'{{Évaluation') == -1 and PageDisc.find(u'{{évaluation') == -1: sauvegarde(page2, u'{{Évaluation|idfaculté=' + Valeur(u'idfaculté',PageTemp) + u'|avancement=?}}\n' + PageDisc, u'Ajout d\'évaluation inconnue')	
							
			# Synchronisations avec les niveaux des départements, et les évaluations des onglets Discussion:
			#...
		PageEnd = PageEnd + PageTemp
		
		# Bas de page
		if (PageEnd.find(u'{{Chapitre') != -1 or PageEnd.find(u'{{chapitre') != -1) and PageEnd.find(u'{{Bas de page') == -1 and PageEnd.find(u'{{bas de page') == -1:
			idfaculte = u''
			precedent = u''
			suivant = u''
			if PageEnd.find(u'idfaculté') != -1:
				PageTemp = PageEnd[PageEnd.find(u'idfaculté'):len(PageEnd)]
				idfaculte = PageTemp[0:PageTemp.find(u'\n')]	# pb si tout sur la même ligne, faire max(0,min(PageTemp.find(u'\n'),?))
				if PageEnd.find(u'précédent') != -1:
					PageTemp = PageEnd[PageEnd.find(u'précédent'):len(PageEnd)]
					precedent = PageTemp[0:PageTemp.find(u'\n')]
				if PageEnd.find(u'suivant') != -1:
					PageTemp = PageEnd[PageEnd.find(u'suivant'):len(PageEnd)]
					suivant = PageTemp[0:PageTemp.find(u'\n')]
				PageEnd = PageEnd + u'\n\n{{Bas de page|' + idfaculte + u'\n|' + precedent + u'\n|' + suivant + u'}}'
		
		# Exercices (pb http://fr.wikiversity.org/w/index.php?title=Allemand%2FVocabulaire%2FFormes_et_couleurs&diff=354352&oldid=354343)
		'''PageTemp = PageEnd
		PageEnd = u''
		while PageEnd.find(u'{{CfExo') != -1 or PageEnd.find(u'{{cfExo') != -1:
			PageTemp = PageEnd[
			if 
			|exercice=[[
			/Exercices/
			/quiz/
		PageEnd = PageEnd + PageTemp'''
	
	PageEnd = PageEnd + PageTemp
	PageTemp = u''
	
	# Test des URL
	if debogage == True: print u'Test des URL'
	PageEnd = hyperlynx.hyperlynx(PageEnd)
	if debogage == True: raw_input (u'--------------------------------------------------------------------------------------------')
	
	if PageBegin != PageEnd: sauvegarde(page, PageEnd, summary)
Exemple #7
0
def modification(PageHS):
	PageEnd = "" # On sauvegarde la partie traitée d'une page provisoire dans une page finale jusqu'à disparition de la première
	page = Page(site,PageHS)
	print(PageHS.encode(config.console_encoding, 'replace'))
	if page.exists():
		if page.namespace() != 0 and page.namespace() != 106 and page.namespace() != 108 and page.title() != u'Utilisateur:JackBot/test' and page.title() != u'Utilisateur:JackBot/test/test2': 
			return
		else:
			try:
				PageBegin = page.get()
			except wikipedia.NoPage:
				print "NoPage"
				return
			except wikipedia.IsRedirectPage:
				print "Redirect page"
				return
			except wikipedia.LockedPage:
				print "Locked/protected page"
				return
	else:
		print u'Page inexistante'
		return
	
	PageTemp = PageBegin
	# Clés de tri
	if PageTemp.find(u'{{clé de tri') == -1 and (PageTemp.find(u'clé') == -1 or PageTemp.find(u'clé') > PageTemp.find(u'}}')):
		PageTitre = page.title()
		if page.namespace() == 0 or page.title() != u'Utilisateur:JackBot/test' or page.title() != u'Utilisateur:JackBot/test/test2':
			if PageTitre.find(u'/') != -1:
				PageTitre = PageTitre[PageTitre.rfind(u'/')+1:len(PageTitre)]
			'''if PageTitre[len(PageTitre)-len(u'/Présentation de la leçon'):len(PageTitre)] == u'/Présentation de la leçon':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Présentation de la leçon')]
			elif PageTitre[len(PageTitre)-len(u'/Objectifs'):len(PageTitre)] == u'/Objectifs':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Objectifs')]
			elif PageTitre[len(PageTitre)-len(u'/Prérequis conseillés'):len(PageTitre)] == u'/Prérequis conseillés':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Prérequis conseillés')]
			elif PageTitre[len(PageTitre)-len(u'/Référents'):len(PageTitre)] == u'/Référents':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Référents')]'''		
		elif page.namespace() == 106 or page.title() != u'Utilisateur:JackBot/test' or page.title() != u'Utilisateur:JackBot/test/test2':
			PageTitre = PageTitre[len(u'Faculté:'):len(PageTitre)]
			if PageTitre[len(PageTitre)-len(u'/Présentation de la faculté'):len(PageTitre)] == u'/Présentation de la faculté':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Présentation de la faculté')]
			elif PageTitre[len(PageTitre)-len(u'/Départements'):len(PageTitre)] == u'/Départements':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Départements')]
			elif PageTitre[len(PageTitre)-len(u'/Transverse'):len(PageTitre)] == u'/Transverse':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Transverse')]
			elif PageTitre[len(PageTitre)-len(u'/Voir aussi'):len(PageTitre)] == u'/Voir aussi':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Voir aussi')]		   
		elif page.namespace() == 108 or page.title() != u'Utilisateur:JackBot/test' or page.title() != u'Utilisateur:JackBot/test/test2':
			PageTitre = PageTitre[len(u'Département:'):len(PageTitre)]
			if PageTitre[len(PageTitre)-len(u'/Présentation du département'):len(PageTitre)] == u'/Présentation du département':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Présentation du département')]
			elif PageTitre[len(PageTitre)-len(u'/Leçons par thèmes'):len(PageTitre)] == u'/Leçons par thèmes':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Leçons par thèmes')]
			elif PageTitre[len(PageTitre)-len(u'/Leçons par niveaux'):len(PageTitre)] == u'/Leçons par niveaux':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Leçons par niveaux')]
			elif PageTitre[len(PageTitre)-len(u'/Contributeurs'):len(PageTitre)] == u'/Contributeurs':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Contributeurs')]
			elif PageTitre[len(PageTitre)-len(u'/Voir aussi'):len(PageTitre)] == u'/Voir aussi':
				PageTitre = PageTitre[0:len(PageTitre)-len(u'/Voir aussi')]
		PageT = ""
		key = "false"
		for lettre in range(0,len(PageTitre)):
			# Latin
			if PageTitre[lettre:lettre+1] == u'á' or PageTitre[lettre:lettre+1] == u'à' or PageTitre[lettre:lettre+1] == u'â' or PageTitre[lettre:lettre+1] == u'ä' or PageTitre[lettre:lettre+1] == u'Á' or PageTitre[lettre:lettre+1] == u'À' or PageTitre[lettre:lettre+1] == u'Â' or PageTitre[lettre:lettre+1] == u'Ä':
				PageT = PageT + "a"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'é' or PageTitre[lettre:lettre+1] == u'è' or PageTitre[lettre:lettre+1] == u'ê' or PageTitre[lettre:lettre+1] == u'ë' or PageTitre[lettre:lettre+1] == u'É' or PageTitre[lettre:lettre+1] == u'È' or PageTitre[lettre:lettre+1] == u'Ê' or PageTitre[lettre:lettre+1] == u'Ë' or PageTitre[lettre:lettre+1] == u'ě' or PageTitre[lettre:lettre+1] == u'Ě':
				PageT = PageT + "e"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'í' or PageTitre[lettre:lettre+1] == u'ì' or PageTitre[lettre:lettre+1] == u'î' or PageTitre[lettre:lettre+1] == u'ï' or PageTitre[lettre:lettre+1] == u'Í' or PageTitre[lettre:lettre+1] == u'Ì' or PageTitre[lettre:lettre+1] == u'Î' or PageTitre[lettre:lettre+1] == u'Ï':
				PageT = PageT + "i"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ó'  or PageTitre[lettre:lettre+1] == u'ò' or PageTitre[lettre:lettre+1] == u'ô' or PageTitre[lettre:lettre+1] == u'ö' or PageTitre[lettre:lettre+1] == u'Ó'  or PageTitre[lettre:lettre+1] == u'Ò' or PageTitre[lettre:lettre+1] == u'Ô' or PageTitre[lettre:lettre+1] == u'Ö':
				PageT = PageT + "o"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ú' or PageTitre[lettre:lettre+1] == u'ù' or PageTitre[lettre:lettre+1] == u'û' or PageTitre[lettre:lettre+1] == u'ü' or PageTitre[lettre:lettre+1] == u'Ú' or PageTitre[lettre:lettre+1] == u'Ù' or PageTitre[lettre:lettre+1] == u'Û' or PageTitre[lettre:lettre+1] == u'Ü':
				PageT = PageT + "u"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ç' or PageTitre[lettre:lettre+1] == u'Ç':
				PageT = PageT + "c"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'š' or PageTitre[lettre:lettre+1] == u'Š':
				PageT = PageT + "c"
				key = "yes"		
			elif PageTitre[lettre:lettre+1] == u'æ' or PageTitre[lettre:lettre+1] == u'Æ':
				PageT = PageT + "ae"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'œ' or PageTitre[lettre:lettre+1] == u'Œ':
				PageT = PageT + "oe"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ñ' or PageTitre[lettre:lettre+1] == u'Ñ':
				PageT = PageT + "n"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ÿ' or PageTitre[lettre:lettre+1] == u'Ÿ':
				PageT = PageT + "y"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'-':
				PageT = PageT + " "
				key = "yes"'''
			elif PageTitre[lettre:lettre+1] == u'/':
				PageT = PageT + " "
				key = "yes"'''
			elif PageTitre[lettre:lettre+1] == u'\\':
				PageT = PageT + ""
				key = "yes"
			# Grec
			elif PageTitre[lettre:lettre+1] == u'α' or PageTitre[lettre:lettre+1] == u'Ἀ' or PageTitre[lettre:lettre+1] == u'ἀ' or PageTitre[lettre:lettre+1] == u'Ἁ' or PageTitre[lettre:lettre+1] == u'ἁ' or PageTitre[lettre:lettre+1] == u'Ἂ' or PageTitre[lettre:lettre+1] == u'ἂ' or PageTitre[lettre:lettre+1] == u'Ἃ' or PageTitre[lettre:lettre+1] == u'ἃ' or PageTitre[lettre:lettre+1] == u'Ἄ' or PageTitre[lettre:lettre+1] == u'ἄ' or PageTitre[lettre:lettre+1] == u'Ἅ' or PageTitre[lettre:lettre+1] == u'ἅ' or PageTitre[lettre:lettre+1] == u'Ἆ' or PageTitre[lettre:lettre+1] == u'ἆ' or PageTitre[lettre:lettre+1] == u'Ἇ' or PageTitre[lettre:lettre+1] == u'ἇ' or PageTitre[lettre:lettre+1] == u'Ὰ' or PageTitre[lettre:lettre+1] == u'ὰ' or PageTitre[lettre:lettre+1] == u'Ά' or PageTitre[lettre:lettre+1] == u'ά' or PageTitre[lettre:lettre+1] == u'ᾈ' or PageTitre[lettre:lettre+1] == u'ᾀ' or PageTitre[lettre:lettre+1] == u'ᾉ' or PageTitre[lettre:lettre+1] == u'ᾁ' or PageTitre[lettre:lettre+1] == u'ᾊ' or PageTitre[lettre:lettre+1] == u'ᾂ' or PageTitre[lettre:lettre+1] == u'ᾋ' or PageTitre[lettre:lettre+1] == u'ᾃ' or PageTitre[lettre:lettre+1] == u'ᾌ' or PageTitre[lettre:lettre+1] == u'ᾄ' or PageTitre[lettre:lettre+1] == u'ᾍ' or PageTitre[lettre:lettre+1] == u'ᾅ' or PageTitre[lettre:lettre+1] == u'ᾎ' or PageTitre[lettre:lettre+1] == u'ᾆ' or PageTitre[lettre:lettre+1] == u'ᾏ' or PageTitre[lettre:lettre+1] == u'ᾇ' or PageTitre[lettre:lettre+1] == u'Ᾰ' or PageTitre[lettre:lettre+1] == u'ᾰ' or PageTitre[lettre:lettre+1] == u'Ᾱ' or PageTitre[lettre:lettre+1] == u'ᾱ' or PageTitre[lettre:lettre+1] == u'ᾼ' or PageTitre[lettre:lettre+1] == u'ᾳ' or PageTitre[lettre:lettre+1] == u'Ὰ' or PageTitre[lettre:lettre+1] == u'ᾲ' or PageTitre[lettre:lettre+1] == u'Ά' or PageTitre[lettre:lettre+1] == u'ᾴ' or PageTitre[lettre:lettre+1] == u'Ȃ' or PageTitre[lettre:lettre+1] == u'ᾶ' or PageTitre[lettre:lettre+1] == u'Ȃ' or PageTitre[lettre:lettre+1] == u'ᾷ':
				PageT = PageT + "α"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ἐ' or PageTitre[lettre:lettre+1] == u'ἐ' or PageTitre[lettre:lettre+1] == u'Ἑ' or PageTitre[lettre:lettre+1] == u'ἑ' or PageTitre[lettre:lettre+1] == u'Ἒ' or PageTitre[lettre:lettre+1] == u'ἒ' or PageTitre[lettre:lettre+1] == u'Ἓ' or PageTitre[lettre:lettre+1] == u'ἓ' or PageTitre[lettre:lettre+1] == u'Ἔ' or PageTitre[lettre:lettre+1] == u'ἔ' or PageTitre[lettre:lettre+1] == u'Ἕ' or PageTitre[lettre:lettre+1] == u'ἕ' or PageTitre[lettre:lettre+1] == u'Ὲ' or PageTitre[lettre:lettre+1] == u'ὲ' or PageTitre[lettre:lettre+1] == u'Έ' or PageTitre[lettre:lettre+1] == u'έ':
				PageT = PageT + "ε"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ἠ' or PageTitre[lettre:lettre+1] == u'ἠ' or PageTitre[lettre:lettre+1] == u'Ἡ' or PageTitre[lettre:lettre+1] == u'ἡ' or PageTitre[lettre:lettre+1] == u'Ἢ' or PageTitre[lettre:lettre+1] == u'ἢ' or PageTitre[lettre:lettre+1] == u'Ἣ' or PageTitre[lettre:lettre+1] == u'ἣ' or PageTitre[lettre:lettre+1] == u'Ἤ' or PageTitre[lettre:lettre+1] == u'ἤ' or PageTitre[lettre:lettre+1] == u'Ἥ' or PageTitre[lettre:lettre+1] == u'ἥ' or PageTitre[lettre:lettre+1] == u'Ἦ' or PageTitre[lettre:lettre+1] == u'ἦ' or PageTitre[lettre:lettre+1] == u'Ἧ' or PageTitre[lettre:lettre+1] == u'ἧ' or PageTitre[lettre:lettre+1] == u'ᾘ' or PageTitre[lettre:lettre+1] == u'ᾐ' or PageTitre[lettre:lettre+1] == u'ᾙ' or PageTitre[lettre:lettre+1] == u'ᾑ' or PageTitre[lettre:lettre+1] == u'ᾚ' or PageTitre[lettre:lettre+1] == u'ᾒ' or PageTitre[lettre:lettre+1] == u'ᾛ' or PageTitre[lettre:lettre+1] == u'ᾓ' or PageTitre[lettre:lettre+1] == u'ᾜ' or PageTitre[lettre:lettre+1] == u'ᾔ' or PageTitre[lettre:lettre+1] == u'ᾝ' or PageTitre[lettre:lettre+1] == u'ᾕ' or PageTitre[lettre:lettre+1] == u'ᾞ' or PageTitre[lettre:lettre+1] == u'ᾖ' or PageTitre[lettre:lettre+1] == u'ᾟ' or PageTitre[lettre:lettre+1] == u'ᾗ' or PageTitre[lettre:lettre+1] == u'Ὴ' or PageTitre[lettre:lettre+1] == u'ὴ' or PageTitre[lettre:lettre+1] == u'Ή' or PageTitre[lettre:lettre+1] == u'ή' or PageTitre[lettre:lettre+1] == u'ῌ' or PageTitre[lettre:lettre+1] == u'ῂ' or PageTitre[lettre:lettre+1] == u'Η' or PageTitre[lettre:lettre+1] == u'ῃ' or PageTitre[lettre:lettre+1] == u'Ή' or PageTitre[lettre:lettre+1] == u'ῄ' or PageTitre[lettre:lettre+1] == u'ῌ' or PageTitre[lettre:lettre+1] == u'ῆ' or PageTitre[lettre:lettre+1] == u'ῌ' or PageTitre[lettre:lettre+1] == u'ῇ':
				PageT = PageT + "η"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ὶ' or PageTitre[lettre:lettre+1] == u'ὶ' or PageTitre[lettre:lettre+1] == u'Ί' or PageTitre[lettre:lettre+1] == u'ί' or PageTitre[lettre:lettre+1] == u'Ί' or PageTitre[lettre:lettre+1] == u'ί' or PageTitre[lettre:lettre+1] == u'Ῐ' or PageTitre[lettre:lettre+1] == u'ῐ' or PageTitre[lettre:lettre+1] == u'Ῑ' or PageTitre[lettre:lettre+1] == u'ῑ' or PageTitre[lettre:lettre+1] == u'Ἰ' or PageTitre[lettre:lettre+1] == u'ἰ' or PageTitre[lettre:lettre+1] == u'Ἱ' or PageTitre[lettre:lettre+1] == u'ἱ' or PageTitre[lettre:lettre+1] == u'Ἲ' or PageTitre[lettre:lettre+1] == u'ἲ' or PageTitre[lettre:lettre+1] == u'Ἳ' or PageTitre[lettre:lettre+1] == u'ἳ' or PageTitre[lettre:lettre+1] == u'Ἴ' or PageTitre[lettre:lettre+1] == u'ἴ' or PageTitre[lettre:lettre+1] == u'Ἵ' or PageTitre[lettre:lettre+1] == u'ἵ' or PageTitre[lettre:lettre+1] == u'Ἶ' or PageTitre[lettre:lettre+1] == u'ἶ' or PageTitre[lettre:lettre+1] == u'Ἷ' or PageTitre[lettre:lettre+1] == u'ἷ' or PageTitre[lettre:lettre+1] == u'ΐ' or PageTitre[lettre:lettre+1] == u'ῖ' or PageTitre[lettre:lettre+1] == u'ῗ' or PageTitre[lettre:lettre+1] == u'ῒ':
				PageT = PageT + "ι" 
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ὀ' or PageTitre[lettre:lettre+1] == u'ὀ' or PageTitre[lettre:lettre+1] == u'Ὁ' or PageTitre[lettre:lettre+1] == u'ὁ' or PageTitre[lettre:lettre+1] == u'Ὂ' or PageTitre[lettre:lettre+1] == u'ὂ' or PageTitre[lettre:lettre+1] == u'Ὃ' or PageTitre[lettre:lettre+1] == u'ὃ' or PageTitre[lettre:lettre+1] == u'Ὄ' or PageTitre[lettre:lettre+1] == u'ὄ' or PageTitre[lettre:lettre+1] == u'Ὅ' or PageTitre[lettre:lettre+1] == u'ὅ' or PageTitre[lettre:lettre+1] == u'Ὸ' or PageTitre[lettre:lettre+1] == u'ὸ' or PageTitre[lettre:lettre+1] == u'Ό' or PageTitre[lettre:lettre+1] == u'ό':
				PageT = PageT + "ο"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ὠ' or PageTitre[lettre:lettre+1] == u'ὠ' or PageTitre[lettre:lettre+1] == u'Ὡ' or PageTitre[lettre:lettre+1] == u'ὡ' or PageTitre[lettre:lettre+1] == u'Ὢ' or PageTitre[lettre:lettre+1] == u'ὢ' or PageTitre[lettre:lettre+1] == u'Ὣ' or PageTitre[lettre:lettre+1] == u'ὣ' or PageTitre[lettre:lettre+1] == u'Ὤ' or PageTitre[lettre:lettre+1] == u'ὤ' or PageTitre[lettre:lettre+1] == u'Ὥ' or PageTitre[lettre:lettre+1] == u'ὥ' or PageTitre[lettre:lettre+1] == u'Ὦ' or PageTitre[lettre:lettre+1] == u'ὦ' or PageTitre[lettre:lettre+1] == u'Ὧ' or PageTitre[lettre:lettre+1] == u'ὧ' or PageTitre[lettre:lettre+1] == u'Ὼ' or PageTitre[lettre:lettre+1] == u'ὼ' or PageTitre[lettre:lettre+1] == u'Ώ' or PageTitre[lettre:lettre+1] == u'ώ' or PageTitre[lettre:lettre+1] == u'ᾨ' or PageTitre[lettre:lettre+1] == u'ᾠ' or PageTitre[lettre:lettre+1] == u'ᾩ' or PageTitre[lettre:lettre+1] == u'ᾡ' or PageTitre[lettre:lettre+1] == u'ᾪ' or PageTitre[lettre:lettre+1] == u'ᾢ' or PageTitre[lettre:lettre+1] == u'ᾫ' or PageTitre[lettre:lettre+1] == u'ᾣ' or PageTitre[lettre:lettre+1] == u'ᾬ' or PageTitre[lettre:lettre+1] == u'ᾤ' or PageTitre[lettre:lettre+1] == u'ᾭ' or PageTitre[lettre:lettre+1] == u'ᾥ' or PageTitre[lettre:lettre+1] == u'ᾮ' or PageTitre[lettre:lettre+1] == u'ᾦ' or PageTitre[lettre:lettre+1] == u'ᾯ' or PageTitre[lettre:lettre+1] == u'ᾧ' or PageTitre[lettre:lettre+1] == u'ῼ' or PageTitre[lettre:lettre+1] == u'ῳ' or PageTitre[lettre:lettre+1] == u'ῲ' or PageTitre[lettre:lettre+1] == u'ῴ' or PageTitre[lettre:lettre+1] == u'ῶ' or PageTitre[lettre:lettre+1] == u'ῷ':
				PageT = PageT + "ω"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ὓ' or PageTitre[lettre:lettre+1] == u'ὓ' or PageTitre[lettre:lettre+1] == u'Υ' or PageTitre[lettre:lettre+1] == u'ὔ' or PageTitre[lettre:lettre+1] == u'Ὕ' or PageTitre[lettre:lettre+1] == u'ὕ' or PageTitre[lettre:lettre+1] == u'Ὗ' or PageTitre[lettre:lettre+1] == u'ὗ' or PageTitre[lettre:lettre+1] == u'Ὺ' or PageTitre[lettre:lettre+1] == u'ὺ' or PageTitre[lettre:lettre+1] == u'Ύ' or PageTitre[lettre:lettre+1] == u'ύ' or PageTitre[lettre:lettre+1] == u'Ῠ' or PageTitre[lettre:lettre+1] == u'ῠ' or PageTitre[lettre:lettre+1] == u'Ῡ' or PageTitre[lettre:lettre+1] == u'ῡ' or PageTitre[lettre:lettre+1] == u'ῢ' or PageTitre[lettre:lettre+1] == u'ΰ' or PageTitre[lettre:lettre+1] == u'ῦ' or PageTitre[lettre:lettre+1] == u'ῧ' or PageTitre[lettre:lettre+1] == u'ὐ' or PageTitre[lettre:lettre+1] == u'ὑ' or PageTitre[lettre:lettre+1] == u'ὒ' or PageTitre[lettre:lettre+1] == u'ὖ':
				PageT = PageT + "υ"
				key = "yes"
			# Cyrillique
			elif PageTitre[lettre:lettre+1] == u'ѐ' or PageTitre[lettre:lettre+1] == u'Ѐ' or PageTitre[lettre:lettre+1] == u'ё' or PageTitre[lettre:lettre+1] == u'Ё':
				PageT = PageT + "е"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ѝ' or PageTitre[lettre:lettre+1] == u'й' or PageTitre[lettre:lettre+1] == u'И' or PageTitre[lettre:lettre+1] == u'Ѝ' or PageTitre[lettre:lettre+1] == u'Й':
				PageT = PageT + "и"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ў' or PageTitre[lettre:lettre+1] == u'У' or PageTitre[lettre:lettre+1] == u'Ў':
				PageT = PageT + "у"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ѓ' or PageTitre[lettre:lettre+1] == u'ґ' or PageTitre[lettre:lettre+1] == u'Г' or PageTitre[lettre:lettre+1] == u'Ѓ' or PageTitre[lettre:lettre+1] == u'Ґ':
				PageT = PageT + "г"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ќ' or PageTitre[lettre:lettre+1] == u'К' or PageTitre[lettre:lettre+1] == u'Ќ':
				PageT = PageT + "к"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ї' or PageTitre[lettre:lettre+1] == u'І' or PageTitre[lettre:lettre+1] == u'Ї':
				PageT = PageT + "і"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ѿ':
				PageT = PageT + "Ѡ"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'Ѵ' or PageTitre[lettre:lettre+1] == u'ѷ' or PageTitre[lettre:lettre+1] == u'Ѷ':
				PageT = PageT + "ѵ"
				key = "yes"					
			# Arabe
			elif PageTitre[lettre:lettre+1] == u'أ' or PageTitre[lettre:lettre+1] == u'إ' or PageTitre[lettre:lettre+1] == u'آ' or PageTitre[lettre:lettre+1] == u'ٱ':
				PageT = PageT + "ا"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'دَ' or PageTitre[lettre:lettre+1] == u'دِ' or PageTitre[lettre:lettre+1] == u'دُ':
				PageT = PageT + "ﺩ"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'ذٰ':
				PageT = PageT + "ﺫ"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'لٰ':
				PageT = PageT + "ﻝ"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'مٰ':
				PageT = PageT + "ﻡ"
				key = "yes"
			elif PageTitre[lettre:lettre+1] == u'هٰ':
				PageT = PageT + "ﻩ"
				key = "yes"
			else:
				PageT = PageT + PageTitre[lettre:lettre+1].lower()
			#print (PageT.encode(config.console_encoding, 'replace'))
			#raw_input("lettre")
		if key == "yes":
			if PageTemp.find(u'{{chapitre') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')] + u'\n|clé=' + PageT + PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
			if PageTemp.find(u'{{Chapitre') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')] + u'\n|clé=' + PageT + PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
			elif PageTemp.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{clé de tri|' + PageT + 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|' + PageT + u'}}\n' + PageTemp[PageTemp.find(u'[[Category:'):len(PageTemp)]
			else:
				PageTemp = PageTemp + u'\n\n{{clé de tri|' + PageT + u'}}\n'
	#raw_input (PageTemp.encode(config.console_encoding, 'replace'))
	
	# Remplacements consensuels
	for p in range(1,sizeT-1):
		if PageTemp.find(u'{{' + temp[p] + u'|') != -1 or PageTemp.find(u'{{' + temp[p] + u'}}') != -1:
			PageTemp = PageTemp[0:PageTemp.find(temp[p])] + Ttemp[p] + PageTemp[PageTemp.find(temp[p])+len(temp[p]):len(PageTemp)]
		p=p+1
		
	# http://fr.wikiversity.org/wiki/Catégorie:Modèle_mal_utilisé
	if PageTemp.find('{Chapitre') != -1 or PageTemp.find('{chapitre') != -1:
		''' Bug du modèle tronqué :
		if re.compile('{Chapitre').search(PageTemp):
			if re.compile('{Chapitre[.\n]*(\n.*align.*=.*\n)').search(PageTemp):
				i1 = re.search(u'{{Chapitre[.\n]*(\n.*align.*=.*\n)',PageTemp).end()
				i2 = re.search(u'(\n.*align.*=.*\n)',PageTemp[:i1]).start()
				PageTemp = PageTemp[:i2] + u'\n' + PageTemp[i1:]
			PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
			PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
		elif re.compile('{chapitre').search(PageTemp):
			if re.compile('{chapitre[.\n]*(\n.*align.*=.*\n)').search(PageTemp):
				i1 = re.search(u'{{chapitre[.\n]*(\n.*align.*=.*\n)',PageTemp).end()
				i2 = re.search(u'(\n.*align.*=.*\n)',PageTemp[:i1]).start()
				PageTemp = PageTemp[:i2] + u'\n' + PageTemp[i1:]
			PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
			PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
			
			if re.compile('{{Chapitre[\n.]*(\n.*leçon.*=.*\n)').search(PageTemp):
				print "leçon1"
			if re.compile('{{Chapitre.*\n.*\n.*(\n.*leçon.*=.*\n)').search(PageTemp):
				print "leçon2"
			if re.compile('{{Chapitre.*\n.*\n.*\n.*(\n.*leçon.*=.*\n)').search(PageTemp):
				print "leçon3"
			if re.compile('{{Chapitre[.\n]*(\n.*niveau.*=.*\n)').search(PageTemp):
				print "niveau"
				print re.compile('{{Chapitre[.\n]*(\n.*niveau.*=.*\n)').search(PageTemp)
			if re.compile('{{Chapitre[.\n]*(\n.*précédent.*=.*\n)').search(PageTemp):
				print "précédent"
			if re.compile('{{Chapitre[.\n]*(\n.*suivant.*=.*\n)').search(PageTemp):
				print "suivant"
		else: # Pas de modèle chapitre
			print u'Pas de chapitre dans :'
			print (PageHS.encode(config.console_encoding, 'replace'))
			return
		raw_input (PageTemp.encode(config.console_encoding, 'replace'))'''

		Lecon = u''
		# Majuscule
		if PageTemp.find(u'Leçon') != -1 and PageTemp.find(u'Leçon') < 100:
			PageTemp2 = PageTemp[PageTemp.find(u'Leçon'):len(PageTemp)]
			Lecon = Valeur(u'Leçon',PageTemp)
		# Minuscule
		elif PageTemp.find(u'leçon') != -1 and PageTemp.find(u'leçon') < 100:
			PageTemp2 = PageTemp[PageTemp.find(u'leçon'):len(PageTemp)]
			Lecon = Valeur(u'leçon',PageTemp)
		#raw_input (Lecon.encode(config.console_encoding, 'replace'))
		
		if Lecon.find(u'|') != -1:
			Lecon = Lecon[0:Lecon.find(u'|')]
		while Lecon[0:1] == u'[':
			Lecon = Lecon[1:len(Lecon)]
		while Lecon[len(Lecon)-1:len(Lecon)] == u']':
			Lecon = Lecon[0:len(Lecon)-1]
		if (Lecon == u'../' or Lecon == u'') and PageHS.find(u'/') != -1:
			Lecon = PageHS[0:PageHS.rfind(u'/')]
		#raw_input (Lecon.encode(config.console_encoding, 'replace'))
		
		if Lecon != u'' and Lecon.find(u'.') == -1: 
			page2 = Page(site,Lecon)
			if page2.exists():
				if page2.namespace() != 0 and page2.title() != u'Utilisateur:JackBot/test': 
					return
				else:
					try:
						PageLecon = page2.get()
					except wikipedia.NoPage:
						print "NoPage"
						return
					except wikipedia.IsRedirectPage:
						PageLecon = page2.getRedirectTarget().get()
					except wikipedia.LockedPage:
						print "Locked/protected page"
						return
				#raw_input (PageLecon.encode(config.console_encoding, 'replace'))
				
				# Majuscule
				if PageLecon.find(u'{{Leçon') != -1:
					if Valeur(u'Leçon',PageTemp) == u'':
						if PageTemp.find(u'Leçon') < PageTemp.find(u'}}') or PageTemp.find(u'Leçon') < PageTemp.find(u'}}'):
							if Valeur(u'Leçon',PageTemp) == u'':
								PageTemp2 = PageTemp[PageTemp.find(u'Leçon')+len(u'Leçon'):len(PageTemp)]
								PageTemp2 = PageTemp2[0:PageTemp2.find(u'\n')]
								while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u' ' or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'\t':
									PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
								if PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'=':
									PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'Leçon')+len(u'Leçon')+PageTemp2.find(u'=')+1] + page2.title()
									PageTemp = PageTemp[PageTemp.find(u'Leçon')+len(u'Leçon')+PageTemp2.find(u'=')+1:len(PageTemp)]
								else:
									print u'Signe égal manquant dans :'
									print PageTemp2[len(PageTemp2)-1:len(PageTemp2)]
						else:
							PageEnd = PageEnd + u'\n|Leçon=' + page2.title()
					PageEnd = PageEnd + PageTemp
					if PageLecon.find(u'niveau') != -1:
						PageTemp = PageLecon[PageLecon.find(u'niveau'):len(PageLecon)]
						if PageTemp.find(u'=') < PageTemp.find(u'\n') and PageTemp.find(u'=') != -1:
							if Valeur(u'niveau',PageLecon) != -1:
								PageTemp = PageEnd
								if PageTemp.find(u'{{Chapitre') != -1:
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
								elif PageTemp.find(u'{{chapitre') != -1:
									PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
								else: return
								if PageTemp.find(u'niveau') < PageTemp.find(u'}}') and PageTemp.find(u'niveau') != -1:
									PageTemp2 = PageTemp[PageTemp.find(u'niveau')+len(u'niveau'):len(PageTemp)]
									while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
										PageTemp2 = PageTemp2[1:len(PageTemp2)]
									if PageTemp2[0:PageTemp2.find(u'\n')] == u'':
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'niveau')+len(u'niveau')] + "=" + Valeur(u'niveau',PageLecon)
										PageTemp = PageTemp2
									elif Valeur(u'niveau',PageLecon) != PageTemp2[0:PageTemp2.find(u'\n')]:
										if debogage == True: 
											print u'Différence de niveau dans ' + PageHS.encode(config.console_encoding, 'replace') + u' : '
											print Valeur(u'niveau',PageLecon)
											print PageTemp2[0:PageTemp2.find(u'\n')].encode(config.console_encoding, 'replace')
								else:
									PageEnd = PageEnd + u'\n  | niveau      = ' + Valeur(u'niveau',PageLecon)
								#print (PageEnd.encode(config.console_encoding, 'replace'))
								#raw_input (PageTemp.encode(config.console_encoding, 'replace'))
				# Minuscule
				elif PageLecon.find(u'{{leçon') != -1:
					if Valeur(u'leçon',PageTemp) == u'':
						if PageTemp.find(u'leçon') < PageTemp.find(u'}}') or PageTemp.find(u'leçon') < PageTemp.find(u'}}'):
							if Valeur(u'leçon',PageTemp) == u'':
								PageTemp2 = PageTemp[PageTemp.find(u'leçon')+len(u'leçon'):len(PageTemp)]
								PageTemp2 = PageTemp2[0:PageTemp2.find(u'\n')]
								while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u' ' or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'\t':
									PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
								if PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == u'=':
									PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'leçon')+len(u'leçon')+PageTemp2.find(u'=')+1] + page2.title()
									PageTemp = PageTemp[PageTemp.find(u'leçon')+len(u'leçon')+PageTemp2.find(u'=')+1:len(PageTemp)]
								else:
									print u'Signe égal manquant dans :'
									print PageTemp2[len(PageTemp2)-1:len(PageTemp2)]
						else:
							PageEnd = PageEnd + u'\n|leçon=' + page2.title()
					PageEnd = PageEnd + PageTemp
					PageTemp = u''
					if PageLecon.find(u'niveau') != -1:
						niveauLecon = Valeur(u'niveau',PageLecon)
						print niveauLecon
						PageTemp = PageLecon[PageLecon.find(u'niveau'):len(PageLecon)]
						if PageTemp.find(u'=') < PageTemp.find(u'\n') and PageTemp.find(u'=') != -1:
							if niveauLecon != -1:
								PageTemp = PageEnd
								if PageTemp.find(u'{{Chapitre') != -1:
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
								elif PageTemp.find(u'{{chapitre') != -1:
									PageEnd = PageTemp[0:PageTemp.find(u'{{chapitre')+len(u'{{chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{chapitre')+len(u'{{chapitre'):len(PageTemp)]
								else: return
								if PageTemp.find(u'niveau') < PageTemp.find(u'}}') and PageTemp.find(u'niveau') != -1:
									PageTemp2 = PageTemp[PageTemp.find(u'niveau')+len(u'niveau'):len(PageTemp)]
									while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
										PageTemp2 = PageTemp2[1:len(PageTemp2)]
									niveauChapitre = PageTemp2[0:PageTemp2.find(u'\n')]
									if niveauChapitre == u'':
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'niveau')+len(u'niveau')] + "=" + niveauLecon
										PageTemp = PageTemp2
									elif niveauChapitre != niveauLecon:
										print u'Niveau du chapitre différent de celui de la leçon dans ' + PageHS.encode(config.console_encoding, 'replace')
								else:
									PageEnd = PageEnd + u'\n|niveau=' + niveauLecon
									
				PageEnd = PageEnd + PageTemp
				PageTemp = u''
				#raw_input (PageEnd.encode(config.console_encoding, 'replace'))
				
				'''print Valeur(u'niveau',PageEnd)
				print u'********************************************'
				print Valeur(u'numéro',PageEnd)
				print u'********************************************'
				print Valeur(u'précédent',PageEnd)
				print u'********************************************'
				print Valeur(u'suivant',PageEnd)
				raw_input(u'Fin de paramètres')'''
				NumLecon = u''
				PageTemp2 = u''
				if Valeur(u'numéro',PageEnd) == u'' or Valeur(u'précédent',PageEnd) == u'' or Valeur(u'suivant',PageEnd) == u'':
					if PageLecon.find(PageHS) != -1:
						PageTemp2 = PageLecon[0:PageLecon.find(PageHS)]	# Nécessite que le département ait un nom déifférent et que les leçons soient bien nommées différemment
					elif PageLecon.find(PageHS[PageHS.rfind(u'/')+1:len(PageHS)]) != -1:
						PageTemp2 = PageLecon[0:PageLecon.find(PageHS[PageHS.rfind(u'/')+1:len(PageHS)])]
					if PageTemp2 != u'':
						while PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == " " or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "=" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "[" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "{" or PageTemp2[len(PageTemp2)-1:len(PageTemp2)] == "|" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{C" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{c" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{L" or PageTemp2[len(PageTemp2)-2:len(PageTemp2)] == "{l":
							PageTemp2 = PageTemp2[0:len(PageTemp2)-1]
						if PageTemp2.rfind(u' ') > PageTemp2.rfind(u'|'):
							NumLecon = PageTemp2[PageTemp2.rfind(u' ')+1:len(PageTemp2)]
						else:
							NumLecon = PageTemp2[PageTemp2.rfind(u'|')+1:len(PageTemp2)]
						#print (PageTemp2.encode(config.console_encoding, 'replace'))				
						if NumLecon != u'' and NumLecon != u'département':
							# Le numéro de la leçon permet de remplir les champs : |numéro=, |précédent=, |suivant=
							if Valeur(u'numéro',PageEnd) == u'':
								if PageEnd.find(u'numéro') == -1:
									PageTemp = PageEnd
									PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
									PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
									if PageTemp.find(u'numéro') < PageTemp.find(u'}}') and PageTemp.find(u'numéro') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'numéro')+len(u'numéro'):len(PageTemp)]
										while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
											PageTemp2 = PageTemp2[1:len(PageTemp2)]
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'numéro')+len(u'numéro')] + "=" + NumLecon
										PageTemp = PageTemp2
									else:
										PageEnd = PageEnd + u'\n|numéro=' + NumLecon
									PageEnd = PageEnd + PageTemp
									PageTemp = u''
							if Valeur(u'précédent',PageEnd) == u'' and NumLecon	== 1:
								PageTemp = PageEnd
								PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
								PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
								if PageTemp.find(u'précédent') < PageTemp.find(u'}}') and PageTemp.find(u'précédent') != -1:
									PageTemp2 = PageTemp[PageTemp.find(u'précédent')+len(u'précédent'):len(PageTemp)]
									while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
										PageTemp2 = PageTemp2[1:len(PageTemp2)]
									PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+len(u'précédent')] + "=" + NumLecon
									PageTemp = PageTemp2
								else:
									PageEnd = PageEnd + u'\n|précédent=' + NumLecon
								PageEnd = PageEnd + PageTemp
								PageTemp = u''								
							elif Valeur(u'précédent',PageEnd) == u'' and Valeur(str(int(NumLecon)-1),PageLecon) != u'':
								PageTemp = PageEnd
								PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
								PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
								if PageTemp.find(u'précédent') < PageTemp.find(u'}}') and PageTemp.find(u'précédent') != -1:
									PageTemp2 = PageTemp[PageTemp.find(u'précédent')+len(u'précédent'):len(PageTemp)]
									while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
										PageTemp2 = PageTemp2[1:len(PageTemp2)]
									PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+len(u'précédent')] + "=" + Valeur(str(int(NumLecon)-1),PageLecon)
									PageTemp = PageTemp2
								else:
									PageEnd = PageEnd + u'\n|précédent=' + Valeur(str(int(NumLecon)-1),PageLecon)
								PageEnd = PageEnd + PageTemp
								PageTemp = u''
							if Valeur(u'suivant',PageEnd) == u'' and Valeur(str(int(NumLecon)+1),PageLecon) != u'':					
								PageTemp = PageEnd
								PageEnd = PageTemp[0:PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre')]
								PageTemp = PageTemp[PageTemp.find(u'{{Chapitre')+len(u'{{Chapitre'):len(PageTemp)]
								if PageTemp.find(u'suivant') < PageTemp.find(u'}}') and PageTemp.find(u'suivant') != -1:
									PageTemp2 = PageTemp[PageTemp.find(u'suivant')+len(u'suivant'):len(PageTemp)]
									while PageTemp2[0:1] == " " or PageTemp2[0:1] == "=":
										PageTemp2 = PageTemp2[1:len(PageTemp2)]
									PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'suivant')+len(u'suivant')] + "=" + Valeur(str(int(NumLecon)+1),PageLecon)
									PageTemp = PageTemp2
								else:
									if PageTemp.find(u'précédent') != -1:
										PageTemp2 = PageTemp[PageTemp.find(u'précédent'):len(PageTemp)]
										PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'précédent')+PageTemp2.find(u'\n')] + u'\n|suivant=' + Valeur(str(int(NumLecon)+1),PageLecon)
										PageTemp = PageTemp[PageTemp.find(u'précédent')+PageTemp2.find(u'\n'):len(PageTemp)]
									else:
										PageEnd = PageEnd + u'\n|suivant=' + Valeur(str(int(NumLecon)+1),PageLecon)
								PageEnd = PageEnd + PageTemp
								PageTemp = u''
			else: # Pas de leçon
				print u'Pas de leçon : '
				print (Lecon.encode(config.console_encoding, 'replace'))
				print u'dans : '
				print (PageHS.encode(config.console_encoding, 'replace'))
				#raw_input ('Attente')
			PageEnd = PageEnd + PageTemp
			PageTemp = u''
	elif PageTemp.find(u'{Leçon') != -1 or PageTemp.find(u'{leçon') != -1:
		# Evaluations
		page2 = Page(site,u'Discussion:' + PageHS)
		if page2.exists():
			try:
				PageDisc = page2.get()
			except wikipedia.NoPage:
				print "NoPage"
				return
			except wikipedia.IsRedirectPage:
				print "Redirect page"
				return
			except wikipedia.LockedPage:
				print "Locked/protected page"
				return
		else: 
			PageDisc = u''
		if PageDisc.find(u'{{Évaluation') == -1 and PageDisc.find(u'{{évaluation') == -1: sauvegarde(page2, u'{{Évaluation|idfaculté=' + Valeur(u'idfaculté',PageTemp) + u'|avancement=?}}\n' + PageDisc, u'Ajout d\'évaluation inconnue')	
						
		# Synchronisations avec les niveaux des départements, et les évaluations des onglets Discussion:
		#...
	PageEnd = PageEnd + PageTemp
	
	# Bas de page
	if (PageEnd.find(u'{{Chapitre') != -1 or PageEnd.find(u'{{chapitre') != -1) and PageEnd.find(u'{{Bas de page') == -1 and PageEnd.find(u'{{bas de page') == -1:
		idfaculte = u''
		precedent = u''
		suivant = u''
		if PageEnd.find(u'idfaculté') != -1:
			PageTemp = PageEnd[PageEnd.find(u'idfaculté'):len(PageEnd)]
			idfaculte = PageTemp[0:PageTemp.find(u'\n')]	# pb si tout sur la même ligne, faire max(0,min(PageTemp.find(u'\n'),?))
			if PageEnd.find(u'précédent') != -1:
				PageTemp = PageEnd[PageEnd.find(u'précédent'):len(PageEnd)]
				precedent = PageTemp[0:PageTemp.find(u'\n')]
			if PageEnd.find(u'suivant') != -1:
				PageTemp = PageEnd[PageEnd.find(u'suivant'):len(PageEnd)]
				suivant = PageTemp[0:PageTemp.find(u'\n')]
			PageEnd = PageEnd + u'\n\n{{Bas de page|' + idfaculte + u'\n|' + precedent + u'\n|' + suivant + u'}}'
	
	# Exercices (pb http://fr.wikiversity.org/w/index.php?title=Allemand%2FVocabulaire%2FFormes_et_couleurs&diff=354352&oldid=354343)
	'''PageTemp = PageEnd
	PageEnd = u''
	while PageEnd.find(u'{{CfExo') != -1 or PageEnd.find(u'{{cfExo') != -1:
		PageTemp = PageEnd[
		if 
		|exercice=[[
		/Exercices/
		/quiz/
	PageEnd = PageEnd + PageTemp'''
	
	# Test des URL
	if debogage == True: print u'Test des URL'
	PageEnd = hyperlynx.hyperlynx(PageEnd)
	if debogage == True: raw_input (u'--------------------------------------------------------------------------------------------')
	
	if PageBegin != PageEnd: sauvegarde(page, PageEnd, summary)
Exemple #8
0
def modification(PageHS):
    summary = u'Formatage'
    page = Page(site, PageHS)
    print(PageHS.encode(config.console_encoding, 'replace'))
    if not page.exists(): return
    if page.namespace() != ns and page.title().find(
            u'Utilisateur:JackBot/test') == -1:
        return
    else:
        try:
            PageBegin = page.get()
        except wikipedia.NoPage:
            print "NoPage"
            return
        except wikipedia.IsRedirectPage:
            print "Redirect page"
            return
        except wikipedia.LockedPage:
            print "Locked/protected page"
            return
    PageTemp = PageBegin
    PageEnd = u''

    # Traitements des URL et leurs modèles
    if debogage == True: print u'Test des URL'
    PageTemp = hyperlynx.hyperlynx(PageTemp)
    if debogage == True:
        raw_input(
            u'--------------------------------------------------------------------------------------------'
        )
    if PageTemp != PageBegin:
        summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/11#Identifier les liens brisés (le retour ;-))|Vérification des liens externes]]'
        summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/12#Remplacer_les_.7B.7BCite_web.7D.7D_par_.7B.7BLien_web.7D.7D|traduction de leurs modèles]]'

    # Nombres
    PageTemp = re.sub(
        ur'{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}',
        ur'{{\1:\2\3}}', PageTemp)
    '''Semi-auto
	if re.search(ur'(¤|₳|฿|¢|₡|₵|₢|₫|€|ƒ|₣|₲|₭|£|₤|₥|₦|₱|\$|₮|₩|¥|Ƶ|₯|₴|₪|₠|₰)([0-9]+)(&nbsp;| )*([0-9]+)?[.,]([0-9]+)(&nbsp;| +)?', PageTemp):
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2013/03#.7B.7BRequ.C3.AAte_en_cours.7D.7D_Mille_millions_de_mille_sabords_.28et_pas_Sabords_mille_millions_de_mille_sabords.29|symbole monétaire]]'
		PageTemp = re.sub(ur'(¤|₳|฿|¢|₡|₵|₢|₫|€|ƒ|₣|₲|₭|£|₤|₥|₦|₱|\$|₮|₩|¥|Ƶ|₯|₴|₪|₠|₰)([0-9]+)(&nbsp;| )*([0-9]+)?[.,]([0-9]+)(&nbsp;| +)?', ur'{{unité|$2$4.$5|$1}}', PageTemp)
	'''
    # Analyse des crochets et accolades (à faire : hors LaTex)
    if PageTemp.count('{') - PageTemp.count('}') != 0:
        if PageHS.find(u'Utilisateur:JackBot/') == -1:
            log(u'*[[' + PageHS + u']] : accolade cassée')
        #if debogageLent == True: raise Exception(u'Accolade cassée')
    if PageTemp.count('[') - PageTemp.count(']') != 0:
        if PageHS.find(u'Utilisateur:JackBot/') == -1:
            log(u'*[[' + PageHS + u']] : crochet cassé')
        #if debogageLent == True: raise Exception(u'Crochet cassé')
    if PageBegin.count('[[') - PageBegin.count(']]') != PageTemp.count(
            '[[') - PageTemp.count(']]'):
        txtfile = codecs.open(output, 'a', 'utf-8')
        txtfile.write(
            PageTemp +
            u'\n\n------------------------------------------------------------------------------------------------------------\n\n'
        )
        txtfile.close()
        if debogage == False: raise Exception(u'Crochets cassés')
    if PageBegin.count('{{') - PageBegin.count('}}') != PageTemp.count(
            '{{') - PageTemp.count('}}'):
        txtfile = codecs.open(output, 'a', 'utf-8')
        txtfile.write(
            PageTemp +
            u'\n\n------------------------------------------------------------------------------------------------------------\n\n'
        )
        txtfile.close()
        if debogage == False: raise Exception(u'Accolades cassées')

    # En travaux : déplacement par étapes de PageTemp vers PageEnd en s'arrêtant sur chaque point à modifier
    '''positionW = -1
	if PageTemp.find(u'{{Sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{Sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{Sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{Homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{Homonymie}}\n')+len(u'{{Homonymie}}\n')
	elif PageTemp.find(u'{{homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{homonymie}}\n')+len(u'{{homonymie}}\n')
	elif PageTemp.find(u'{{Titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{Titres homonymes}}\n')+len(u'{{Titres homonymes}}\n')
	elif PageTemp.find(u'{{titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{titres homonymes}}\n')+len(u'{{titres homonymes}}\n')		
	elif PageTemp.find(u'{{Communes') != -1:
		positionW = PageTemp.find(u'{{Communes')
	elif PageTemp.find(u'{{communes') != -1:
		positionW = PageTemp.find(u'{{communes')
	elif PageTemp.find(u'{{Patronyme') != -1:
		positionW = PageTemp.find(u'{{Patronyme')
	elif PageTemp.find(u'{{patronyme') != -1:
		positionW = PageTemp.find(u'{{patronyme')		
	elif PageTemp.find(u'=== Liens externes ===\n') != -1:
		positionW = PageTemp.find(u'=== Liens externes ===\n')+len(u'=== Liens externes ===\n')
	elif PageTemp.find(u'== Voir aussi ==\n') != -1:
		positionW = PageTemp.find(u'== Voir aussi ==\n')+len(u'== Voir aussi ==\n')
	elif PageTemp.find(u'{{Palette') != -1:
		positionW = PageTemp.find(u'{{Palette')
	elif PageTemp.find(u'{{palette') != -1:
		positionW = PageTemp.find(u'{{palette')
	elif PageTemp.find(u'{{Portail') != -1:
		positionW = PageTemp.find(u'{{Portail')
	elif PageTemp.find(u'{{portail') != -1:
		positionW = PageTemp.find(u'{{portail')
	elif PageTemp.find(u'[[Catégorie:') != -1:
		positionW = PageTemp.find(u'[[Catégorie:')
	elif re.compile('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]').search(PageTemp):
		try:
			i1 = re.search('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]',PageTemp).start()
			positionW = len(PageTemp[:i1])
		except:
			print u'pb regex interwiki'
	else:
		positionW = 0'''

    if PageTemp.find(u'{{DEFAULTSORT:') == -1 and PageTemp.find(
            u'{{CLEDETRI:') == -1 and ns == 0:
        ClePage = CleDeTri.CleDeTri(PageHS)
        if ClePage != u'' and ClePage != None and ClePage != PageHS:
            ''' if PageTemp.find(u'né en ...')
				if PageHS.rfind(u' ') != -1:
					Nom = PageHS[PageHS.rfind(u' ')+1:len(PageHS)]
					PageHS2 = PageHS[PageHS.find(u'/')+1:len(PageHS)]
					PageHS2 = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = Prenom[Prenom.find(u'/')+1:len(Prenom)]
					Prenom = Prenom[0:Prenom.find(u' ')]
					print PageHS2
					print Nom
					print Prenom
					if Nom[0:1] == PageHS2[0:1]:
						PageEnd = PageEnd + u'{{DEFAULTSORT:' + CleDeTri.CleDeTri(Nom) + u', ' + CleDeTri.CleDeTri(Prenom) + u'}}\n\n'
					else:
						print PageHS.encode(config.console_encoding, 'replace')
				else:
					print PageHS.encode(config.console_encoding, 'replace')
			else:'''
            if PageTemp.find(u'[[Catégorie:') != -1:
                PageTemp = PageTemp[0:PageTemp.find(
                    u'[[Catégorie:'
                )] + u'\n{{DEFAULTSORT:' + 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{{DEFAULTSORT:' + 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[:
                                            i1] + u'\n{{DEFAULTSORT:' + ClePage + u'}}\n\n' + PageTemp[
                                                i1:]
                    except:
                        print u'pb regex interwiki'
                else:
                    PageTemp = PageTemp + u'\n\n{{DEFAULTSORT:' + ClePage + u'}}\n'
    else:
        PageTemp2 = PageTemp[PageTemp.find(u'{{DEFAULTSORT'):len(PageTemp)]
        ClePage = PageTemp2[PageTemp2.find(u'|') + 1:PageTemp2.find(u'}}')]
        if CleDeTri.CleDeTri(PageHS) != ClePage and debogage == True:
            print(u'Fausse clé de tri dans :')
            print(PageHS.encode(config.console_encoding, 'replace'))
            print(ClePage.encode(config.console_encoding, 'replace'))

    #raw_input(PageEnd.encode(config.console_encoding, 'replace'))
    PageEnd = PageEnd + PageTemp
    if PageEnd != PageBegin:
        PageEnd = re.sub(ur'<br>', ur'<br/>', PageEnd)
        sauvegarde(page, PageEnd, summary)
Exemple #9
0
def modification(PageHS):
    summary = u'Formatage'
    page = Page(site, PageHS)
    if page.namespace() != 0: return
    try:
        PageBegin = page.get()
    except wikipedia.NoPage:
        print "NoPage"
        return
    except wikipedia.IsRedirectPage:
        print "Redirect page"
        return
    PageTemp = PageBegin
    PageEnd = u''

    # Traitement des modèles
    regex = ur'\{\{[P|p]ortail([^\}]*)\}\}'
    if re.search(regex, PageTemp):
        summary += ', retrait des portails'
        PageTemp = re.sub(regex, ur'', PageTemp)
    regex = ur'\{\{[P|p]alette([^\}]*)\}\}'
    if re.search(regex, PageTemp):
        summary += ', retrait des palettes'
        PageTemp = re.sub(regex, ur'', PageTemp)
    PageTemp = PageTemp.replace(u'{{PDC}}', u'profondeur de champ')

    # Traitement des hyperliens
    PageTemp = hyperlynx.hyperlynx(PageTemp)

    # Clés de tri pour les noms
    if PageTemp.find(
            u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'
    ) != -1:
        PageEnd = PageEnd + PageTemp[0:PageTemp.find(
            u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]')]
        PageTemp = PageTemp[PageTemp.find(
            u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'
        ):PageTemp.find(
            u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'
        ) + len(
            u'[[Catégorie:Personnalités de la photographie'
        )] + PageTemp[PageTemp.find(
            u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}]]'
        ) + len(u'[[Catégorie:Personnalités de la photographie|{{SUBPAGENAME}}'
                ):len(PageTemp)]
    if PageTemp.find(u'{{DEFAULTSORT:') == -1:
        ClePage = CleDeTri.CleDeTri(PageHS)
        if ClePage != u'' and ClePage != None:
            if PageHS.rfind(u' ') != -1:
                Nom = PageHS[PageHS.rfind(u' ') + 1:len(PageHS)]
                PageHS2 = PageHS[PageHS.find(u'/') + 1:len(PageHS)]
                PageHS2 = PageHS2[PageHS2.find(u'/') + 1:len(PageHS2)]
                Prenom = PageHS2[PageHS2.find(u'/') + 1:len(PageHS2)]
                Prenom = Prenom[Prenom.find(u'/') + 1:len(Prenom)]
                Prenom = Prenom[0:Prenom.find(u' ')]
                print PageHS2
                print Nom
                print Prenom
                if Nom[0:1] == PageHS2[0:1]:
                    PageEnd = PageEnd + u'{{DEFAULTSORT:' + CleDeTri.CleDeTri(
                        Nom) + u', ' + CleDeTri.CleDeTri(Prenom) + u'}}\n\n'
                else:
                    print PageHS.encode(config.console_encoding, 'replace')
            else:
                print PageHS.encode(config.console_encoding, 'replace')
    PageEnd = PageEnd + PageTemp
    if PageEnd != PageBegin: sauvegarde(page, PageEnd, summary)
Exemple #10
0
def modification(PageHS):
	summary = u'Formatage'
	page = Page(site,PageHS)
	print(PageHS.encode(config.console_encoding, 'replace'))
	if not page.exists(): return
	if page.namespace() != 0 and PageHS.find(u'Utilisateur:JackBot/test') == -1 and PageHS.find(u'Modèle:Cite pmid/') == -1: return
	try:
		PageBegin = page.get()
	except wikipedia.NoPage:
		print "NoPage"
		return
	except wikipedia.IsRedirectPage:
		print "Redirect page"
		return
	except wikipedia.LockedPage:
		print "Locked/protected page"
		return
	if PageBegin.find(u'{{en travaux') != -1 or PageBegin.find(u'{{En travaux') != -1:
		print "Page en travaux"
		return
	PageTemp = PageBegin
	
	# Traitements des URL et leurs modèles
	if debogage == True: print u'Test des URL'
	PageTemp = hyperlynx.hyperlynx(PageTemp, debogage)
	if debogage == True: print (u'--------------------------------------------------------------------------------------------')
	if PageTemp != PageBegin:
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/11#Identifier les liens brisés (le retour ;-))|Vérification des liens externes]]'
		summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/12#Remplacer_les_.7B.7BCite_web.7D.7D_par_.7B.7BLien_web.7D.7D|traduction de leurs modèles]]'
	regex = ur'({{[l|L]ien *\|[^}]*)traducteur( *=)'
	if re.search(regex, PageTemp):
		PageTemp = re.sub(regex, ur'\1trad\2', PageTemp)
	
	# Autres modèles (https://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Page_utilisant_un_mod%C3%A8le_avec_un_param%C3%A8tre_obsol%C3%A8te)
	PageTemp = PageTemp.replace(u'{{Reflist|2}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{reflist|2}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Reflist|3}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{reflist|3}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Reflist|30em}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{reflist|30em}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Reflist|colwidth = 30em}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Reflist|colwidth=40em}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Références|2}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{références|2}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Références|30em}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{références|colonnes}}', u'{{Références}}')
	PageTemp = PageTemp.replace(u'{{Références|taille}}', u'{{Références}}')
	
	# Rustine temporaire pour https://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Page_du_mod%C3%A8le_Article_comportant_une_erreur
	'''
	PageEnd = u''
	while PageTemp.find(u'{{article') != -1:
		PageEnd = PageEnd + PageTemp[:PageTemp.find(u'{{article')+len(u'{{article')]
		PageTemp = PageTemp[PageTemp.find(u'{{article')+len(u'{{article'):]
		if PageTemp.find(u'éditeur=') != -1 and PageTemp.find(u'éditeur=') < PageTemp.find(u'}}') and (PageTemp.find(u'périodique=') == -1 or PageTemp.find(u'périodique=') > PageTemp.find(u'}}')) and (PageTemp.find(u'revue=') == -1 or PageTemp.find(u'revue=') > PageTemp.find(u'}}')) and (PageTemp.find(u'journal=') == -1 or PageTemp.find(u'journal=') > PageTemp.find(u'}}')):
			PageEnd = PageEnd + PageTemp[:PageTemp.find(u'éditeur=')] + u'périodique='
			PageTemp = PageTemp[PageTemp.find(u'éditeur=')+len(u'éditeur='):]
	PageTemp = PageEnd + PageTemp
	PageEnd = u''
	while PageTemp.find(u'{{Article') != -1:
		PageEnd = PageEnd + PageTemp[:PageTemp.find(u'{{Article')+len(u'{{Article')]
		PageTemp = PageTemp[PageTemp.find(u'{{Article')+len(u'{{Article'):]
		if PageTemp.find(u'éditeur=') != -1 and PageTemp.find(u'éditeur=') < PageTemp.find(u'}}') and (PageTemp.find(u'périodique=') == -1 or PageTemp.find(u'périodique=') > PageTemp.find(u'}}')) and (PageTemp.find(u'revue=') == -1 or PageTemp.find(u'revue=') > PageTemp.find(u'}}')) and (PageTemp.find(u'journal=') == -1 or PageTemp.find(u'journal=') > PageTemp.find(u'}}')):
			PageEnd = PageEnd + PageTemp[:PageTemp.find(u'éditeur=')] + u'périodique='
			PageTemp = PageTemp[PageTemp.find(u'éditeur=')+len(u'éditeur='):]		
	PageTemp = PageEnd + PageTemp
	'''
	
	# Rustine pour https://fr.wikipedia.org/w/index.php?title=Achille_Varzi&diff=123170171&oldid=122929021
	PageTemp = PageTemp.replace(u'{{lien mortarchive|',u'{{lien mort archive|')
	
	# Nombres
	PageTemp = re.sub(ur'{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}', ur'{{\1:\2\3}}', PageTemp)

	# Protocoles
	PageTemp = PageTemp.replace(u'http://http://', u'http://')
	
	# Analyse des crochets et accolades (à faire : hors LaTex)
	if PageTemp.count('{') - PageTemp.count('}') != 0:
		if PageHS.find(u'Utilisateur:JackBot/') == -1: log(u'*[[' + PageHS + u']] : accolade cassée')
		#if debogageLent == True: raise Exception(u'Accolade cassée')
	if PageTemp.count('[') - PageTemp.count(']') != 0:
		if PageHS.find(u'Utilisateur:JackBot/') == -1: log(u'*[[' + PageHS + u']] : crochet cassé')
		#if debogageLent == True: raise Exception(u'Crochet cassé')
	if PageBegin.count('[[') - PageBegin.count(']]') != PageTemp.count('[[') - PageTemp.count(']]'):
		txtfile = codecs.open(output, 'a', 'utf-8')
		txtfile.write(PageTemp + u'\n\n------------------------------------------------------------------------------------------------------------\n\n')
		txtfile.close()	
		if debogage == True: print u'Crochets cassés'	#raise Exception(u'Crochets cassés')
		return
	if PageBegin.count('{{') - PageBegin.count('}}') != PageTemp.count('{{') - PageTemp.count('}}'):
		txtfile = codecs.open(output, 'a', 'utf-8')
		txtfile.write(PageTemp + u'\n\n------------------------------------------------------------------------------------------------------------\n\n')
		txtfile.close()	
		if debogage == True: print u'Accolades cassées'	#raise Exception(u'Accolades cassées')
		return

	# Catégories
	if PageHS.find(u'Modèle:Cite pmid/') != -1:
		PageTemp = PageTemp.replace(u'Catégorie:Modèle de source‎', u'Catégorie:Modèle pmid')
		PageTemp = PageTemp.replace(u'[[Catégorie:Modèle pmid]]', u'[[Catégorie:Modèle pmid‎|{{SUBPAGENAME}}]]')

	# Sauvegarde
	PageEnd = PageTemp
	if PageEnd != PageBegin and PageEnd != PageBegin.replace(u'{{chapitre |', u'{{chapitre|') and PageEnd != PageBegin.replace(u'{{Chapitre |', u'{{Chapitre|'):
		PageEnd = re.sub(ur'<br>', ur'<br/>', PageEnd)
		PageEnd = PageEnd.replace(ur'</ref><ref>', ur'</ref>{{,}}<ref>', )
		sauvegarde(page,PageEnd,summary)
Exemple #11
0
def modification(PageHS):
    summary = u'Formatage'
    page = Page(site, PageHS)
    print(PageHS.encode(config.console_encoding, 'replace'))
    if not page.exists(): return
    if page.namespace() != ns and PageHS.find(
            u'Utilisateur:JackBot/test') == -1 and PageHS.find(
                u'Modèle:Cite pmid/') == -1:
        return
    else:
        try:
            PageBegin = page.get()
        except wikipedia.NoPage:
            print "NoPage"
            return
        except wikipedia.IsRedirectPage:
            print "Redirect page"
            return
        except wikipedia.LockedPage:
            print "Locked/protected page"
            return
    PageTemp = PageBegin

    # Traitements des URL et leurs modèles
    if debogage == True: print u'Test des URL'
    PageTemp = hyperlynx.hyperlynx(PageTemp)
    if debogage == True:
        raw_input(
            u'--------------------------------------------------------------------------------------------'
        )
    if PageTemp != PageBegin:
        summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/11#Identifier les liens brisés (le retour ;-))|Vérification des liens externes]]'
        summary = summary + u', [[Wikipédia:Bot/Requêtes/2012/12#Remplacer_les_.7B.7BCite_web.7D.7D_par_.7B.7BLien_web.7D.7D|traduction de leurs modèles]]'

    # Nombres
    PageTemp = re.sub(
        ur'{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}',
        ur'{{\1:\2\3}}', PageTemp)

    # Protocoles
    PageTemp = PageTemp.replace(u'http://http://', u'http://')

    # Analyse des crochets et accolades (à faire : hors LaTex)
    if PageTemp.count('{') - PageTemp.count('}') != 0:
        if PageHS.find(u'Utilisateur:JackBot/') == -1:
            log(u'*[[' + PageHS + u']] : accolade cassée')
        #if debogageLent == True: raise Exception(u'Accolade cassée')
    if PageTemp.count('[') - PageTemp.count(']') != 0:
        if PageHS.find(u'Utilisateur:JackBot/') == -1:
            log(u'*[[' + PageHS + u']] : crochet cassé')
        #if debogageLent == True: raise Exception(u'Crochet cassé')
    if PageBegin.count('[[') - PageBegin.count(']]') != PageTemp.count(
            '[[') - PageTemp.count(']]'):
        txtfile = codecs.open(output, 'a', 'utf-8')
        txtfile.write(
            PageTemp +
            u'\n\n------------------------------------------------------------------------------------------------------------\n\n'
        )
        txtfile.close()
        if debogage == True:
            print u'Crochets cassés'  #raise Exception(u'Crochets cassés')
        return
    if PageBegin.count('{{') - PageBegin.count('}}') != PageTemp.count(
            '{{') - PageTemp.count('}}'):
        txtfile = codecs.open(output, 'a', 'utf-8')
        txtfile.write(
            PageTemp +
            u'\n\n------------------------------------------------------------------------------------------------------------\n\n'
        )
        txtfile.close()
        if debogage == True:
            print u'Accolades cassées'  #raise Exception(u'Accolades cassées')
        return

    # Catégories
    if PageHS.find(u'Modèle:Cite pmid/') != -1:
        PageTemp = PageTemp.replace(u'Catégorie:Modèle de source‎',
                                    u'Catégorie:Modèle pmid')
        PageTemp = PageTemp.replace(
            u'[[Catégorie:Modèle pmid]]',
            u'[[Catégorie:Modèle pmid‎|{{SUBPAGENAME}}]]')

    # Sauvegarde
    PageEnd = PageTemp
    if PageEnd != PageBegin:
        PageEnd = re.sub(ur'<br>', ur'<br/>', PageEnd)
        PageEnd = PageEnd.replace(
            ur'</ref><ref>',
            ur'</ref>{{,}}<ref>',
        )
        sauvegarde(page, PageEnd, summary)
Exemple #12
0
def modification(PageHS):
	page = Page(site,PageHS)
	print(PageHS.encode(config.console_encoding, 'replace'))
	if not page.exists(): return
	if page.namespace() != 0 and page.title().find(u'Utilisateur:JackBot/test') == -1: 
		return	# if page.namespace()!=14
	else:
		try:
			PageBegin = page.get()
		except wikipedia.NoPage:
			print "NoPage"
			return
		except wikipedia.IsRedirectPage:
			print "Redirect page"
			return
		except wikipedia.LockedPage:
			print "Locked/protected page"
			return
	PageTemp = PageBegin
	PageEnd = u''
	
	# Traitements de la page courante
	if debogage == True: print u'Test des URL'
	PageTemp = hyperlynx.hyperlynx(PageTemp)
	if debogage == True: raw_input (u'--------------------------------------------------------------------------------------------')
	PageTemp = re.sub(ur'{{ *(formatnum|Formatnum|FORMATNUM)\:([0-9]*) *([0-9]*)}}', ur'{{\1:\2\3}}', PageTemp)
	if PageTemp.count('{') - PageTemp.count('}') != 0:
		log(u'*[[' + PageHS + u']] : modèle cassé')
		if debogage == True: raise Exception(u'Modèle cassé')
	'''if PageTemp.count('[[') - PageTemp.count(']]') != 0:
		log(u'*[[' + PageHS + u']] : lien interne cassé')
		raise Exception(u'Lien interne cassé')'''
	if PageTemp.count('[') - PageTemp.count(']') != 0:
		log(u'*[[' + PageHS + u']] : lien URL cassé')
		if debogage == True: raise Exception(u'Lien URL cassé')
		
	# En travaux : déplacement par étapes de PageTemp vers PageEnd en s'arrêtant sur chaque point à modifier
	'''positionW = -1
	if PageTemp.find(u'{{Sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{Sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{Sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{sigle') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{sigle'):len(PageTemp)]
		positionW = PageTemp.find(u'{{sigle')+PageTemp2.find(u'\n')+1
	elif PageTemp.find(u'{{Homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{Homonymie}}\n')+len(u'{{Homonymie}}\n')
	elif PageTemp.find(u'{{homonymie}}\n') != -1:
		positionW = PageTemp.find(u'{{homonymie}}\n')+len(u'{{homonymie}}\n')
	elif PageTemp.find(u'{{Titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{Titres homonymes}}\n')+len(u'{{Titres homonymes}}\n')
	elif PageTemp.find(u'{{titres homonymes}}\n') != -1:
		positionW = PageTemp.find(u'{{titres homonymes}}\n')+len(u'{{titres homonymes}}\n')		
	elif PageTemp.find(u'{{Communes') != -1:
		positionW = PageTemp.find(u'{{Communes')
	elif PageTemp.find(u'{{communes') != -1:
		positionW = PageTemp.find(u'{{communes')
	elif PageTemp.find(u'{{Patronyme') != -1:
		positionW = PageTemp.find(u'{{Patronyme')
	elif PageTemp.find(u'{{patronyme') != -1:
		positionW = PageTemp.find(u'{{patronyme')		
	elif PageTemp.find(u'=== Liens externes ===\n') != -1:
		positionW = PageTemp.find(u'=== Liens externes ===\n')+len(u'=== Liens externes ===\n')
	elif PageTemp.find(u'== Voir aussi ==\n') != -1:
		positionW = PageTemp.find(u'== Voir aussi ==\n')+len(u'== Voir aussi ==\n')
	elif PageTemp.find(u'{{Palette') != -1:
		positionW = PageTemp.find(u'{{Palette')
	elif PageTemp.find(u'{{palette') != -1:
		positionW = PageTemp.find(u'{{palette')
	elif PageTemp.find(u'{{Portail') != -1:
		positionW = PageTemp.find(u'{{Portail')
	elif PageTemp.find(u'{{portail') != -1:
		positionW = PageTemp.find(u'{{portail')
	elif PageTemp.find(u'[[Catégorie:') != -1:
		positionW = PageTemp.find(u'[[Catégorie:')
	elif re.compile('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]').search(PageTemp):
		try:
			i1 = re.search('\[\[[a-z][^wikts]+:[^\[\]\n]+\]\]',PageTemp).start()
			positionW = len(PageTemp[:i1])
		except:
			print u'pb regex interwiki'
	else:
		positionW = 0'''

	if PageTemp.find(u'{{DEFAULTSORT:') == -1:
		ClePage = CleDeTri(PageHS)
		if ClePage != u'' and ClePage != None and ClePage != PageHS:
			''' if PageTemp.find(u'né en ...')
				if PageHS.rfind(u' ') != -1:
					Nom = PageHS[PageHS.rfind(u' ')+1:len(PageHS)]
					PageHS2 = PageHS[PageHS.find(u'/')+1:len(PageHS)]
					PageHS2 = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = PageHS2[PageHS2.find(u'/')+1:len(PageHS2)]
					Prenom = Prenom[Prenom.find(u'/')+1:len(Prenom)]
					Prenom = Prenom[0:Prenom.find(u' ')]
					print PageHS2
					print Nom
					print Prenom
					if Nom[0:1] == PageHS2[0:1]:
						PageEnd = PageEnd + u'{{DEFAULTSORT:' + CleDeTri(Nom) + u', ' + CleDeTri(Prenom) + u'}}\n\n'
					else:
						print PageHS.encode(config.console_encoding, 'replace')
				else:
					print PageHS.encode(config.console_encoding, 'replace')
			else:'''	
			if PageTemp.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{DEFAULTSORT:' + 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{{DEFAULTSORT:' + 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[:i1] + u'\n{{DEFAULTSORT:' + ClePage + u'}}\n\n' + PageTemp[i1:]
					except:
						print u'pb regex interwiki'
				else:
					PageTemp = PageTemp + u'\n\n{{DEFAULTSORT:' + ClePage + u'}}\n'			
	else:
		PageTemp2 = PageTemp[PageTemp.find(u'{{DEFAULTSORT'):len(PageTemp)]
		ClePage = PageTemp2[PageTemp2.find(u'|')+1:PageTemp2.find(u'}}')]
		if CleDeTri(PageHS) != ClePage:
			print (u'Fausse clé de tri dans :')
			print (PageHS.encode(config.console_encoding, 'replace'))
			print (ClePage.encode(config.console_encoding, 'replace'))
	
	#raw_input(PageEnd.encode(config.console_encoding, 'replace'))	
	PageEnd = PageEnd + PageTemp
	if PageEnd != PageBegin:
		PageEnd = re.sub(ur'<br>', ur'<br/>', PageEnd)
		sauvegarde(page,PageEnd,summary)