Browse Source

updated qbittorrent-python

pull/2987/head
jkaberg 11 years ago
parent
commit
f42fb2fdd2
  1. 39
      libs/qbittorrent/client.py
  2. 17
      libs/qbittorrent/torrent.py

39
libs/qbittorrent/client.py

@ -2,6 +2,7 @@ from qbittorrent.base import Base
from qbittorrent.torrent import Torrent
from requests import Session
from requests.auth import HTTPDigestAuth
import time
class QBittorrentClient(Base):
@ -28,6 +29,44 @@ class QBittorrentClient(Base):
self._post('command/download', data={'urls': urls})
def get_torrents(self):
"""Fetch all torrents
:return: list of Torrent
"""
r = self._get('json/torrents')
return [Torrent.parse(self, x) for x in r]
def get_torrent(self, hash, include_general=True, max_retries=5):
"""Fetch details for torrent by info_hash.
:param info_hash: Torrent info hash
:param include_general: Include general torrent properties
:param max_retries: Maximum number of retries to wait for torrent to appear in client
:rtype: Torrent or None
"""
torrent = None
retries = 0
# Try find torrent in client
while retries < max_retries:
# TODO this wouldn't be very efficient with large numbers of torrents on the client
torrents = dict([(t.hash, t) for t in self.get_torrents()])
if hash in torrents:
torrent = torrents[hash]
break
retries += 1
time.sleep(1)
if torrent is None:
return None
# Fetch general properties for torrent
if include_general:
torrent.update_general()
return torrent

17
libs/qbittorrent/torrent.py

@ -32,6 +32,10 @@ class Torrent(Base):
self.seeds = None
self.leechs = None
# General properties
self.comment = None
self.save_path = None
#
# Commands
#
@ -62,3 +66,16 @@ class Torrent(Base):
def get_trackers(self):
pass
#
# Update torrent details
#
def update_general(self):
r = self._get('json/propertiesGeneral/%s' % self.hash)
if r:
self._fill(r)
return True
return False

Loading…
Cancel
Save