You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.2 KiB
96 lines
2.2 KiB
from qbittorrent.base import Base
|
|
from qbittorrent.file import File
|
|
from qbittorrent.helpers import try_convert
|
|
|
|
|
|
class Torrent(Base):
|
|
properties = {
|
|
'num_seeds': {
|
|
'key': 'seeds',
|
|
'parse': lambda value: try_convert(value, int)
|
|
},
|
|
'num_leechs': {
|
|
'key': 'leechs',
|
|
'parse': lambda value: try_convert(value, int)
|
|
},
|
|
'ratio': {
|
|
'parse': lambda value: try_convert(value, float)
|
|
}
|
|
}
|
|
|
|
def __init__(self, url, session, client=None):
|
|
super(Torrent, self).__init__(url, session, client)
|
|
|
|
self.hash = None
|
|
self.name = None
|
|
|
|
self.state = None
|
|
self.ratio = None
|
|
self.progress = None
|
|
self.priority = None
|
|
|
|
self.seeds = None
|
|
self.leechs = None
|
|
|
|
# General properties
|
|
self.comment = None
|
|
self.save_path = None
|
|
|
|
self.eta = None
|
|
self.size = None
|
|
self.dlspeed = None
|
|
self.upspeed = None
|
|
self.nb_connections = None
|
|
self.share_ratio = None
|
|
self.piece_size = None
|
|
self.total_wasted = None
|
|
self.total_downloaded = None
|
|
self.total_uploaded = None
|
|
self.creation_date = None
|
|
self.time_elapsed = None
|
|
self.up_limit = None
|
|
self.dl_limit = None
|
|
|
|
#
|
|
# Commands
|
|
#
|
|
|
|
def pause(self):
|
|
self._post('command/pause', data={'hash': self.hash})
|
|
|
|
def resume(self):
|
|
self._post('command/resume', data={'hash': self.hash})
|
|
|
|
def remove(self):
|
|
self._post('command/delete', data={'hashes': self.hash})
|
|
|
|
def delete(self):
|
|
self._post('command/deletePerm', data={'hashes': self.hash})
|
|
|
|
def recheck(self):
|
|
self._post('command/recheck', data={'hash': self.hash})
|
|
|
|
#
|
|
# Fetch details
|
|
#
|
|
|
|
def get_files(self):
|
|
r = self._get('json/propertiesFiles/%s' % self.hash)
|
|
|
|
return [File.parse(self._client, x) for x in r]
|
|
|
|
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
|
|
|