# -*- coding: utf-8 -*-
# Robot que canvia un text per un altre, dins dels articles d'una categoria
import sys
sys.path.append('C:\pywikipedia')
import wikipedia,catlib
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:
print scat
# print 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:
print u"Sí que es llegeix", scat
noucats,nouarts=miracatfiltre(scat,catprevies+categories,filtre)
categories=categories+noucats
articles=articles+nouarts
else:
print u"No es llegeix", scat
else:
print u"Aquesta ja la tinc vista"
categories=catlib.unique(categories)
articles=catlib.unique(articles)
print u"Llegits",len(categories),u"categories i",len(articles),u"articles a",cat
return categories, articles
# El programa comença aquí.
site=wikipedia.getSite('eu') #Canviar aquí per canviar de Viquipèdia
catbuscar=u"Baix Llobregat" #Posar aquí la categoria que es revisarà
categoria = catlib.Category(site,catbuscar)
filtrecats=u"" # categories grans que ja estan fetes i no cal repetir
mirasubcategories=True #False per no mirar subcategories; True per mirar-les
if mirasubcategories:
cats, asc = miracatfiltre(categoria,filtre=filtrecats)
# asc=cats+asc
else:
asc=categoria.articlesList(recurse=False)
comptapotencial=len(asc)
print "Articles a la categoria",comptapotencial
#l=l[:2]
for page in asc:
text=page.get()
print page
if u"{{commonskat|{{#property:P373}}}}" in text:
text=text.replace(u"{{commonskat|{{#property:P373}}}}",u"{{commonskat}}")
# text=text.replace(u"[[Kategoria:Public art in Sant Martí, Barcelona]]",u"")
page.put(text,u"Robotak {{#property:P373}} ezabatu du")
wikipedia.stopme()