토렌트에 대한 정보를 얻기 위해 홍수를 어떻게 스크립트합니까?

토렌트에 대한 정보를 얻기 위해 홍수를 어떻게 스크립트합니까?

GUI를 사용할 때 많은 토렌트를 처리하는 것이 항상 편리한 것은 아닙니다. 시도했지만 deluge-console info원하는 정보가 모두 제공되지 않았습니다. 따라서 명확히 하기 위해 필요한 것은 대홍수를 제어하는 ​​토렌트에 대한 정보를 얻는 방법을 보여주는 스크립트입니다.

답변1

내가 생각해낸 내용은 다음과 같습니다.

#!/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()

또한 스크립트를 사용하면 라벨별로 필터링할 수 있습니다. 얻을 수 있는 정보에 대해서는 필드가 지정되지 않은 경우( []) 핵심 필드 목록이 반환됩니다. 자세한 내용여기. 플러그인의 경우 register_status_field다음과 같은 통화를 검색할 수 있습니다 .이 하나.

관련 정보