Usuari:PereBot/robot espècies curtes
Aparença
# -*- coding: utf-8 -*-
# Llista espècies curtes
import sys
sys.path.append('C:\pywikipedia')
sys.path.append('C:\mwparserfromhell-0.3.3')
import mwparserfromhell
import wikipedia,catlib,pagegenerators,re
# 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 wikipedia.articleexists:
res=pag.get()
pag.put(contingut,sumari)
return
# Ordena diccionari i el transforma en cadena
def dicallista(dicc):
claus=dicc.keys()
claus.sort()
cadena=u""
for clau in claus:
cadena=cadena+dicc[clau]
return cadena
# Neteja un article, compta els caràcters i mira si és una espècie.
def comptanet(text):
text0=text
#print u"longitud total",len(text)
text=wikipedia.removeCategoryLinks(text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"\{\{ ?([Tt]ítol cursiva|[Rr]eferències) ?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#print u"longitud",len(text)
#print text
trossos=re.split(u"== ?Referències ?==",text)
text=trossos[0]
#print len(trossos)
trossos=re.split(u"== ?Bibliograf[íi]a ?==",text)
text=trossos[0]
#print len(trossos)
trossos=re.split(u"== ?Enllaços [Ee]xterns ?==",text)
text=trossos[0]
#print len(trossos)
text=re.sub(u"==+.*?==+",u"",text)
#print u"longitud",len(text)
#print text
text=re.sub(u"\[\[ ?[Ff]itxer ?:.*?\|",u"\|",text)
#print u"longitud",len(text)
#print text
text=re.sub(u"\|(thumb|right|left|[0-9]+px)",u"",text)
#print u"longitud",len(text)
#print text
#text=text.replace(u"gènere (biologia)|gènere",u"gènere")
#text=text.replace(u"família (biologia)|família",u"família")
#text=text.replace(u"ordre (biologia)|família",u"ordre")
#text=re.sub(u"[\[\[\]\]]",u"",text)
#print u"longitud",len(text)
#print text
text=re.sub(u"<ref name=.{1,12}/>",u"",text)
#print u"longitud",len(text),u"<ref name=.{1,12}/>"
#print text
#text=re.sub(u"\{\{ ?[Mm]ida ?\|.*?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"\{\{ ?[Tt]axobox colour ?\|.*?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"\{\{ ?CN ?\| ?data.*?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"\{\{ ?([Cc]lade|[Tt]axobox_norank_entry|[Ee]ntrada de taxocaixa sense rang) ?\|.*?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"\{\{(.*?\|)*?.+?\}\}",u"",text)
#print u"longitud",len(text)
#print text
#print u"longitud",len(text)
#print text
text=re.sub(u"<ref name=.*?>.*?</ref>",u"",text)
#print u"longitud",len(text)
#print text
text=re.sub(u"<ref>.*?</ref>",u"",text)
codi=mwparserfromhell.parse(text)
text=codi.strip_code(normalize=True,collapse=True)
text=text.replace(u"\n",u"") #Elimina salts de línia
#print u"longitud",len(text)
#print text
#print u"longitud",len(text)
#print text
#text=re.sub(u"'''",u"",text)
#print u"longitud",len(text)
#print text
#text=re.sub(u"''",u"",text)
#print u"longitud final",len(text)
#print text
#text=re.sub(u"<references />",u"",text)
#print u"longitud final",len(text)
#print text
text=re.sub(u"<!--ORDENA generat per bot-->",u"",text)
text=re.sub(u"\{\{(en|es|ca|fr|eu|cn|de|it|Autoritat|Bases de dades taxonòmiques|CN)\}\}",u"",text)
text=re.sub(u"\{\{.*?\}\}",u"",text)
#print u"longitud final",len(text)
#print text
if re.search(u"\|\n* *binomial *\=",text0) or u"és una [[espècie]] d" in text0:
especie=True
print u"És espècie"
else:
especie=False
print u"No és espècie"
return len(text),especie,text
#El programa comença aquí
site=wikipedia.getSite('ca')
#catbuscar=u"Vulpes" #Posar aquí la categoria que es revisarà
#asc=pagegenerators.PreloadingGenerator(pagegenerators.CategorizedPageGenerator(catlib.Category(site,catbuscar),recurse=True))
taxocaixes=[u"Plantilla:Taxocaixa",u"Plantilla:Taxocaixa amfibi",u"Plantilla:Taxocaixa animal",u"Plantilla:Taxocaixa arqueobacteri",u"Plantilla:Taxocaixa artròpode",u"Plantilla:Taxocaixa dinosaure",u"Plantilla:Taxocaixa eucariota",u"Plantilla:Taxocaixa fong",u"Plantilla:Taxocaixa mamífer",u"Plantilla:Taxocaixa mol·lusc",u"Plantilla:Taxocaixa ocell",u"Plantilla:Taxocaixa peix",u"Plantilla:Taxocaixa planta",u"Plantilla:Taxocaixa rèptil",u"Plantilla:Taxocaixa sinàpsid",u"Plantilla:Taxocaixa virus",]
vistos=[]
comptador=0
comptabloc=800
# Inicialitza informe
paginforme=wikipedia.Page(site,u"Usuari:PereBot/tàxons per longitud")
if paginforme.exists():
textinforme0=paginforme.get()
else:
textinforme0=u""
sumarinforme=u"Robot buscant articles curts d'espècies"
#catnom=u"[[:categoria:"+catbuscar+"]]"
catnom=u"Taxocaixes" #u"[["+titplantbuscar+"]]"
capinforme=u"\n\n=="+catnom+"==\n"
capinformeesp=u"\n===Espècies===\n\n"
capinformeno=u"\n===Altres tàxons===\n\n"
cosinforme=u""
dicesp={}
dicno={}
if paginforme.exists():
textinforme0=paginforme.get()
else:
textinforme0=u""
for titplantbuscar in taxocaixes:
plantbuscar=wikipedia.Page(site,titplantbuscar)
asc=pagegenerators.PreloadingGenerator(pagegenerators.ReferringPageGenerator(plantbuscar,withTemplateInclusion=True,onlyTemplateInclusion=True))
for article in asc:
if article in vistos:
print article,u"ja vist"
continue
elif article.namespace()!=0:
continue
else:
vistos.append(article)
comptador=comptador+1
comptabloc=comptabloc+1
print comptador,article
textvell=article.get()
llarg,esp,textnou=comptanet(textvell)
linia=u"#[["+article.title()+u"]] "+'{:}'.format(llarg)+u"\n"
print llarg,esp
#print textnou
if esp:
dicesp[llarg]=dicesp.setdefault(llarg,u"")+linia
else:
dicno[llarg]=dicno.setdefault(llarg,u"")+linia
if comptabloc>1000:
#print dicesp
llistaesp=dicallista(dicesp)
#print dicno
llistano=dicallista(dicno)
contingut=capinforme+capinformeesp+llistaesp+capinformeno+llistano
putinforme(paginforme,textinforme0,contingut,sumarinforme)
comptabloc=0
#print dicesp
llistaesp=dicallista(dicesp)
#print dicno
llistano=dicallista(dicno)
contingut=capinforme+capinformeesp+llistaesp+capinformeno+llistano
putinforme(paginforme,textinforme0,contingut,sumarinforme,signa=True)
comptabloc=0
wikipedia.stopme()