Usuari:PereBot/robot llista manteniment commonscat

# -*- coding: utf-8 -*-
# Programa per crear una llista amb els conflictes entre la plantilla
# Commonscat i el que diu Wikidata.

import re, sys, urllib2
sys.path.append('C:\pywikipedia')
import wikipedia, catlib

# Recupera la propetat "categoria de Commons" a Wikidata
# L'argument és una pàgina de wikidata (objecte pàgina)
# Retorna una cadena.
# Si no hi ha la propietat, retorna una cadena buida.
def dataccat(data):
    ccat = ""
    try:
        dict = data.get()
        claims = dict[u'claims']
        for el in claims:
            m = el[u'm']
            num = m[1]
            if num == 373:
                ccat = m[3]
    except wikipedia.NoPage:
        print u"Error: no hi ha pàgina a wikidata"
    except wikipedia.MaxTriesExceededError:
        print u"Error: Temps excedit"
    except urllib2.HTTPError:
        print u"Error HTTP (no deu funcionar el web)"
    return ccat


#El programa comença aquí
def principal():
    categoria = catlib.Category(site,u"Manteniment plantilla commonscat")
    asc = categoria.articlesList(recurse=False)
    comptapotencial = numarticles = len(asc)
    #asc=asc[50:70]
    paginforme = wikipedia.Page(site, u"Usuari:PereBot/Commonscat i Wikidata") # Canvieu això pel lloc on vulgueu la informació
    noutext = paginforme.get()
    comptarticles = compta = 0
    noutext += "\n\n==Resum==\n\n"
    for pag in asc:
        comptarticles += 1
        compta += 1
        print comptarticles,u"/",numarticles,pag
        tottemppar = pag.templatesWithParams()
        nhiha = paramdefecte = False
        param = ""
        for plant in tottemppar:
            if plant[0] in (u'Commonscat', u'Commons cat' u'Commons category'):
                nhiha = True
                if plant[1] == []:
                    param = pag.title()
                    paramdefecte = True
                else:
                    param = plant[1][0]
        try:
            data = wikipedia.DataPage(pag)
        except wikipedia.NoPage:
            print u"Error: no hi ha pàgina a wikidata"
        except wikipedia.MaxTriesExceededError:
            print u"Error: Temps excedit"
        except urllib2.HTTPError:
            print u"Error HTTP (no deu funcionar el web)"
        paramdata = dataccat(data)
        qdata = data.title()
        if qdata == None:
            qdata = u""
        print u"Qdata: %s" % qdata
        print u"Article: {} Plantilla: {} Wikidata: {}".format(pag, param, paramdata)
        tarticle = u'[[%(p)s]] <small class="editlink noprint plainlinks">[{{fullurl:%(p)s|action=edit}} edita]</small>' % {"p": pag.title()}
        if paramdefecte:
            tdef = " ''(per defecte)'' "
        else:
            tdef = ""
        if param != "":
            tplant = u"[[:commons:Category:{p}|{p}]]{}".format(tdef, p=param)
        else:
            tplant = u" ''plantilla Commonscat no trobada.''"
        tdata = u"[[:commons:Category:{p}|]] <span style=\"font-size:80%;\">[[:d:{}]]</span>".format(qdata, p=paramdata)
        linia = u"#{} '''''P:''''' {} '''''D:''''' {}\n".format(tarticle, tplant, tdata)
        noutext += linia
        if compta > 400:
            paginforme.put(u"%s--~~~~\n\n" % noutext, u"Comprovant diferències Commonscat-Wikidata")
            compta=0
    paginforme.put(u"%s--~~~~\n\n" % noutext, u"Comprovant diferències Commonscat-Wikidata")

if __name__ == '__main__':
    site=wikipedia.getSite('ca')
    wikipedia.stopme()