18
18
19
19
class TorBox :
20
20
download = '/torrents/requestdl'
21
+ download_usenet = '/usenet/requestdl'
21
22
remove = '/torrents/controltorrent'
23
+ remove_usenet = '/usenet/controlusenetdownload'
22
24
stats = '/user/me'
23
25
history = '/torrents/mylist'
26
+ history_usenet = '/usenet/mylist'
24
27
explore = '/torrents/mylist?id=%s'
28
+ explore_usenet = '/usenet/mylist?id=%s'
25
29
cache = '/torrents/checkcached'
26
30
cloud = '/torrents/createtorrent'
27
31
queued = '/torrents/getqueued'
@@ -72,12 +76,22 @@ def delete_torrent(self, request_id=''):
72
76
def delete_torrent_queued (self , request_id = '' ):
73
77
data = {'torrent_id' : request_id , 'operation' : 'delete' }
74
78
return self ._POST (self .removeQueued , json = data )
75
-
79
+
80
+ def delete_usenet (self , request_id = '' ):
81
+ data = {'usenet_id' : request_id , 'operation' : 'delete' }
82
+ return self ._POST (self .remove_usenet , json = data )
83
+
76
84
def unrestrict_link (self , file_id ):
77
85
torrent_id , file_id = file_id .split (',' )
78
- params = {'token' : self .api_key , 'torrent_id' : torrent_id , 'file_id' : file_id , 'user_ip' : True }
86
+ params = {'token' : self .api_key , 'torrent_id' : torrent_id , 'file_id' : file_id }
79
87
try : return self ._GET (self .download , params = params )['data' ]
80
88
except : return None
89
+
90
+ def unrestrict_usenet (self , file_id ):
91
+ usenet_id , file_id = file_id .split (',' )
92
+ params = {'token' : self .api_key , 'usenet_id' : usenet_id , 'file_id' : file_id }
93
+ try : return self ._GET (self .download_usenet , params = params )['data' ]
94
+ except : return None
81
95
82
96
def check_cache_single (self , hash ):
83
97
return self ._GET (self .cache , params = {'hash' : hash , 'format' : 'list' })
@@ -266,8 +280,12 @@ def account_info_to_dialog(self):
266
280
return control .selectDialog (items , 'TorBox' )
267
281
except : log_utils .error ()
268
282
269
- def user_cloud (self ):
270
- url = self .history
283
+ def user_cloud (self , request_id = None ):
284
+ url = self .explore % request_id if request_id else self .history
285
+ return self ._GET (url )
286
+
287
+ def user_cloud_usenet (self , request_id = None ):
288
+ url = self .explore_usenet % request_id if request_id else self .history_usenet
271
289
return self ._GET (url )
272
290
273
291
def user_cloud_clear (self ):
@@ -282,17 +300,21 @@ def user_cloud_to_listItem(self, folder_id=None):
282
300
highlight_color = getSetting ('highlight.color' )
283
301
folder_str , deleteMenu = getLS (40046 ).upper (), getLS (40050 )
284
302
file_str , downloadMenu = getLS (40047 ).upper (), getLS (40048 )
285
- cloud_dict = self .user_cloud ()
286
- cloud_dict = [i for i in cloud_dict ['data' ] if i ['download_finished' ]]
287
- for count , item in enumerate (cloud_dict , 1 ):
303
+ folders = []
304
+ try : folders += [{** i , 'mediatype' : 'torent' } for i in self .user_cloud ()['data' ] if i ['download_finished' ]]
305
+ except : pass
306
+ try : folders += [{** i , 'mediatype' : 'usenet' } for i in self .user_cloud_usenet ()['data' ] if i ['download_finished' ]]
307
+ except : pass
308
+ folders .sort (key = lambda k : k ['updated_at' ], reverse = True )
309
+ for count , item in enumerate (folders , 1 ):
288
310
try :
289
311
cm = []
290
312
folder_name = string_tools .strip_non_ascii_and_unprintable (item ['name' ])
291
313
status_str = '[COLOR %s]%s[/COLOR]' % (highlight_color , item ['download_state' ].capitalize ())
292
- cm .append ((deleteMenu % 'Torrent' , 'RunPlugin(%s?action=tb_DeleteUserTorrent&id=%s&name=%s)' %
293
- (sysaddon , item ['id' ], quote_plus (folder_name ))))
314
+ cm .append ((deleteMenu % 'Torrent' , 'RunPlugin(%s?action=tb_DeleteUserTorrent&id=%s&mediatype=%s& name=%s)' %
315
+ (sysaddon , item ['id' ], item [ 'mediatype' ], quote_plus (folder_name ))))
294
316
label = '%02d | [B]%s[/B] | [B]%s[/B] | [I]%s [/I]' % (count , status_str , folder_str , folder_name )
295
- url = '%s?action=tb_BrowseUserTorrents&id=%s' % (sysaddon , item ['id' ])
317
+ url = '%s?action=tb_BrowseUserTorrents&id=%s&mediatype=%s ' % (sysaddon , item ['id' ], item [ 'mediatype ' ])
296
318
item = control .item (label = label , offscreen = True )
297
319
item .addContextMenuItems (cm )
298
320
item .setArt ({'icon' : tb_icon , 'poster' : tb_icon , 'thumb' : tb_icon , 'fanart' : addonFanart , 'banner' : tb_icon })
@@ -302,13 +324,13 @@ def user_cloud_to_listItem(self, folder_id=None):
302
324
control .content (syshandle , 'files' )
303
325
control .directory (syshandle , cacheToDisc = True )
304
326
305
- def browse_user_torrents (self , folder_id ):
327
+ def browse_user_torrents (self , folder_id , mediatype ):
306
328
sysaddon , syshandle = 'plugin://plugin.video.umbrella/' , int (argv [1 ])
307
329
quote_plus = requests .utils .quote
308
330
extensions = supported_video_extensions ()
309
331
file_str , downloadMenu = getLS (40047 ).upper (), getLS (40048 )
310
- torrent_files = self .torrent_info (folder_id )
311
- video_files = [i for i in torrent_files ['data' ]['files' ] if i ['short_name' ].lower ().endswith (tuple (extensions ))]
332
+ files = self .user_cloud_usenet ( folder_id ) if mediatype == 'usenet' else self . user_cloud (folder_id )
333
+ video_files = [i for i in files ['data' ]['files' ] if i ['short_name' ].lower ().endswith (tuple (extensions ))]
312
334
for count , item in enumerate (video_files , 1 ):
313
335
try :
314
336
cm = []
@@ -317,9 +339,9 @@ def browse_user_torrents(self, folder_id):
317
339
display_size = float (int (size )) / 1073741824
318
340
label = '%02d | [B]%s[/B] | %.2f GB | [I]%s [/I]' % (count , file_str , display_size , name )
319
341
item = '%d,%d' % (int (folder_id ), item ['id' ])
320
- url = '%s?action=play_URL&url=%s&caller=torbox&type=unrestrict' % (sysaddon , item )
321
- cm .append ((downloadMenu , 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=torbox&type=unrestrict)' %
322
- (sysaddon , quote_plus (name ), quote_plus (tb_icon ), item )))
342
+ url = '%s?action=play_URL&url=%s&caller=torbox&mediatype=%s& type=unrestrict' % (sysaddon , item , mediatype )
343
+ cm .append ((downloadMenu , 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=torbox&mediatype=%s& type=unrestrict)' %
344
+ (sysaddon , quote_plus (name ), quote_plus (tb_icon ), item , mediatype )))
323
345
item = control .item (label = label , offscreen = True )
324
346
item .addContextMenuItems (cm )
325
347
item .setArt ({'icon' : tb_icon , 'poster' : tb_icon , 'thumb' : tb_icon , 'fanart' : addonFanart , 'banner' : tb_icon })
@@ -329,10 +351,10 @@ def browse_user_torrents(self, folder_id):
329
351
control .content (syshandle , 'files' )
330
352
control .directory (syshandle , cacheToDisc = True )
331
353
332
- def delete_user_torrent (self , request_id , name , multi = False ):
354
+ def delete_user_torrent (self , request_id , mediatype , name , multi = False ):
333
355
if multi == False :
334
356
if not control .yesnoDialog (getLS (40050 ) % '?\n ' + name , '' , '' ): return
335
- result = self .delete_torrent (request_id )
357
+ result = self .delete_usenet ( request_id ) if mediatype == 'usenet' else self . delete_torrent (request_id )
336
358
if result ['success' ]:
337
359
control .notification (message = 'TorBox: %s was removed' % name , icon = tb_icon )
338
360
if not multi : control .refresh ()
@@ -386,7 +408,8 @@ def delete_active_torrents(self, data):
386
408
for torrent in data :
387
409
name = torrent .get ('name' ,'Unknown' )
388
410
request_id = torrent .get ('id' )
389
- self .delete_user_torrent (request_id , name , multi = True )
411
+ mediatype = torrent .get ('mediatype' )
412
+ self .delete_user_torrent (request_id , mediatype , name , multi = True )
390
413
391
414
def delete_queued_torrents (self , data ):
392
415
if not control .yesnoDialog (getLS (40544 ), '' , '' ): return
0 commit comments