Usuari Discussió:Meldor/Ranking (Principal)

Darrer comentari: fa 15 anys per 195.83.152.146 sobre el tema Segona Guerra Mundial

El codi per crear el rànquing de visites s'ha modificat a partir de l'original, que es pot trobar a es. Encara s'estan polint errors, pel que qualsevol millora o optimització serà especialment benvinguda ^^

 # -*- coding: utf-8 -*-
import wikipedia, gzip, os, re, datetime
 
os.system('rm pagecounts*.gz') #limpiamos antes de empezar
 
os.system('wget http://dammit.lt/wikistats/ -O tmpweb.html')
file=open('tmpweb.html', 'r')
wget=file.read()
ayer=datetime.date.today()-datetime.timedelta(days=1)
ayerano=str(ayer.year)
ayermes=str(ayer.month)
if len(ayermes)==1:
        ayermes='0%s' % ayermes
ayerdia=str(ayer.day)
if len(ayerdia)==1:
        ayerdia='0%s' % ayerdia
m=re.compile(ur'(?i)\"(pagecounts\-%s%s%s\-\d{6}\.gz)\"' % (ayerano, ayermes, ayerdia)).finditer(wget)
gzs=[]
for i in m:
        print i.group(1)
        gzs.append(i.group(1))

pagesdic={u'Principal':{}, u'Usuari':{}, u'Viquipèdia':{}, u'Imatge':{}, u'Plantilla':{}, u'Ajuda':{}, u'Categoria':{}, u'Portal':{}, u'Viquiprojecte':{}}
r={'Usuari':re.compile(ur'(?m)^ca Usuari:'),
'Viquipèdia':re.compile(ur'(?m)^ca Viquipèdia:'),
'Imatge':re.compile(ur'(?m)^ca Imatge:'),
'Plantilla':re.compile(ur'(?m)^ca Plantilla:'),
'Ajuda':re.compile(ur'(?m)^ca Ajuda'),
'Categoria':re.compile(ur'(?m)^ca Categoria:'),
'Portal':re.compile(ur'(?m)^ca Portal:'),
'Viquiprojecte':re.compile(ur'(?m)^ca Viquiprojecte:'),
}
 
for gz in gzs:
        os.system('wget http://dammit.lt/wikistats/%s' % gz)
        f=gzip.open(gz, 'r')
 
        regex=re.compile(ur'(?im)^ca (.*) (\d{1,}) (\d{1,})$')
 
        line=f.readline()
        c=0
        while line:
                c+=1
                if c % 250000 == 0:
			print "Analitzades %d linies" % c
                m=regex.finditer(line)
                for i in m:
                        page=i.group(1)
                        times=int(i.group(2))
 
                        nm=u'Principal'
                        if re.search(r['Usuari'], line):
                                nm=u'Usuari'
                        elif re.search(r['Viquipèdia'], line):
                                nm=u'Viquipèdia'
                        elif re.search(r['Imatge'], line):
                                nm=u'Imatge'
                                continue #saltamos
                        elif re.search(r['Plantilla'], line):
                                nm=u'Plantilla'
                        elif re.search(r['Ajuda'], line):
                                nm=u'Ajuda'
                        elif re.search(r['Categoria'], line):
                                nm=u'Categoria'
                        elif re.search(r['Portal'], line):
                                nm=u'Portal'
                        elif re.search(r['Viquiprojecte'], line):
                                nm=u'Viquiprojecte'
                         
                        if pagesdic[nm].has_key(page):
                                pagesdic[nm][page]+=times
                        else:
                                pagesdic[nm][page]=times
                line=f.readline()
 
        f.close()
 
pageslist={}
for k, v in pagesdic.items():
        pageslist[k] = [(v2, k2) for k2, v2 in v.items()]
        pageslist[k].sort()
        pageslist[k].reverse()
        pageslist[k] = [(k2, v2) for v2, k2 in pageslist[k]]
 
visitas={u'Total':0, u'Principal':0, u'Usuari':0, u'Viquipèdia':0, u'Imatge':0, u'Plantilla':0, u'Ajuda':0, u'Categoria':0, u'Portal':0, u'Viquiprojecte':0}
for k, v in pageslist.items():
        for k2, v2 in v:
                visitas[k]+=v2
                visitas[u'Total']+=v2
 
limite=100
for k2, v2 in pageslist.items():
        if k2==u'Imatge':
                continue #saltamos
        salida=u"La taula següent mostra les '''%d pàgines més visitades''' (en l'espai de noms '%s') de la [[Viquipèdia en català]] en el dia d'ahir, %s / %s / %s.\n Ahir hi va haver un total de {subst:formatnum:%d}} visites per aquest espai de noms, %.1f%s del total ({{subst:formatnum:%d}}).\n<center>[[Usuari:Meldor/Ranking (Principal)|Principal]] · [[Usuari:Meldor/Ranking (Usuari)|Usuari]] · [[Usuari:Meldor/Ranking (Viquipèdia)|Viquipèdia]] · [[Usuari:Meldor/Ranking (Plantilla)|Plantilla]] · [[Usuari:Meldor/Ranking (Ajuda)|Ajuda]] · [[Usuari:Meldor/Ranking (Categoria)|Categoria]] · [[Usuari:Meldor/Ranking (Portal)|Portal]] · [[Usuari:Meldor/Ranking (Viquiprojecte)|Viquiprojecte]] </center>\n\n<center>\n{| class='wikitable sortable' style='text-align:center;'\n! #\n! Pàgina\n! Visites" % (limite, k2, ayerdia, ayermes, ayerano, visitas[k2], visitas[k2]/(visitas[u'Total']/100.0), u'%', visitas[u'Total'])
 
        c=0
        for k, v in pageslist[k2]:
                try:
                        if re.search(ur'Especial\:|Special\:|sort_down\.gif|sort_up\.gif|sort_none\.gif', k):
                                continue
                        tmp=wikipedia.Page(wikipedia.Site('ca', 'wikipedia'), k)
                        detalles=u''
                        if tmp.exists():
                                if tmp.isRedirectPage():
                                        detalles+=u'(Redirecció a [[%s]])' % (tmp.getRedirectTarget())
                                elif tmp.isDisambig():
                                        detalles+=u'(Desambiguació)'
                                else:
                                        tmpget=tmp.get()
                                        if re.search(ur'(?i)\{\{ *Article bo', tmpget):
                                                detalles+=u'[[Imatge:Nuvola apps kontact.png|14px|Article bo]]'
                                        if re.search(ur'(?i)\{\{ *(Article de qualitat|Article destacat)', tmpget):
                                                detalles+=u'[[Imatge:Distintiu de qualitat.png|14px|Article de qualitat]]'
                                        if re.search(ur'(?i)\{\{ *(Semiprotegida|Semiprotegit|Pp-semi-template)', tmpget):
                                                detalles+=u'[[Imatge:Padlock-silver-medium.svg|20px|Semiprotegida]]'
                                        if re.search(ur'(?i)\{\{ *(Protegida|Protegit|Pp-template)', tmpget):
                                                detalles+=u'[[Imatge:Padlock.svg|20px|Protegida]]'
 
                        k=re.sub(ur'(?i)(Imatge?\:)', ur':\1', k)
                        k=re.sub(ur'(?i)(Category\:|Categoria\:)', ur':\1', k)
                        k=re.sub('_', ' ', k)
                        c+=1
                        salida+=u"\n|-\n| %d || [[%s]] %s || %s " % (c, k, detalles, v)
                        if c>=limite:
                                break
                except:
                        wikipedia.output(u'Error en generar ítem en llista de %s' % k2)
 
        
        wiii=wikipedia.Page(wikipedia.Site('ca', 'wikipedia'), u'Usuari:Meldor/Ranking (%s)' % k2)
        wiii.put(salida, u'BOT - Actualitzant llista de pàgines més visitades (%s)' % k2)
 
os.system('rm pagecounts*.gz')

Segona Guerra Mundial modifica

No apareix llistada com a article de qualitat.el comentari anterior sense signar és fet per 195.83.152.146 (disc.contr.) 16:25, 19 maig 2008 (CEST)Respon

Torna a la pàgina d'usuari de "Meldor/Ranking (Principal)".