
Tratar con una gran cantidad de torrents no siempre es conveniente cuando se utiliza la GUI. Lo intenté deluge-console info
, pero no me dio toda la información que quería. Entonces, para que quede claro, lo que necesito es un script que muestre cómo obtener información sobre torrents bajo el control de Diluvio.
Respuesta1
Esto es lo que se me ocurrió:
#!/usr/bin/env python2
from deluge.log import setupLogger
from deluge.ui.client import client
from twisted.internet import reactor
import argparse
from operator import itemgetter
import pprint
setupLogger()
def on_get_torrents_status(status):
exclude_labels = args.exclude_labels.split(',') if args.exclude_labels else []
for data in sorted(status.values(), key=itemgetter('label', 'name')):
if data['label'] in exclude_labels:
continue
plus = '+' if data['is_finished'] else ' '
label = data['label'].encode('utf8', 'replace')
name = data['name'].encode('utf8', 'replace')
size = float(data['total_size']) / 1024 / 1024 / 1024
print '%s [%16s] %6.3f Gb %s' % (plus, label, size, name)
if args.verbose >= 1:
save_path = data['save_path'].encode('utf8', 'replace')
print ' save_path: %s' % save_path
reactor.stop()
def on_connected(res):
fields = ['name', 'total_done', 'total_size', 'is_finished', 'hash', 'save_path', 'progress', 'label']
filter_dict = {'label': args.labels.split(',')} \
if args.labels \
else {'label': ['']} \
if args.labels == '' \
else None
client.core.get_torrents_status(filter_dict, fields).addCallback(on_get_torrents_status)
def on_connected_err(res):
res = res.encode('utf8', 'replace')
print('Failed to connect to deluge: {}'.format(res))
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--labels')
parser.add_argument('--exclude-labels')
parser.add_argument('-v', '--verbose', action='count', default=0)
args = parser.parse_args()
d = client.connect()
d.addCallback(on_connected)
d.addErrback(on_connected_err)
reactor.run()
Además, el script permite filtrar por etiquetas. En cuanto a la información que puede obtener, la lista de campos principales se devuelve cuando no se especifica ningún campo ( []
). Más sobre estoaquí. En cuanto a los complementos, puede buscar register_status_field
llamadas, comoÉste.