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 qbittorrent.torrent import Torrent
from requests import Session from requests import Session
from requests.auth import HTTPDigestAuth from requests.auth import HTTPDigestAuth
import time
class QBittorrentClient(Base): class QBittorrentClient(Base):
@ -28,6 +29,44 @@ class QBittorrentClient(Base):
self._post('command/download', data={'urls': urls}) self._post('command/download', data={'urls': urls})
def get_torrents(self): def get_torrents(self):
"""Fetch all torrents
:return: list of Torrent
"""
r = self._get('json/torrents') r = self._get('json/torrents')
return [Torrent.parse(self, x) for x in r] 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.seeds = None
self.leechs = None self.leechs = None
# General properties
self.comment = None
self.save_path = None
# #
# Commands # Commands
# #
@ -62,3 +66,16 @@ class Torrent(Base):
def get_trackers(self): def get_trackers(self):
pass 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