Difference between revisions 10718435 and 10776165 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[127] = u'-hist-'
Modele[128] = u'-holo-'
Modele[129] = u'-homo-'
Modele[130] = u'-hyper-'
Modele[131] = u'-hypo-'
Modele[132] = u'-image-'
Modele[133] = u'-méro-'

#Modele[134] = u'-note-'
Modele[135] = u'-var-ortho-'
Modele[136] = u'-ortho-arch-'
Modele[137] = u'-paro-'
Modele[138] = u'-vidéo-'
Modele[139] = u'-q-syn-'
Modele[140] = u'-réf-'
Modele[141] = u'-sino-dico-'
(contracted; show full)
	while PageTemp.find(u'&#231;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#231;')] + u'ç' + PageTemp[PageTemp.find(u'&#231;')+len(u'&#231;'):len(PageTemp)]
	while PageTemp.find(u'&#700;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#700;')] + u'ʼ' + PageTemp[PageTemp.find(u'&#700;')+len(u'&#700;'):len(PageTemp)]

	while PageTemp.find(u'<sup/>') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'<sup/>')] + u'</sup>' + PageTemp[PageTemp.find(u'<sup/>')+len(u'<sup/>'):len(PageTemp)]			
	while re.compile('{{T\|.*\n\n\*[ ]*{{T\|').search(PageTemp):
		i1 = re.search(u'{{T\|.*\n\n\*[ ]*{{T\|',PageTemp).end()
		PageTemp = PageTemp[:i1][0:PageTemp[:i1].rfind(u'\n')-1] + PageTemp[:i1][PageTemp[:i1].rfind(u'\n'):len(PageTemp[:i1])] + PageTemp[i1:]
	while PageTemp.find(u'&#700;') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'&#700;')] + u'ʼ' + PageTemp[PageTemp.find(u'&#700;')+len(u'&#700;'):len(PageTemp)]

	while PageTemp.find(u'— {{source|') != -1:
		PageTemp = PageTemp[0:PageTemp.find(u'— {{source|')] + PageTemp[PageTemp.find(u'— {{source|')+2:len(PageTemp)]
	while PageTemp.find(u'\n#*') != -1 and PageTemp.find(u'—') != -1:
		PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'\n#*')+len(u'\n#*')]
		PageTemp =  PageTemp[PageTemp.find(u'\n#*')+len(u'\n#*'):len(PageTemp)]
(contracted; show full)		PagesHS.close()

# Traitement d'une catégorie
def crawlerCat(category,recursif,apres):
	modifier = u'False'
	cat = catlib.Category(site, category)
	pages = cat.articlesList(False)
	for Page in pagegenerators.PreloadingGenerator(pages,100
0):
		if not apres or apres == u'' or modifier == u'True':
			modification(Page.title()) #crawlerLink(Page.title())
		elif Page.title() == apres:
			modifier = u'True'
	if recursif == True:
		subcat = cat.subcategories(recurse = True)
		for subcategory in subcat:
			pages = subcategory.articlesList(False)
			for Page in pagegenerators.PreloadingGenerator(pages,1000):
				modification(Page.title())

# Traitement des pages liées
def crawlerLink(pagename,apres):
	modifier = u'False'
	#pagename = unicode(arg[len('-links:'):], 'utf-8')
	page = wikipedia.Page(site, pagename)
	gen = pagegenerators.ReferringPageGenerator(page)
	#gen =  pagegenerators.NamespaceFilterPageGenerator(gen, namespaces)
	for Page in pagegenerators.PreloadingGenerator(gen,1000):
		#print(Page.title().encode(config.console_encoding, 'replace'))
		if not apres or apres == u'' or modifier == u'True':
			modification(Page.title()) #crawlerLink(Page.title())
		elif Page.title() == apres:
			modifier = u'True'

# Traitement d'une recherche
def crawlerSearch(pagename):
	gen = pagegenerators.SearchPageGenerator(pagename, namespaces = "0")
	for Page in pagegenerators.PreloadingGenerator(gen,1000):
		modification(Page.title())

# Traitement des modifications récentes
def crawlerRC():
	gen = pagegenerators.RecentchangesPageGenerator()
	for Page in pagegenerators.PreloadingGenerator(gen,1000):
		modification(Page.title())

# Traitement des modifications d'un compte
def crawlerUser(username):
	gen = pagegenerators.UserContributionsGenerator(username)
	for Page in pagegenerators.PreloadingGenerator(gen,1000):
		modification(Page.title())

# Traitement de toutes les pages du site
def crawlerAll(start):
	gen = pagegenerators.AllpagesPageGenerator(start,namespace=0,includeredirects=False)
	for Page in pagegenerators.PreloadingGenerator(gen,1000):
		#print (Page.title().encode(config.console_encoding, 'replace'))
		modification(Page.title())
		
def trim(s):
    return s.strip(" \t\n\r\0\x0B")

# Permet à tout le monde de stopper le bot en lui écrivant
def ArretDUrgence():
        arrettitle = ''.join(u'Discussion utilisateur:' + mynick)
        arretpage = pywikibot.Page(pywikibot.getSite(), arrettitle)
        gen = iter([arretpage])
        arret = arretpage.get()
        if arret != u"{{/Stop}}":
			pywikibot.output(u"\n*** \03{lightyellow}Arrêt d'urgence demandé\03{default} ***")
			exit(0)

def sauvegarde(PageCourante, Contenu):
	ArretDUrgence()
	try:
		result = "ok"
		#print(Contenu.encode(config.console_encoding, 'replace')[0:4000])
		#result = raw_input("Sauvegarder ? (o/n)")
		if result != "n" and result != "no" and result != "non": PageCourante.put(Contenu, summary)
	except wikipedia.NoPage:
		print "No page"
		return
	except wikipedia.IsRedirectPage:
		print "Redirect page"
		return
	except wikipedia.LockedPage:
		print "Protected page"
		return
	except pywikibot.EditConflict:
		print "Edit conflict"
		return

# Lancement
TraitementCategoryie = crawlerCat(u'Catégorie:Wiktionnaire:Codes langue manquants',True,u'')
TraitementCategoryie = crawlerCat(u'Catégorie:Wiktionnaire:Flexions à vérifier',True,u'')
TraitementLiens = crawlerLink(u'Modèle:1ergroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:2egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:3egroupe',u'')
TraitementLiens = crawlerLink(u'Modèle:trad',u'')
TraitementCategoryie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False)
'''
TraitementLiens = crawlerLink(u'Modèle:(',u'bugle')
TraitementLiens = crawlerLink(u'Modèle:-flex-nom-')
TraitementLiens = crawlerLink(u'Modèle:clé de tri')

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