Get Firefox

Firefox 4.0

stopsoftwarepatents.eu petition banner Manifiesto por la liberación de la cultura 
No a la traza privada
Últimos cambios
Últimos Cambios
Vote for Public Maps - Reject INSPIRE! Geocaching
Mi estado actual en Jabber/XMPP: - jabberES - jabber.org

Visualización de estadísticas persistentes

Última Actualización: 15 de marzo de 2008 - Sábado

Ahora que las estadísticas de BitTornado se almacenan de forma persistente, necesitamos una forma de consultarlas. Por ejemplo, nos puede interesar saber qué torrents hace más tiempo que están inactivos, o cual es nuestro SR ("Share Ratio") en ellos.

El programa es trivial, y muestra lo simple que es utilizar la tecnología de persistencia:

[jcea@XXXX BitTornado-0.3.17]$ cat z-showtraffic.py
#!/usr/local/bin/python

from durus.connection import Connection
from durus.client_storage import ClientStorage
from BitTornado.bencode import bencode,bdecode

import time,sys,sha

root=None
for i in sys.argv[1:] :
  f=open(i,"rb").read(1024*1024)
  metainfo=bdecode(f)
  info=metainfo["info"]
  info_hash = sha.new(bencode(info)).digest()

  if root==None :
    connection=Connection(ClientStorage(address="/video/0/durus-berkeleydbstorage/db/unix_socket"))
    root=connection.get_root()

  connection.abort()
  trafico=root["BT"][info_hash]
  up,down=trafico[0],trafico[1]
  print metainfo["info"]["name"]
  print metainfo["announce"]
  print "UP: %d - DOWN: %d - SR: %.2f - %s" %(up,down,up/(1.0+down),time.ctime(trafico[2]))
  print

El programa se crea dentro de la carpeta BitTorrent, para que tenga acceso a sus módulos. En la línea de comando le indicamos uno o más torrents de los que queremos que nos informe. El programa carga los torrents y muestra la información relevante, extraída del sistema de persistencia.

Algunos puntos interesantes:

Versión 2.0

Tras un mes de utilizar el programa y encontrarle algunas pegas, publico aquí la versión mejorada:

[jcea@XXXX BitTornado-0.3.17]$ cat z-showtraffic.py
#!/usr/local/bin/python

from durus.connection import Connection
from durus.client_storage import ClientStorage
from BitTornado.bencode import bencode,bdecode

import time,sys,sha

root=None
for i in sys.argv[1:] :
  try :
    f=open(i,"rb").read(1024*1024)
    metainfo=bdecode(f)
    info=metainfo["info"]
    info_hash = sha.new(bencode(info)).digest()
  except KeyboardInterrupt :
    raise
  except :
    import traceback
    print "*****",i
    traceback.print_exc()
    print
    continue

  if root==None :
    connection=Connection(ClientStorage(address="/video/0/durus-berkeleydbstorage/db/unix_socket"))
    root=connection.get_root()

  connection.abort()
  print metainfo["info"]["name"]
  print metainfo["announce"]

  trafico=root["BT"].get(info_hash,None)
  if trafico!=None :
    up,down=trafico[0],trafico[1]
    print "UP: %d - DOWN: %d - SR: %.2f - %s" %(up,down,up/(1.0+down),time.ctime(trafico[2]))
  else :
    print "?????"

  print

Las mejoras son:


Historia



Firefox 4.0 Python Zope ©2008 jcea@jcea.es