Usuari:PereBot/robot canvia cal coor
Aparença
# -*- coding: utf-8 -*-
# Programa per posar una plantilla {{cal coor}} més concreta.
# Intenta descartar primer els articles que no necessiten coordenades (biografies, llistes, etc)
import re, sys
sys.path.append('C:\pywikipedia')
import wikipedia, catlib
#Paraules amb les que comencen categories que tenen les pàgines que no necessiten coordenades (principalment biografies)
#PER FER: SEPARAR LES CATEGORIES ON NO BUSCAR ARTICLES DE LES CATEGORIES ON NO POSAR COORDENADES
def catsnocoord():
cadena = u"Persones|Polítics|Escriptors|Pintors|Dibuixants"
cadena += u"|Poetes|Dramaturgs|Novel·listes|Autors|Traductors"
cadena += u"|Escultors|Arquitectes|Músics|Cantants|Actors|Compositors"
cadena += u"|Artistes|Cuiners|Bandolers"
cadena += u"|Esportistes|Jugadors|Entrenadors"
cadena += u"|Futbolistes|Ciclistes|Nedadors|Tennistes|Golfistes|Pilotaires"
cadena += u"|Medallistes|Campions|Guanyadors"
cadena += u"|Emperadors|Reis|Ducs|Grans ducs|Comtes|Vescomtes|Virreis|Nobles"
cadena += u"|Tsars|Electors|Prínceps|Infants|Barons|Diàdocs|Khans|Califes"
cadena += u"|Reines|Consorts|Emperadrius|Primeres dames"
cadena += u"|Cònsols|Tribuns|Pretors|Sàtrapes|Faraons|Tirans|Governants"
cadena += u"|Governadors|Senyors|Marcgravis|Majordoms|Sobirans"
cadena += u"|Exiliats|Militars|Comandants|Militars|Pilots"
cadena += u"|Socialistes|Comunistes|Feministes|Militants|Feixistes|Nazis"
cadena += u"|Activistes|Presidents|Ministres|Primers ministres"
cadena += u"|Alcaldes|Consellers|Regidors|Diputats|Senadors"
cadena += u"|Empresaris|Dirigents"
cadena += u"|Periodistes|Directors|Advocats|Juristes"
cadena += u"|Científics|Economistes|Físics|Químics|Matemàtics"
cadena += u"|Historiadors|Arqueòlegs|Filòsofs"
cadena += u"|Alumnes|Professors"
cadena += u"|Papes|Religiosos|Bisbes|Monjos|Frares|Abats|Canonges|Sacerdots"
cadena += u"|Sants|Heretges|Beats|Déus"
cadena += u"|Jesuïtes|Benedictins|Dominics"
cadena += u"|Catalans|Anglesos|Escocesos|Gal·lesos"
cadena += u"|Víkings|Alemanys|Bavaresos|Prussians|Suïssos|Novaiorquesos"
cadena += u"|Andalusins|Àrabs|Algerians|Egipcis"
cadena += u"|Imams|Musulmans|Emirs|Sultans|Companys"
cadena += u"|Discs|Cançons|Grups de música|Pel·lícules|Canals de televisió|Programes"
cadena += u"|Obres literàries|Obres de literatura|Obres teatrals"
cadena += u"|Llibres|Novel·les|Contes|Personatges|Programari|Videojocs|Consoles"
cadena += u"|Dominis de primer|Monedes|Himnes|Banderes|Escuts|Tractats"
cadena += u"|Seleccions|Clubs|Partits|Jocs|Campionat|Condecoracions|Open"
cadena += u"|Plantilles|Llistes|Articles destacats|Articles bons"
cadena += u"|Esport|Empreses|Economia|Música|Literatura" #Provisional. Treure quan no calgui.
cadena += u"|Ifranja|Corona d'Aragó|Sacre Imperi" #Provisional. Treure quan no calgui.
cadena += u"|Primera Guerra Mundial" #Provisional. Treure quan no calgui.
return cadena
# 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 += noucats
articles += nouarts
else:
print u"No es llegeix", scat
else:
print u"Aquesta ja la tinc vista"
articles = catlib.unique(articles)
return categories, articles
# El programa comença aquí
def principal():
tcatbuscar = u"Andorra" #Posar aquí la categoria que es revisarà
missatge = "" #u" en el marc del [[Viquiprojecte:Unió Europea]]" #Missatge promocional. Canviar per "" la resta de l'any.
missatgeno = missatge # Missatge promocional per quan posa {{cal coor}}
calcoortxt = u"{{cal coor and}}"
categoria = catlib.Category(site,tcatbuscar)
filtrecats = u"Categoria:(%s)" % catsnocoord()
cats, artb = miracatfiltre(categoria, filtre=filtrecats)
tcatnocoor = u"Articles mancats de coordenades"
catnocoor = catlib.Category(site, tcatnocoor)
artn = catnocoor.articlesList()
sartb = set(artb)
sartn = set(artn)
sartbn = sartb.intersection(sartn)
lartbn = list(sartbn)
#lartbn=lartbn[0:3] #per fer proves
print len(sartb), u"articles a ",tcatbuscar
print len(lartbn), u"articles per revisar"
for pag in lartbn:
print pag
text = pag.get()
textnou = re.sub(u"\{\{ *[Cc]al coor *\}\}", calcoortxt, text)
if text != textnou:
pag.put(textnou, u"Bot canvia {{cal coor}} per %s" % calcoortxt)
if __name__ == '__main__':
site=wikipedia.getSite('ca')
principla()
wikipedia.stopme()