ZaranBot
Inscrit depuis le 23 juin 2010
Bot géré par Zaran. Encore un phase de dressage (je commence à regarder les possibilités offertes par pywikipediabot). A priori, j’envisage pour ce bot des actions ponctuelles pour des manipulations à l’échelle d'un livre, telle que le renommage des pages, ou l’import d'un livre présent sur un autre site. Je demanderai le statut de bot quand j’aurai fini mon dressage.
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Script to transclude pages into main namespace.
Read
"""
import wikipedia as pywikibot
import pagegenerators
class TranscludeBot :
msg = {
'fr' : u'Bot : transclusion',
}
def __init__(self,title,index,site,lastPage,cats,references,test) :
self.site = pywikibot.getSite()
self.msg = pywikibot.translate(self.site, self.msg)
self.gen = pagegenerators.LinkedPageGenerator(pywikibot.Page(self.site,title))
self.lastPage = lastPage
self.cats = cats
self.index = index
self.references = references
self.test = test
def run(self) :
pageListWithNumbers=[]
previous = None
for page in self.gen :
if page.namespace()== 104 :
number = int((page.title().rpartition('/'))[2])
if previous <> None :
current.append(number)
previous.append(number-1)
pageListWithNumbers.append(previous)
previous=current
else :
previous=current
current.append(number)
else :
current = [page]
current.append(self.lastPage)
pageListWithNumbers.append(current)
for item in pageListWithNumbers :
text = u"<pages header=1 index=\"{0}\" from={1} to={2}>".format(self.index,item[1],item[2])
if self.references :
text+= '\n<references/>'
if self.cats :
text+='\n'
for cat in self.cats :
text+= u"\n[[Catégorie:{0}]]".format(cat)
if self.test :
pywikibot.output(u'=======================================\n'+
item[0].title()+'\n'+
u'---------------------------------------\n'+
text)
else :
page = item[0]
page.put(text,self.msg,minorEdit=False)
def main():
'''
Parse command line, instantiate the bot and run it
'''
site = pywikibot.getSite()
catList= []
test = False
references = False
for arg in pywikibot.handleArgs():
if arg.startswith('-title') :
title = arg[7:]
if not title :
pywikibot.output("You must provide a page with links")
return False
if not pywikibot.Page(site,title).exists() :
pywikibot.output("The title page you provided doesn't exist")
return False
elif arg.startswith('-index') :
index= arg[7:]
if not index :
pywikibot.output("You must provide a index name")
return False
if not pywikibot.Page(site,'Livre:'+index).exists() :
pywikibot.output("The index you provided doesn't exist")
return False
elif arg.startswith('-last') :
last= int(arg[6:])
if not last :
pywikibot.output('You must provide a last page')
return False
elif arg.startswith('-cats') :
cats = arg[6:]
catList = cats.split(':')
elif arg.startswith('-test') :
test = True
elif arg.startswith('-references') :
references = True
bot = TranscludeBot(title,index,site,last,catList,references,test)
bot.run()
if __name__ == "__main__":
try:
main()
finally:
pywikibot.stopme()