Difference between revisions 14094237 and 14130319 on frwiktionary

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

# Ce script formate les pages du Wiktionnaire, tous les jours après minuit depuis le Toolserver :
# 1) Retire certains doublons.
# 2) Ajoute les clés de tris, prononciations vides, et certains liens vers les conjugaisons.
(contracted; show full)Modele[201] = u'abréviation'
Modele[202] = u'hapax'
Modele[203] = u'hispanisme'
Modele[204] = u'humour'
Modele[205] = u'hyperbole'
Modele[206] = u'idiotisme'
Modele[207] = u'indéfini'
Modele[208] = u'
indéterminéjoaillerie'
Modele[209] = u'informel'
Modele[210] = u'injurieux'
Modele[211] = u'interjection'
Modele[212] = u'ironique'
Modele[213] = u'litote'
Modele[214] = u'littéraire'
Modele[215] = u'm-cour'
(contracted; show full)Modele[595] = u'litt'
Modele[596] = u'mythol'
Modele[597] = u'opti'
Modele[598] = u'geog'
Modele[599] = u'hyperb'
Modele[600] = u'gastron'
Modele[601] = u'didactique'
Modele[602] = u'
déterminéauxiliaire'
Modele[603] = u'td'
Modele[604] = u'tr-dir'
Modele[605] = u'tr-indir'
Modele[606] = u'dim-lex'
Modele[607] = u'diminutif'
Modele[608] = u'diplomatie'
Modele[609] = u'informatique'
(contracted; show full)Modele[775] = u'argot militaire'
Modele[776] = u'combat'
Modele[777] = u'sports de combat'
Modele[778] = u'capoeira'
Modele[779] = u'aïkido'
Modele[780] = u'argot polytechnicien'
Modele[781] = u'élatif'

Modele[782] = u'joaillerie'
limit4 = 7834	# ébauches

Modele[783] = u'ébauche-trans'
Modele[784] = u'ébauche-déf'
Modele[785] = u'ébauche-étym'
Modele[786] = u'ébauche-pron'
Modele[787] = u'ébauche-étym-nom-scientifique'
Modele[788] = u'ébauche-exe'
Modele[789] = u'ébauche-pron'
Modele[790] = u'ébauche-syn'
Modele[791] = u'ébauche'
Modele[792] = u'ébauche-trans'

limit5 = 795
# non traités
#Modele[] = u'spécialement' 
#Modele[] = u'T'
#Modele[] = u'région'
#Modele[] = u'régio'
(contracted; show full)

	# Nettoyage
	if PageTemp.find(u'{{voir}}\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}\n')] + PageTemp[PageTemp.find(u'{{voir}}\n')+len(u'{{voir}}\n'):len(PageTemp)]
	if PageTemp.find(u'{{voir}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}')] + PageTemp[PageTemp.find(u'{{voir}}')+len(u'{{voir}}'):len(PageTemp)]
		
	# Clés de tri

	baratin = u'{{clé de tri|}}<!-- supprimer si le mot ne contient pas de caractères accentués ni de caractères typographiques (par ex. trait d’union ou apostrophe) ; sinon suivez les instructions à [[Modèle:clé de tri]] -->'
	if PageTemp.find(baratin) != -1:
		PageTemp = PageTemp[0:PageTemp.find(baratin)] + PageTemp[PageTemp.find(baratin)+len(baratin):len(PageTemp)]
		summary = summary + u', {{clé de tri|}} inutile'
	if PageTemp.find(u'{{clé de tri|}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|}}')] + PageTemp[PageTemp.find(u'{{clé de tri|}}')+len(u'{{clé de tri|}}'):len(PageTemp)]
		summary = summary + u', {{clé de tri|}} inutile'
	if PageTemp.find(u'{{clé de tri}}') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri}}')] + PageTemp[PageTemp.find(u'{{clé de tri}}')+len(u'{{clé de tri}}'):len(PageTemp)]
		summary = summary + u', {{clé de tri}} inutile'
	if PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}') != -1 and PageTemp.find(u'{{-verb-pr-|fr}}') == -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')] + PageTemp[PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')+len(u'{{clé de tri|' + PageHS.lower() + u'}}'):len(PageTemp)]
		summary = summary + u', {{clé de tri}} inutile'
	if PageTemp.find(u'{{clé de tri') == -1 and PageTemp.find(u'{{clef de tri') == -1:
		ClePage = CleDeTri(PageHS)
		if ClePage != u'' and ClePage != PageHS:
			'''if PageTemp.find(u'[[Catégorie:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Catégorie:'):len(PageTemp)]
			elif PageTemp.find(u'[[Category:') != -1:
				PageTemp = PageTemp[0:PageTemp.find(u'[[Category:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Category:'):len(PageTemp)]
			else:	# Avant interwikis
				"""if PageTemp.find(u'[[en:') or PageTemp.find(u'[[ko:') or PageTemp.find(u'[[vi:') != -1:
						regex = ur'\[\[(.+?)(?:\]\]\n)'		# copié de pywikipedia mais pas infaillible, d'où le [[en:...
						if re.compile(regex).search(PageTemp):
							try:
								PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[re.search(regex,PageTemp).end():len(PageTemp)]
							except:
								print u'pb regex interwiki'
						else:
						PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'
				else:"""PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'''
			if PageTemp.rfind(u'\n\n[[') != -1:
				PageTemp2 = PageTemp[PageTemp.rfind(u'\n\n[['):len(PageTemp)]
				if PageTemp2[4:5] == u':' or PageTemp2[5:6] == u':':
					PageTemp = PageTemp[0:PageTemp.rfind(u'\n\n[[')] + u'\n\n{{clé de tri|' + ClePage + u'}}' + PageTemp[PageTemp.rfind(u'\n\n[['):len(PageTemp)]
				else:
					PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'
			else:
				PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'
						
	else:
		if PageTemp.find(u'{{clé de tri') != -1:
			PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|'):len(PageTemp)]
				ClePage = PageTemp2[0:PageTemp2.find(u'}}')]
		elif PageTemp.find(u'{{clef de tri') != -1:
			PageTemp2 = PageTemp[PageTemp.find(u'{{clef de tri|')+len(u'{{clef de tri|'):len(PageTemp)]
			ClePage = PageTemp2[0:PageTemp2.find(u'}}')]		
		if CleDeTri(PageHS) != ClePage:
			if  and (PageTemp.find(u'{{langue|fr}}') != -1 or PageTemp.find(u'{{langue|eo}}') != -1 or PageTemp.find(u'{{langue|en}}') != -1 or PageTemp.find(u'{{langue|es}}') != -1 or PageTemp.find(u'{{langue|de}}') != -1 or PageTemp.find(u'{{langue|pt}}') != -1 or PageTemp.find(u'{{langue|it}}') != -1):
			print CleDeTri(PageHS)
			print ClePage
			summary = summary + u', {{clé de tri}} corrigée'
					PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleDeTri(PageHS) + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}'):len(PageTemp)]
			else:
				print (u'Fausse cle de tri')
				#print (PageHS.encode(config.console_encoding, 'replace'))
				#print (ClePage.encode(config.console_encoding, 'replace'))
		
	# Remplacements consensuels
	while PageTemp.find(u'&#32;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#32;')] + u'&nbsp;' + PageTemp[PageTemp.find(u'&#32;')+len(u'&#32;'):len(PageTemp)]
	while PageTemp.find(u'&#224;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#224;')] + u'à' + PageTemp[PageTemp.find(u'&#224;')+len(u'&#224;'):len(PageTemp)]
(contracted; show full)
					PageTemp = PageTemp[0:PageTemp.find(u'\n{{colonnes|')] + u'\n{{(}}' + PageTemp[PageTemp.find(u'\n{{colonnes|')+len(u'\n{{colonnes|'):len(PageTemp)]
			else: break
		while PageTemp.find(u'}}1=') != -1:
			PageTemp = PageTemp[0:PageTemp.find(u'}}1=')] + PageTemp[PageTemp.find(u'}}1=')+len(u'}}1='):len(PageTemp)]
		
	while PageTemp.find(u'  ') != -1
 and PageTemp.find(u'  ') != PageTemp.find(u'<!--  ')+4:
		PageTemp = PageTemp[0:PageTemp.find(u'  ')] + PageTemp[PageTemp.find(u'  ')+1:len(PageTemp)]
	while PageTemp.find(u'\n\n\n') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n\n\n')] + PageTemp[PageTemp.find(u'\n\n\n')+1:len(PageTemp)]
	while PageTemp.find(u'\n #*') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n #*')+1] + PageTemp[PageTemp.find(u'\n #*')+2:len(PageTemp)]
	while PageTemp.find(u'\n #:') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'\n #:')+1] + PageTemp[PageTemp.find(u'\n #:')+2:len(PageTemp)]
	PageEnd = u''
	while PageTemp.find(u'\n#:') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'\n#:')+2]
		if PageEnd.rfind(u'{{langue|') == PageEnd.rfind(u'{{langue|fr}}'):
			PageTemp = u'*' + PageTemp[PageTemp.find(u'\n#:')+len(u'\n#:'):len(PageTemp)]
		else:
			PageTemp = u':' + PageTemp[PageTemp.find(u'\n#:')+len(u'\n#:'):len(PageTemp)]
	PageTemp = PageEnd + PageTemp
	PageEnd = u''
	'''while PageTemp.find(u'#*') != -1 and PageTemp.find(u'#*') != PageTemp.find(u'#*\'\'') and PageTemp.find(u'#*') != PageTemp.find(u'#* \'\''):
		PageTemp = PageTemp[0:PageTemp.find(u'#*')+2] + u'\'\'' + PageTemp[PageTemp.find(u'#*')+2:len(PageTemp)]'''
	# Retrait des espaces intégrés au modèle
	while PageTemp.find(u'|pinv= ') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'|pinv= ')+len(u'|pinv=')] + PageTemp[PageTemp.find(u'|pinv= ')+len(u'|pinv= '):len(PageTemp)]
	while PageTemp.find(u'|pinv=. ') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'|pinv=. ')+len(u'|pinv=.')] + PageTemp[PageTemp.find(u'|pinv=. ')+len(u'|pinv=. '):len(PageTemp)]
	while PageTemp.find(u'|pinv=&nbsp;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'|pinv=&nbsp;')+len(u'|pinv=')] + PageTemp[PageTemp.find(u'|pinv=&nbsp;')+len(u'|pinv=&nbsp;'):len(PageTemp)]
		
	while PageTemp.find(u'[[Annexe:Couleurs en français]]') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'[[Annexe:Couleurs en français]]')] + u'{{Thésaurus|fr|couleur}}' + PageTemp[PageTemp.find(u'[[Annexe:Couleurs en français]]')+len(u'[[Annexe:Couleurs en français]]'):len(PageTemp)]
	while PageTemp.find(u'{{Annexe|Couleurs en français}}') != -1:
(contracted; show full)
	'''while PageTemp.find(u'[http://') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'[http://')+1] + PageTemp[PageTemp.find(u'[http://')+6:len(PageTemp)]	
	while PageTemp.find(u'[https://') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'[https://')+1] + PageTemp[PageTemp.find(u'[https://')+7:len(PageTemp)]'''
	while PageTemp.find(u'{{dét|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{dét|')
] + u'déterminé' + PageTemp[PageTemp.find(u'{{dét|')+len(u'{{dét|'):len(PageTemp)]
	while PageTemp.find(u'{{dén|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{dén|')] + u'dénombrable' + PageTemp[PageTemp.find(u'{{dén|')+len(u'{{dén|'):len(PageTemp)]+2] + u'déterminé' + PageTemp[PageTemp.find(u'{{dét|')+len(u'{{dét'):len(PageTemp)]
	while PageTemp.find(u'{{dén|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'{{dén|')+2] + u'dénombrable' + PageTemp[PageTemp.find(u'{{dén|')+len(u'{{dén'):len(PageTemp)]
	while PageTemp.find(u'{{-aux-|') != -1:
		PageTemp2 = PageTemp[PageTemp.find(u'{{-aux-|'):len(PageTemp)] 
		if PageTemp2.find(u'\'\'\'') != -1:
			PageTemp3 = PageTemp2[PageTemp2.find(u'\'\'\'')+3:len(PageTemp2)] 
			if PageTemp3.find(u'\'\'\'') != -1:
				PageTemp4 = PageTemp3[PageTemp3.find(u'\'\'\'')+3:len(PageTemp3)]
				if PageTemp4.find('{{pron|') != -1 and PageTemp4.find('{{pron|') < PageTemp4.find('\n'):
					PageTemp5 = PageTemp4[PageTemp4.find(u'{{pron|'):len(PageTemp4)]
					PageTemp = PageTemp[0:PageTemp.find(u'{{-aux-|')+PageTemp2.find(u'\'\'\'')+3+PageTemp3.find(u'\'\'\'')+3+PageTemp4.find(u'{{pron|')+PageTemp5.find(u'}}')+2] + u' {{auxiliaire}}' + PageTemp[PageTemp.find(u'{{-aux-|')+PageTemp2.find(u'\'\'\'')+3+PageTemp3.find(u'\'\'\'')+3+PageTemp4.find(u'{{pron|')+PageTemp5.find(u'}}')+2:len(PageTemp)]
				else:
					PageTemp = PageTemp[0:PageTemp.find(u'{{-aux-|')+PageTemp2.find(u'\'\'\'')+3+PageTemp3.find(u'\'\'\'')+3] + u' {{auxiliaire}}' + PageTemp[PageTemp.find(u'{{-aux-|')+PageTemp2.find(u'\'\'\'')+3+PageTemp3.find(u'\'\'\'')+3:len(PageTemp)]
		PageTemp = PageTemp[0:PageTemp.find(u'{{-aux-|')+2] + u'-verbe-' + PageTemp[PageTemp.find(u'{{-aux-|')+len(u'{{-aux-'):len(PageTemp)]
		
	
	# Classement des traductions
	PageEnd = u''
	while PageTemp.find(u'{{T|') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{T|')]
		PageTemp = PageTemp[PageTemp.find(u'{{T|'):len(PageTemp)]
		# Rangement de la ligne de la traduction par ordre alphabétique de la langue dans PageEnd
(contracted; show full)			PageTemp = u''
		#print(PageEnd.encode(config.console_encoding, 'replace'))
		#print(PageTemp.encode(config.console_encoding, 'replace'))
	PageTemp = PageEnd + PageTemp
	PageEnd = u''"""

	# Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres)
	if socket.gethostname() != 
"willow"'willow' and socket.gethostname() != 'aberge':
		if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and PageTemp.find(u'{{langue|fr}}') != -1 and len(PageHS) < 7: # sinon trop long ( > 1 h par page)
			print socket.gethostname()
			anagrammes = anagram(PageHS)
			ListeAnagrammes = u''
			for anagramme in anagrammes:
				if anagramme != PageHS:
					pageAnagr = Page(site,anagramme)
					#print anagramme.encode(config.console_encoding, 'replace')
					if pageAnagr.exists():
						if pageAnagr.namespace() !=0 and anagramme != u'Utilisateur:JackBot/test':
(contracted; show full)								PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[re.search(regex,PageTemp).end():len(PageTemp)]
							except:
								print u'pb regex interwiki'
						else:
							PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes
					else:
						PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes

				if PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')] + PageTemp[PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')+len(u'<!-- pas d’{{-anagr-}} -->\n'):len(PageTemp)]
				
	# Remplacement des codes langues
	while PageTemp.find(u'=prv=') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'=prv=')] + u'langue|oc' + PageTemp[PageTemp.find(u'=prv=')+len(u'=prv='):len(PageTemp)]
	AncienModele = range(1, 13)
	NouveauModele = range(1, 13)
	AncienModele[1] = u'ko-hanja'
	NouveauModele[1] = u'ko-Hani'
(contracted; show full)r 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 + "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'Ǽ':
			PageT = PageT + "ae"
			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 + "b"
			key = "yes"
(contracted; show full)
TraitementLiens = crawlerLink(u'Modèle:1ergroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:2egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:3egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:trad',u'')
TraitementLiens = crawlerLink(u'Modèle:-',u'')
TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'')

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