Usuari:PereBot/robot busca imatges
Aparença
Aquest programa és parcialment obsolet perquè assumeix que el valor per defecte del paràmetre de la plantilla commonscat és el títol de la pàgina i no la propietat commonscat de Wikidata. A Usuari:PereBot/robot posa commonscat i busca fotos hi ha una versió actualitzada que, a més, posa la plantilla commonscat als articles. |
# -*- coding: utf-8 -*-
# Programa que agafa els articles d'una categoria d'articles mancats de foto,
# tria els que tenen la plantilla Commonscat, i fa una llista amb els que tenen
# com a mínim una imatge jpeg a la categoria de Commons. A la llista hi posa
# galeries de cada categoria.
import sys
sys.path.append('C:\pywikipedia')
import wikipedia,catlib
import re
# Funció que comprova si una categoria existeix a Commons
# L'argument és el nom de la categoria (sense "category:")
# Retorna True o False
# Necessita la variable global sitecommons=wikipedia.getSite('commons','commons')
def catexisteix(nomcat):
if len(nomcat)>1:
titcat = u"Category:%s" % nomcat
pagcat = wikipedia.Page(sitecommons, titcat)
return pagcat.exists()
else:
print nomcat,u"és massa curt per ser un nom de categoria"
return False
# Transforma llista de fotos en galeria
def galeria(llistimatges):
gal=u"<gallery>\n"
for imatge in llistimatges:
if imatge.isImage():
gal+="{i}|{i}\n".format(i=imatge.title())
gal+=u"</gallery>\n\n"
return gal
#El programa comença aquí
def principal():
catbuscar = u"Peixos que necessiten una foto"
catnofoto = catlib.Category(site,catbuscar)
plantccat = wikipedia.Page(site,u"Template:Commonscat")
artambccat = plantccat.getReferences()
#print len(artambccat),u"articles amb Commonscat"
sartambccat = set(artambccat)
artcat = catnofoto.articlesList(recurse=False)
print len(artcat),u"articles a",catnofoto
sartcat = set(artcat)
srevisar = sartambccat&sartcat
print srevisar
numarticles = len(srevisar)
print numarticles,u"articles a revisar"
paginforme = wikipedia.Page(site,u"Usuari:PereBot/Fotos per on manquen") # Canvieu això pel lloc on vulgueu la informació
noutext = paginforme.get()
comptarticles = compta = 0
resum=u"\n\n=="+catbuscar+u"==\n\n"
for pag in srevisar:
comptarticles += 1
compta += 1
print comptarticles,u"/",numarticles,pag
tottemppar=pag.templatesWithParams()
nhiha = False
for plant in tottemppar:
if plant[0] == u'Commonscat':
nhiha = True
if plant[1] == []:
param = pag.title()
else:
param = plant[1][0]
if catexisteix(param):
print "La categoria",param,"existeix a Commons"
catcommons = catlib.Category(sitecommons, param)
fotos = catcommons.articlesList()
numfotos = len(fotos)
jpegs = 0
for imatge in fotos:
titfoto = imatge.title()
if re.search(ur"\.jpe?g", titfoto, re.I):
jpegs += 1
tit = pag.title()
print u"hi ha %i imatges a la categoria" % numfotos
print u"de les quals %s són jpeg" % jpegs
if jpegs>0:
resum += u"\n===[[{t}]]===\n*[[{t}]]\n".format(t=tit)
resum += u"*[[:commons:Category:%s]]\n" % param
resum += galeria(fotos)
compta += 3
if compta > 50:
noutext += resum
paginforme.put(noutext, catbuscar)
resum=u""
compta=0
else:
wikipedia.output(u"però la categoria {} no existeix a Commons." % param)
treure=True
noutext += resum
paginforme.put(u"%s--~~~~\n\n" % noutext, catbuscar)
if __name__ == "__main__":
site=wikipedia.getSite('ca')
sitecommons=wikipedia.getSite('commons', 'commons')
principal()
wikipedia.stopme()