Usuari:PereBot/robot busca imatges

De la Viquipèdia, l'enciclopèdia lliure
# -*- 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()