#format wiki
`'Requisiti':apt,python,wget,coreutils,sed,grep,gzip`
= IDP.py =
<
>''brutto codice, lo so me lo corregga chi può'':)<
>
{{{
#!python
#!/usr/bin/python
import sys,commands,math
global urlbase,wget,COL
#urlbase="http://localhost/websites/popcon-ubuntu/popcon.ubuntu.com/"
urlbase="http://popcon.ubuntu.com/"
#urlbase="http://popcon.debian.org/"
wget='wget -qNr -O '
COL=80
def main():
i=init()
s=scarica(i[0],i[1],i[2],i[3],i[4],0)
e=elabora(i[0],s[0],i[5])
calcola(e[0],e[1],e[2],e[3])
sys.exit(0)
def init():
l=len(sys.argv) #parole in linea di comando
if (l!=2):
if (l==1):
print "Inserire un nome di pacchetto\n es: $ sudo ./idp.py htop"
sys.exit(1)
elif (l>2):
print "Attenzione: non accetto piu' di un pacchetto per volta! Solo il primo verra' considerato"
p=sys.argv[1]
print ""
h=len(p)+2
h=h*"="
print h.center(COL)
print p.upper().center(COL)
print h.center(COL)
gfile='by_vote.gz'
sez=commands.getoutput('apt-cache show -q=2 '+p+' |grep -m 1 \"Section: \" |sed -e \'s/Section:\s//g\'')
commands.getoutput('echo \"'+sez+'\" > tf~')
r=commands.getoutput('wc -l tf~ |sed -e \'s/\stf~//g \'')
r=int(r)
if (r!=1):
print "Errore: pacchetto inesistente o errore nel db locale,"
print "prova ad aggiornare il db pacchetti con 'sudo apt-get update'"
sys.exit(1)
#se non esiste /usr/bin/wget: FIXME
#print "Installa wget e riprova, grazie!"
#sys.exit(1)
if (sez.count('/')==0): #
ramo='main'
cat=sez
else:
sez=sez.rsplit('/') #
ramo=sez[0]
cat=sez[1]
print "Ramo: "+ramo
print "Categoria: "+cat.strip('/')
return [gfile,urlbase,wget,ramo,cat,p]
def scarica(gfile,urlbase,wget,ramo,cat,unkn):
catfile=ramo+'_'+cat.strip('/')+'_'+gfile
if (unkn!=1):
cat+='/'
print "Recupero graduatoria globale ("+urlbase+gfile+")..."
commands.getoutput(wget+gfile+' '+urlbase+gfile) #scarica graduatoria globale ordinata per voto
#se by_vote.gz esiste FIXME
print "OK"
print "Recupero graduatoria di categoria ("+urlbase+ramo+"/"+cat+gfile+")..."
commands.getoutput(wget+catfile+' '+urlbase+ramo+'/'+cat+gfile) #scarica graduatoria della categoria ordinata per voto
#se catfile esiste FIXME
print "OK"
return [catfile]
def elabora(gfile,catfile,p):
commands.getoutput('zcat '+catfile+' | grep -m 1 \"'+p+' \" > tf~')
test=commands.getoutput('cat tf~')
if (test=='' or test.isspace()==1):
print "Maledizione, il pacchetto e' in 'unknown', devo riscaricare la categoria!"
unkn=1
s=scarica(gfile,urlbase,wget,'unknown','',1)
return elabora(gfile,s[0],p)
c_rank=float(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria della categoria
#print c_rank
commands.getoutput('zcat '+catfile+' | grep \"Total \" > tf~')
c_tot=int(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria della categoria
#print c_tot
commands.getoutput('zcat '+gfile+' | grep \"Total \" > tf~')
g_tot=int(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria globale
#print g_tot
grep_tmp=commands.getoutput('zcat '+gfile+' | grep -m 1 \"'+p+' \" > tf~')
g_rank=float(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #rank in graduatoria globale
#print g_rank
commands.getoutput('rm -f *.gz tf~') #rimuovo file temporanei
return [g_tot,g_rank,c_tot,c_rank]
def calcola(g_tot,g_rank,c_tot,c_rank):
idp=(((g_tot - g_rank) / g_tot) + ((c_tot - c_rank) / c_tot)) * 50 #calcolo I.D.P.
if (idp-round(int(idp),1) < 0.5): #arrotondamento all'intero
idp=math.floor(idp)
else:
idp=math.ceil(idp)
print ""
idp="I.D.P.="+str(int(idp))+"%"
print idp.center(COL)
print ""
main()
}}}
DOWNLOAD-SCARICA [[attachment:idp.compilato]]
<
>S.
<>
----
CategoryHomepage