updated qbittorrent-python
This commit is contained in:
1 parent
42e3c95f87
commit
f42fb2fdd2
2 files changed
+56
No files matched your search
@@ -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
|
||||||
@@ -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
|
||||||
Reference in new issue
Block a user