Usuari:PereBot/robot arregla catalogue of life
Aparença
# -*- coding: utf-8 -*-
# Robot intenta arreglar uns errors de bot en posar la plantilla catalogue of life.
# De pas, lista els ordena generats per bot.
import sys
sys.path.append('C:\pywikipedia')
import wikipedia,catlib,re,pagegenerators,urllib2,string
# Actualitza informe
def putinforme(pag,text0,afegit,sumari,signa=False):
contingut=text0+afegit
if signa:
contingut=contingut+u"\n--~~~~\n"
try:
pag.put(contingut,sumari)
except articleexists:
res=pag.get()
pag.put(contingut,sumari)
return
# Endreça una mica les plantilles.
def poleix(text):
text=text.replace(u"{{Projectes germans}}",u"{{Commonscat}}")
text=re.sub(u"\[\[ ?[Cc]ategoria ?\:",u"[[Categoria:",text)
if re.search(u"\{\{ ?[Pp]rojectes germans\|commonscat=.*\}\}",text):
if not re.search(u"\{\{ ?[Pp]rojectes germans\|commonscat=.*\|.*=.*\}\}",text):
text=re.sub(u"\{\{ ?[Pp]rojectes germans\|commonscat=",u"{{Commonscat|",text)
for i in range(1,10):
text=text.replace(u"\n\n{{Autoritat}}",u"\n{{Autoritat}}")
text=text.replace(u"\n\n{{Commonscat",u"\n{{Commonscat")
text=text.replace(u"\n\n{{Projectes germans",u"\n{{Projectes germans")
text=re.sub(u"(\{\{ORDENA\:.*\}\}|\{\{Enllaç A[BD]\|.*\}\})\n*(\{\{Bases de dades taxonòmiques\}\}|\{\{Autoritat\}\})",ur"\2\n\1",text)
text=re.sub(u"(\[\[ ?[Cc]ategoria ?\:.*\|?.*?\]\])\n*(\{\{Bases de dades taxonòmiques\}\}|\{\{Autoritat\}\})",ur"\2\n\1",text)
text=text.replace(u"\n\n\n{{ORDENA",u"\n\n{{ORDENA")
text=text.replace(u"{{Autoritat}}\n{{ORDENA",u"{{Autoritat}}\n\n{{ORDENA")
text=text.replace(u"{{Autoritat}}\n[[Categoria:",u"{{Autoritat}}\n\n[[Categoria:")
text=text.replace(u"{{Bases de dades taxonòmiques}}\n{{ORDENA",u"{{Bases de dades taxonòmiques}}\n\n{{ORDENA")
text=text.replace(u"{{Bases de dades taxonòmiques}}\n[[Categoria:",u"{{Bases de dades taxonòmiques}}\n\n[[Categoria:")
return text
def main():
plantilla=wikipedia.Page(site,u"Plantilla:Catalogue of life")
paginforme=wikipedia.Page(site,u"Usuari:PereBot/ordena posat per bot")
capinforme=u"\n==Pàgines amb ORDENA posat per bot==\n\n"
cosinforme=u""
if paginforme.exists():
textinforme0=paginforme.get()
else:
textinforme0=u""
cblocinforme=0
sumarinforme=u"Robot llistant pàgines amb <!--ORDENA generat per bot-->"
comptador=0
comptaedicions=0
for pag in pagegenerators.PreloadingGenerator(pagegenerators.ReferringPageGenerator(plantilla,onlyTemplateInclusion=True)):
try:
textvell=pag.get()
except wikipedia.IsRedirectPage:
print pag,u"és una redirecció"
continue
comptador=comptador+1
print comptador,pag
textnou=textvell
textnou=textnou.replace(u"{{en}}</ref>}} {{en}}</ref>",u"{{en}}</ref>")
if re.search(u"<ref>\{\{Catalogue of life\|.*\|.* ''<ref>",textnou):
trossoscat=re.findall(u"<ref>\{\{Catalogue of life\|.*\|.* ''<ref>",textnou)
print trossoscat
for troscat in trossoscat:
trosnou=troscat.replace(u" ''<ref>",u"}}</ref><ref>")
textnou=textnou.replace(troscat,trosnou)
if re.search(u"<ref>\{\{Catalogue of life\|.*\|.*\}\}<ref>",textnou):
trossoscat=re.findall(u"<ref>\{\{Catalogue of life\|.*\|.*\}\}<ref>",textnou)
print trossoscat
for troscat in trossoscat:
trosnou=troscat.replace(u"}}<ref>",u"}}</ref><ref>")
textnou=textnou.replace(troscat,trosnou)
if textnou<>textvell:
textnou=poleix(textnou)
pag.put(textnou,u"Robot arreglant la plantilla {{Catalogue of life}}")
comptaedicions=comptaedicions+1
print comptaedicions,u" edicions"
# Informe ORDENA
if u"<!--ORDENA generat per bot-->" in textvell:
ordena=re.findall(u"\{\{ORDENA:.*\}\}",textvell)[0]
print cblocinforme,ordena
liniainf=u"#[["+pag.title()+u"]] <nowiki>"+ordena+u"</nowiki>\n"
cosinforme=cosinforme+liniainf
cblocinforme=cblocinforme+1
if cblocinforme>200:
putinforme(paginforme,textinforme0,capinforme+cosinforme,sumarinforme)
cblocinforme=0
# if comptaedicions>10:
# break
if cosinforme!=u"":
putinforme(paginforme,textinforme0,capinforme+cosinforme,sumarinforme,signa=True)
return
#El programa comença aquí
try:
site=wikipedia.getSite('ca')
main()
finally:
wikipedia.stopme()