Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • attachment:idp.py di SimoneFittabile/IDP/Script

Allegato "idp.py"

Scarica

   1 #!/usr/bin/python
   2 import sys,commands,math
   3 
   4 global urlbase,wget,col
   5 #urlbase="http://localhost/websites/popcon-ubuntu/popcon.ubuntu.com/"
   6 urlbase="http://popcon.ubuntu.com/"
   7 #urlbase="http://popcon.debian.org/"
   8 urlbase="http://popcon.ubuntu.com/"
   9 wget='wget -qNr -O '
  10 col=int(commands.getoutput('export COLUMNS; echo $COLUMNS'))
  11 
  12 def main():
  13 	i=init()
  14 	s=scarica(i[0],i[1],i[2],i[3],i[4],0)
  15 	e=elabora(i[0],s[0],i[5])
  16 	calcola(e[0],e[1],e[2],e[3])
  17 	sys.exit(0)
  18 	
  19 def init():
  20 	l=len(sys.argv) #parole in linea di comando
  21 	if (l!=2):
  22 		if (l==1):
  23 			print "Inserire un nome di pacchetto\n es: $ sudo ./idp.py htop"
  24 			sys.exit(1)
  25 		elif (l>2):
  26 			print "Attenzione: non accetto piu' di un pacchetto per volta! Solo il primo verra' considerato"
  27 	p=sys.argv[1]
  28 	print ""
  29 	h=len(p)+2
  30 	h=h*"="
  31 	print h.center(col)
  32 	print p.upper().center(col)
  33 	print h.center(col)	
  34 	gfile='by_vote.gz'
  35 	sez=commands.getoutput('apt-cache show -q=2 '+p+' |grep -m 1 \"Section: \" |sed -e \'s/Section:\s//g\'')
  36 	commands.getoutput('echo \"'+sez+'\" > tf~')
  37 	r=commands.getoutput('wc -l tf~ |sed -e \'s/\stf~//g \'')
  38 	r=int(r)
  39 	if (r!=1):
  40 		print "Errore: pacchetto inesistente o errore nel db locale,"
  41 		print "prova ad aggiornare il db pacchetti con 'sudo apt-get update'"
  42 		sys.exit(1)
  43 	#se non esiste /usr/bin/wget: FIXME
  44 		#print "Installa wget e riprova, grazie!"
  45 		#sys.exit(1)
  46 	if (sez.count('/')==0): #
  47 		ramo='main'
  48 		cat=sez
  49 	else:
  50 		sez=sez.rsplit('/') #
  51 		ramo=sez[0]
  52 		cat=sez[1]
  53 	print "Ramo: "+ramo
  54 	print "Categoria: "+cat.strip('/')
  55 	return [gfile,urlbase,wget,ramo,cat,p]
  56 
  57 def scarica(gfile,urlbase,wget,ramo,cat,unkn):
  58 	catfile=ramo+'_'+cat.strip('/')+'_'+gfile
  59 	if (unkn!=1):
  60 		cat+='/'
  61 		print "Recupero graduatoria globale   ("+urlbase+gfile+")..."
  62 		commands.getoutput(wget+gfile+' '+urlbase+gfile) #scarica graduatoria globale ordinata per voto
  63 		#se by_vote.gz esiste FIXME
  64 		print "OK"
  65 	print "Recupero graduatoria di categoria   ("+urlbase+ramo+"/"+cat+gfile+")..."
  66 	commands.getoutput(wget+catfile+' '+urlbase+ramo+'/'+cat+gfile) #scarica graduatoria della categoria ordinata per voto
  67 	#se catfile esiste FIXME
  68 	print "OK"
  69 	return [catfile]
  70 
  71 def elabora(gfile,catfile,p):
  72 	commands.getoutput('zcat '+catfile+' | grep -m 1 \"'+p+'   \" > tf~')
  73 	test=commands.getoutput('cat tf~')
  74 	if (test=='' or test.isspace()==1):
  75 		print "Maledizione, il pacchetto e' in 'unknown', devo riscaricare la categoria!"
  76 		unkn=1
  77 		s=scarica(gfile,urlbase,wget,'unknown','',1)
  78 		return elabora(gfile,s[0],p)
  79 	c_rank=float(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria della categoria
  80 	#print c_rank
  81 	commands.getoutput('zcat '+catfile+' | grep \"Total   \" > tf~')
  82 	c_tot=int(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria della categoria
  83 	#print c_tot
  84 	commands.getoutput('zcat '+gfile+' | grep \"Total   \" > tf~')
  85 	g_tot=int(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #totale entry in graduatoria globale
  86 	#print g_tot
  87 	grep_tmp=commands.getoutput('zcat '+gfile+' | grep -m 1 \"'+p+'   \" > tf~')
  88 	g_rank=float(commands.getoutput('sed -e \'1!d\' tf~').rsplit(' ')[0]) #rank in graduatoria globale
  89 	#print g_rank
  90 	commands.getoutput('rm -f *.gz tf~') #rimuovo file temporanei
  91 	return [g_tot,g_rank,c_tot,c_rank]
  92 	
  93 def calcola(g_tot,g_rank,c_tot,c_rank):
  94 	idp=(((g_tot - g_rank) / g_tot) + ((c_tot - c_rank) / c_tot)) * 50 #calcolo I.D.P.
  95 	if (idp-round(int(idp),1) < 0.5): #arrotondamento all'intero
  96 		idp=math.floor(idp) 
  97 	else:
  98 		idp=math.ceil(idp)
  99 	print ""
 100 	idp="I.D.P.="+str(int(idp))+"%"
 101 	print idp.center(col)
 102 	print ""
 103 	
 104 main()

Allegati

Per riferirsi agli allegati di una pagina, usare attachment:NOME_FILE, come mostrato qui sotto nell'elenco degli allegati. NON usare l'URL che si trova in corrispondenza del collegamento [scarica], potrebbe cambiare in futuro.
  • [scarica | mostra] (04/03/2007 21.22.35, 3.7 KB) [[attachment:idp.compilato]]
  • [scarica | mostra] (04/02/2007 17.25.08, 3.5 KB) [[attachment:idp.py]]
 All files | Selected Files: delete move to page copy to page

Non รจ consentito inserire allegati su questa pagina.