토렌트에 대한 정보를 얻기 위해 홍수 스크립트를 작성하는 방법은 무엇입니까?

토렌트에 대한 정보를 얻기 위해 홍수 스크립트를 작성하는 방법은 무엇입니까?

많은 수의 종자를 처리하기 위해 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다음과 같은 호출을 검색할 수 있습니다 .이것.

관련 정보