Usuari:PereBot/robot articles sense categoria
Aparença
# -*- coding: utf-8 -*-
# Programa que busca en una categoria els articles que no tinguin categoria.
# Té sentit només en categories posades per plantilles.
import sys
sys.path.append('C:\pywikipedia')
import wikipedia,catlib,pagegenerators
import re
# Retorna les categories i articles d'una categoria, subcategories incloses.
# No torna a mirar les categories que ja ha mirat.
# Filtra pels noms de les categories fent servir una expressió regular.
def miracatfiltre(cat,catprevies=[],filtre=u""):
articles=cat.articlesList(recurse=False)
categories=cat.subcategoriesList(recurse=False)
for scat in categories:
wikipedia.output(scat)
# wikipedia.output(u"Títol",scat.title())
if scat not in catprevies:
catprevies.append(scat)
if filtre==u"":
nopassa=False
print u"Filtre desactivat"
else:
nopassa=re.search(filtre,scat.title())
if not nopassa:
wikipedia.output(u"Sí que es llegeix %s" % scat)
noucats,nouarts=miracatfiltre(scat,catprevies+categories,filtre)
categories=categories+noucats
articles=articles+nouarts
else:
wikipedia.output(u"No es llegeix %s" % scat)
else:
wikipedia.output(u"Aquesta ja la tinc vista")
articles=catlib.unique(articles)
return categories, articles
# El programa comença aquí
def principal():
catbuscar=u"Persones vives" #Posar aquí la categoria que es revisarà
#filtrecats=u"Categoria:.*(?:que necessiten una (?:foto|imatge)|sense registre fòssil)" # Filtre regexp pels noms de les categories excloses (posar =u"" per no excloure res)
#categoria = catlib.Category(site,catbuscar)
#cats, asc = miracatfiltre(categoria,filtre=filtrecats)
asc=pagegenerators.PreloadingGenerator(pagegenerators.CategorizedPageGenerator(catlib.Category(site,catbuscar)),pageNumber=120)
#comptacategoria=len(asc)
#asc=asc[0:-900] #Per fer només un grapat d'articles a la vegada. Per revisar la categoria sencera poseu # al davant de la línia.
#comptapotencial=len(asc)
comptaarticles=comptanoprincipal=comptador=0
resum=u""
for pag in asc:
comptador+=1
print comptador, pag
if pag.exists(0) and not pag.isRedirectPage():
text=pag.get()
if pag.namespace()==0:
if not re.search(u"\[\[ ?[Cc]ategoria ?:",text):
comptaarticles+=1
wikipedia.output(u"{} no té categories" % pag.title())
resum+="#{}\n".format(pag.title(asLink=True))
else:
print u"No és a l'espai principal"
comptanoprincipal+=1
if resum==u"":
resum=u"Totes les pàgines tenen categories\n\n"
paginforme=wikipedia.Page(site,"usuari:PereBot/Articles sense categories") #Pàgina on voleu l'informe. Ha d'existir.
informe=u"\n=={}==\n\n".format(catbuscar)
informe+=u"Articles sense categoria a la [[:categoria:{}]]:\n\n{}".format(catbuscar, resum)
#informe+=u"La categoria (filtrada) té {} articles\n\n".format(comptacategoria)
#informe+=u"No s'hi ha inclòs les subcategories amb títols que compleixen l'expressió regular: \n\n". format(filtrecats)
informe+=u"Revisats {} articles\n\n".format(comptador)
informe+=u"Trobats {} articles sense categoria\n\n".format(comptaarticles)
informe+=u"Hi ha {} pàgines que no són a l'espai principal\n\n".format(comptanoprincipal)
informe+=u"\n--~~~~"
wikipedia.output(informe)
paginforme.put(paginforme.get()+informe,catbuscar)
if __name__ == "__main__":
site=wikipedia.getSite("ca")
principal()
wikipedia.stopme()