From 00db0485e8e34f8cf25c7ec1d7104e3855c2de35 Mon Sep 17 00:00:00 2001 From: Wil Reichert Date: Sun, 18 Sep 2016 14:27:36 +0900 Subject: [PATCH] update hadouken downloader to work with v5.2.0 api changes --- couchpotato/core/downloaders/hadouken.py | 44 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/couchpotato/core/downloaders/hadouken.py b/couchpotato/core/downloaders/hadouken.py index b2057d5..f96a374 100644 --- a/couchpotato/core/downloaders/hadouken.py +++ b/couchpotato/core/downloaders/hadouken.py @@ -371,29 +371,29 @@ class TorrentItemv5(TorrentItem): self.obj = obj def info_hash(self): - return self.obj['infoHash'] + return self.obj[0] def save_path(self): - return self.obj['savePath'] + return self.obj[26] def name(self): - return self.obj['name'] + return self.obj[2] def state(self): - return self.obj['state'] + return self.obj[1] def get_status(self): - if self.obj['isSeeding'] and self.obj['isFinished'] and self.obj['isPaused']: + if self.obj[1] == 32: return 'completed' - if self.obj['isSeeding']: + if self.obj[1] == 1: return 'seeding' return 'busy' def get_seed_ratio(self): - up = self.obj['uploadedBytesTotal'] - down = self.obj['downloadedBytesTotal'] + up = self.obj[6] + down = self.obj[5] if up > 0 and down > 0: return up / down @@ -402,28 +402,29 @@ class TorrentItemv5(TorrentItem): class HadoukenAPIv5(HadoukenAPI): + def add_file(self, data, params): - return self.rpc.invoke('session.addTorrentFile', [b64encode(data), params]) + return self.rpc.invoke('webui.addTorrent', ['file', b64encode(data), params]) def add_magnet_link(self, link, params): - return self.rpc.invoke('session.addTorrentUri', [link, params]) + return self.rpc.invoke('webui.addTorrent', ['url', link, params]) def get_by_hash_list(self, infoHashList): - torrents = self.rpc.invoke('session.getTorrents') + torrents = self.rpc.invoke('webui.list', None) result = [] - for torrent in torrents.values(): - if torrent['infoHash'] in infoHashList: + for torrent in torrents['torrents']: + if torrent[0] in infoHashList: result.append(TorrentItemv5(torrent)) return result def get_files_by_hash(self, infoHash): - files = self.rpc.invoke('torrent.getFiles', [infoHash]) + files = self.rpc.invoke('webui.getFiles', [infoHash]) result = [] - for file in files: - result.append(file['path']) + for file in files['files'][1]: + result.append(file[0]) return result @@ -437,12 +438,15 @@ class HadoukenAPIv5(HadoukenAPI): def pause(self, infoHash, pause): if pause: - return self.rpc.invoke('torrent.pause', [infoHash]) + return self.rpc.invoke('webui.perform', ['pause', infoHash]) - return self.rpc.invoke('torrent.resume', [infoHash]) + return self.rpc.invoke('webui.perform', ['resume', infoHash]) - def remove(self, infoHash, remove_data = False): - return self.rpc.invoke('session.removeTorrent', [infoHash, remove_data]) + def remove(self, infoHash, remove_data=False): + if remove_data: + return self.rpc.invoke('webui.perform', ['removedata', infoHash]) + + return self.rpc.invoke('webui.perform', ['remove', infoHash]) class TorrentItemv4(TorrentItem):