diff --git a/Core.py b/Core.py index 4c5dc48..9726275 100644 --- a/Core.py +++ b/Core.py @@ -45,7 +45,7 @@ class Core: debug = __settings__.getSetting('debug') == 'true' torrent_player=__settings__.getSetting("torrent_player") history_bool = __settings__.getSetting('history') == 'true' - context_open = __settings__.getSetting('context_open') == 'true' + open_option = int(__settings__.getSetting('open_option')) language = {0: 'en', 1: 'ru'}.get(int(__settings__.getSetting("language"))) htmlCodes = ( ('&', '&'), @@ -411,8 +411,9 @@ class Core: self.drawItem(title, 'DownloadStatus', link, image=img, contextMenu=contextMenu, replaceMenu=False) view_style('DownloadStatus') xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) - xbmc.sleep(30000) - xbmc.executebuiltin('Container.Refresh') + #xbmc.sleep(30000) + #xbmc.executebuiltin('Container.Refresh') + return def History(self, params={}): db = HistoryDB() @@ -449,7 +450,7 @@ class Core: items = db.get_all() favlist = [(1, '[B]%s[/B]'), (0, '%s')] if items: - ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=History&action2=%s&%s=%s') + ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=%s&action2=%s&%s=%s') for favbool, bbstring in favlist: for addtime, string, fav in items: if favbool == int(fav): @@ -459,19 +460,21 @@ class Core: contextMenu.append((self.localize('Individual Tracker Options'), 'XBMC.RunScript(%s)' % (os.path.join(ROOT, 'controlcenter.py,') + 'addtime=%s&title=%s' % (str(addtime), title)))) + contextMenu.append((self.localize('Keyboard'), + ListString % ('search', '&showKey=true', 'url', urllib.quote_plus(title)))) if int(fav) == 1: contextMenu.append((self.localize('Delete from %s') % self.localize('Favourites SH'), - ListString % ('unfav', 'addtime', str(addtime)))) + ListString % ('History', 'unfav', 'addtime', str(addtime)))) img = self.ROOT + '/icons/fav.png' else: contextMenu.append((self.localize('Add to %s') % self.localize('Favourites SH'), - ListString % ('fav', 'addtime', str(addtime)),)) + ListString % ('History', 'fav', 'addtime', str(addtime)),)) img = self.ROOT + '/icons/unfav.png' contextMenu.append((self.localize('Delete from %s') % self.localize('Search History'), - ListString % ('delete', 'addtime', str(addtime)))) + ListString % ('History', 'delete', 'addtime', str(addtime)))) link = {'url': title, 'addtime': str(addtime)} - self.drawItem(bbstring % title, 'search', link, image=img, contextMenu=contextMenu) + self.drawItem(bbstring % title, 'search', link, image=img, contextMenu=contextMenu, replaceMenu=False) view_style('History') xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) @@ -1068,7 +1071,7 @@ class Core: menu.append((hash, action, str(ind))) else: menu.append((hash, action, str(ind))) - for hash, action, ind in menu: Download().setprio_simple(hash, action, ind) + Download().setprio_simple_multi(menu) return xbmc.executebuiltin('Container.Refresh') return @@ -1142,8 +1145,9 @@ class Core: replaceMenu=True) view_style('uTorrentBrowser') xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) - xbmc.sleep(30000) - xbmc.executebuiltin('Container.Refresh') + #xbmc.sleep(30000) + #xbmc.executebuiltin('Container.Refresh') + return def clearStorage(self, params={}): clearStorage(self.userStorageDirectory) @@ -1456,19 +1460,10 @@ class Core: def showFilesList(self, filesList, params={}): #myshows get = params.get - try: - external = urllib.unquote_plus(get("external")) - except: - external = None + external = unquote(get("external"), None) silent = get("silent") - try: - thumbnail = urllib.unquote_plus(get("thumbnail")) - except: - thumbnail = '' - try: - save_folder = urllib.unquote_plus(get("save_folder")) - except: - save_folder = '' + thumbnail = unquote(get("thumbnail"),'') + save_folder = unquote(get("save_folder"),'') if external: try: s = json.loads(json.loads(urllib.unquote_plus(get("sdata")))) @@ -1493,7 +1488,14 @@ class Core: return else: for (order, seeds, leechers, size, title, link, image) in filesList: - contextMenu = [ + link_dict = {'url': link, 'thumbnail': thumbnail, 'save_folder':save_folder} + link_url='' + for key in link_dict.keys(): + if link_dict.get(key): + link_url = '%s&%s=%s' % (link_url, key, urllib.quote_plus(link_dict.get(key))) + contextMenu = [(self.localize('Open (no return)'), + 'XBMC.ActivateWindow(Videos,%s)' % ('%s?action=%s%s') % ( + sys.argv[0], 'openTorrent', link_url)), (myshows_lang(30409), 'XBMC.RunPlugin(%s)' % ( 'plugin://plugin.video.myshows/?mode=3010&sort=activate&stringdata=' + urllib.quote_plus( @@ -1514,7 +1516,8 @@ class Core: link_dict = {'url': link, 'thumbnail': thumbnail, 'save_folder':save_folder} link_url='' for key in link_dict.keys(): - link_url = '%s&%s=%s' % (link_url, key, urllib.quote_plus(link_dict.get(key))) + if link_dict.get(key): + link_url = '%s&%s=%s' % (link_url, key, urllib.quote_plus(link_dict.get(key))) contextMenu = [ (self.localize('Open (no return)'), 'XBMC.ActivateWindow(Videos,%s)' % ('%s?action=%s%s') % ( @@ -1528,16 +1531,21 @@ class Core: ] title = self.titleMake(seeds, leechers, size, title) - if self.context_open: - self.drawItem(title, 'context', link, image, contextMenu=contextMenu, replaceMenu=False) - else: + if self.open_option==0: self.drawItem(title, 'openTorrent', link_dict, image, contextMenu=contextMenu, replaceMenu=False) + elif self.open_option==1: + self.drawItem(title, 'context', link, image, contextMenu=contextMenu, replaceMenu=False) + elif self.open_option==2: + self.drawItem(title, 'downloadFilesList', link_dict, image, contextMenu=contextMenu, replaceMenu=False) + elif self.open_option==3: + self.drawItem(title, 'downloadLibtorrent', link_dict, image, contextMenu=contextMenu, replaceMenu=False) + view_style('showFilesList') xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) def context(self, params={}): xbmc.executebuiltin("Action(ContextMenu)") - sys.exit() + return def downloadFilesList(self, params={}): dirname = None @@ -1549,7 +1557,7 @@ class Core: if self.__settings__.getSetting("torrent_save") == '0': if items and clean: - if self.__settings__.getSetting("torrent") == '0': + if self.__settings__.getSetting("torrent") in ['0','3']: if len(items) > 1: dialog = xbmcgui.Dialog() dirid = dialog.select(self.localize('Choose directory:'), items) @@ -1557,7 +1565,7 @@ class Core: dirid = 0 if dirid == -1: return dirname = clean[dirid] - if self.__settings__.getSetting("torrent") == '1': + if self.__settings__.getSetting("torrent") in ['1','2']: default = self.__settings__.getSetting("torrent_dir") keyboard = xbmc.Keyboard(default, self.localize('Save to path') + ':') keyboard.doModal() @@ -1606,6 +1614,7 @@ class Core: f = open(url, 'rb') torrent = f.read() + f.close() success = Download().add(torrent, dirname) if success and ind: id = self.chooseHASH()[0] @@ -1645,6 +1654,7 @@ class Core: int(self.__settings__.getSetting("download_limit")) * 1000000 / 8) #MBits/second torrent.downloadProcess(ind) showMessage(self.localize('Download Status'), self.localize('Added!')) + xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) def titleMake(self, seeds, leechers, size, title): @@ -1672,9 +1682,13 @@ class Core: showKey = myshows_setting.getSetting("torrenter_keyboard") except: showKey = None + + if params.get('showKey'): showKey=params.get('showKey') + if showKey == "true" or defaultKeyword == '' or not defaultKeyword: if not defaultKeyword: defaultKeyword = '' + defaultKeyword=unquote(defaultKeyword) keyboard = xbmc.Keyboard(defaultKeyword, self.localize('Search Phrase') + ':') keyboard.doModal() query = keyboard.getText() diff --git a/Localization.py b/Localization.py index a1f6c3d..b729d34 100644 --- a/Localization.py +++ b/Localization.py @@ -218,6 +218,7 @@ dictionary = { 'Started All!':'Все Запущены!', 'Stopped All!':'Все Остановлено!', 'Stop All':'Остановить Все', + 'Keyboard':'Клавиатура', } } diff --git a/Player.py b/Player.py index 01b9be7..1dad86a 100644 --- a/Player.py +++ b/Player.py @@ -355,7 +355,7 @@ class TorrentPlayer(xbmc.Player): overlay.text = "\n".join(self._get_status_lines(status)) #downloadedSize = torrent.torrentHandle.file_progress()[contentId] self.iterator = int(status.progress * 100) - if not self.seeding_run and self.iterator == 100: + if not self.seeding_run and self.iterator == 100 and self.seeding: self.seeding_run=True xbmc.sleep(1000) self.seed(self.contentId) diff --git a/Proxier.py b/Proxier.py deleted file mode 100644 index cf6eae9..0000000 --- a/Proxier.py +++ /dev/null @@ -1,80 +0,0 @@ -import socket -import thread -import re -import os - - -class Proxier: - HOST = '127.0.0.1' - PORT = 51515 - PATH = '' - CHUNK_SIZE = 1024 - seekBytes = 0 - buffering = 0 - - def server(self, path): - self.PATH = path - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.settimeout(600) - s.bind((self.HOST, self.PORT)) - s.listen(1) - while True: - conn, addr = s.accept() - conn.setblocking(1) - data = conn.recv(1024) - range = re.compile('Range: bytes=(\d+)-(\d*)') - size = os.path.getsize(self.PATH) - byte1, byte2 = 0, None - - if range.search(data): - g = range.search(data).groups() - if g[0]: byte1 = int(g[0]) - if g[1]: byte2 = int(g[1]) - - length = size - byte1 - if byte2 is not None: - length = byte2 - byte1 - - thread.start_new_thread(self.streamer, (conn, byte1, byte2, length, size, )) - - def streamer(self, conn, byte1, byte2, length, size): - send = '' - if byte1 > 0 or byte2 != None: - send = send + "HTTP/1.1 206 Partial Content" - send = send + "\r\n" - send = send + "Content-Range: %s-%s/%s" % (str(byte1), str(byte1 + length - 1), str(size)) - send = send + "\r\n" - self.seekBytes = byte1 - else: - send = send + "HTTP/1.1 200 OK" - send = send + "\r\n" - send = send + "Content-Type: video/mp4" - send = send + "\r\n" - send = send + "Content-Length: " + str(length) - send = send + "\r\n" - send = send + "Accept-Ranges: bytes" - send = send + "\r\n" - send = send + "Connection: close" - send = send + "\r\n" - send = send + "\r\n" - conn.send(send) - fp = open(self.PATH, "rb") - fp.seek(byte1) - sent = 0 - while length > sent: - chunk = fp.read(self.CHUNK_SIZE) - if chunk: - self.buffering = 0 - try: - sent = sent + conn.send(chunk) - except socket.error, e: - conn.close() - break - else: - self.buffering = self.buffering + 1 - time.sleep(1) - if self.buffering > 60: - break - fp.close() - conn.close() diff --git a/Rates.py b/Rates.py deleted file mode 100644 index 25aaa6c..0000000 --- a/Rates.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -''' - Torrenter plugin for XBMC - Copyright (C) 2012 Vadim Skorba - vadim.skorba@gmail.com - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' - -import sys - -import xbmcgui -import Localization - - -class Rates(xbmcgui.Window): - buttonWidth = 250 - buttonHeight = 250 - width = 1280 - height = 720 - rate = 0 - - def __init__(self, *kargs): - noFocus = sys.modules["__main__"].__root__ + '/icons/bookmarks.png' - focus = sys.modules["__main__"].__root__ + '/icons/add_bookmark.png' - self.addControl(xbmcgui.ControlLabel(0, self.height / 4, self.width, 100, - Localization.localize('Please, rate watched video:'), alignment=6)) - self.bad = xbmcgui.ControlButton(self.buttonWidth / 2, self.height / 2, self.buttonWidth, self.buttonHeight, - Localization.localize('Bad'), alignment=6, textColor='0xFFCC3333', - focusedColor='0xFFFF0000', focusTexture=focus, noFocusTexture=noFocus, - shadowColor='0xFF000000') - self.normal = xbmcgui.ControlButton(self.width / 2 - self.buttonWidth / 2, self.height / 2, self.buttonWidth, - self.buttonHeight, Localization.localize('So-So'), alignment=6, - textColor='0xFFCCCC33', focusedColor='0xFFFFFF00', focusTexture=focus, - noFocusTexture=noFocus, shadowColor='0xFF000000') - self.good = xbmcgui.ControlButton(self.width - self.buttonWidth * 3 / 2, self.height / 2, self.buttonWidth, - self.buttonHeight, Localization.localize('Good'), alignment=6, - textColor='0xFF33CC33', focusedColor='0xFF00FF00', focusTexture=focus, - noFocusTexture=noFocus, shadowColor='0xFF000000') - self.addControl(self.bad) - self.addControl(self.normal) - self.addControl(self.good) - self.bad.setNavigation(self.bad, self.bad, self.bad, self.normal) - self.normal.setNavigation(self.normal, self.normal, self.bad, self.good) - self.good.setNavigation(self.good, self.good, self.normal, self.good) - self.setFocus(self.normal) - - def onControl(self, control): - if control == self.bad: - self.rate = -1 - if control == self.normal: - self.rate = 0 - if control == self.good: - self.rate = 1 - self.close() diff --git a/addon.xml b/addon.xml index 90b222c..5039fc8 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@  - + diff --git a/cal.py b/cal.py index 8b9e065..311a7c7 100644 --- a/cal.py +++ b/cal.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import sys -import os +import os, json ROOT = os.path.dirname(sys.modules["__main__"].sys.argv[0]) searcherObject = {} @@ -9,4 +9,16 @@ if ROOT + os.sep + 'resources' + os.sep + 'contenters' not in sys.path: sys.path.insert(0, ROOT + os.sep + 'resources' + os.sep + 'contenters') searcherObject[searcher] = getattr(__import__(searcher), searcher)() -#print str(searcherObject[searcher].get_contentList(category='search', subcategory='Hobbit')) \ No newline at end of file +#print str(searcherObject[searcher].get_contentList(category='search', subcategory='Hobbit')) + +obj={u'error': None, u'id': 2, u'result': {u'type': u'dir', u'contents': {u'Suzumiya Haruhi no Yuuutsu (DVDrip)': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 160, u'offset': 10245278714L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 850603865}, u'Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 157, u'offset': 7404768960L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1124491250}, u'Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 158, u'offset': 8529260210L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 711015248}, u'Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 155, u'offset': 5236003762L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1063548449}, u'Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 156, u'offset': 6299552211L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1105216749}, u'Bonus': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'Pictures': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'_sister': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'sos0603.jpg': {u'index': 78, u'offset': 10926555, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0603.jpg', u'type': u'file', u'size': 86351}, u'sos0601.jpg': {u'index': 76, u'offset': 10710056, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0601.jpg', u'type': u'file', u'size': 108113}, u'sos0404.jpg': {u'index': 75, u'offset': 10601734, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0404.jpg', u'type': u'file', u'size': 108322}, u'sos1401.jpg': {u'index': 80, u'offset': 11103523, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos1401.jpg', u'type': u'file', u'size': 70265}, u'sos0402.jpg': {u'index': 73, u'offset': 10392920, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0402.jpg', u'type': u'file', u'size': 105312}, u'sos0401.jpg': {u'index': 72, u'offset': 10295655, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0401.jpg', u'type': u'file', u'size': 97265}, u'sos0403.jpg': {u'index': 74, u'offset': 10498232, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0403.jpg', u'type': u'file', u'size': 103502}, u'sos0604.jpg': {u'index': 79, u'offset': 11012906, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0604.jpg', u'type': u'file', u'size': 90617}, u'sos1402.jpg': {u'index': 81, u'offset': 11173788, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos1402.jpg', u'type': u'file', u'size': 97440}, u'sos0602.jpg': {u'index': 77, u'offset': 10818169, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_sister/sos0602.jpg', u'type': u'file', u'size': 108386}}, u'size': 975573}, u'_tsuruya': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'sos1202.jpg': {u'index': 90, u'offset': 12035252, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos1202.jpg', u'type': u'file', u'size': 87103}, u'sos0404.jpg': {u'index': 85, u'offset': 11578219, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0404.jpg', u'type': u'file', u'size': 100971}, u'sos0406.jpg': {u'index': 87, u'offset': 11754301, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0406.jpg', u'type': u'file', u'size': 93783}, u'sos0402.jpg': {u'index': 83, u'offset': 11373915, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0402.jpg', u'type': u'file', u'size': 108473}, u'sos0401.jpg': {u'index': 82, u'offset': 11271228, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0401.jpg', u'type': u'file', u'size': 102687}, u'sos0403.jpg': {u'index': 84, u'offset': 11482388, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0403.jpg', u'type': u'file', u'size': 95831}, u'sos0901.jpg': {u'index': 88, u'offset': 11848084, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0901.jpg', u'type': u'file', u'size': 88136}, u'sos0405.jpg': {u'index': 86, u'offset': 11679190, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos0405.jpg', u'type': u'file', u'size': 75111}, u'sos1201.jpg': {u'index': 89, u'offset': 11936220, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos1201.jpg', u'type': u'file', u'size': 99032}, u'sos1203.jpg': {u'index': 91, u'offset': 12122355, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_tsuruya/sos1203.jpg', u'type': u'file', u'size': 97216}}, u'size': 948343}, u'_MIKURU': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'sos0314.jpg': {u'index': 43, u'offset': 8104640, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0314.jpg', u'type': u'file', u'size': 118995}, u'sos0111.jpg': {u'index': 18, u'offset': 5935994, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0111.jpg', u'type': u'file', u'size': 81840}, u'sos0312.jpg': {u'index': 41, u'offset': 7864864, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0312.jpg', u'type': u'file', u'size': 117203}, u'sos0311.jpg': {u'index': 40, u'offset': 7759381, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0311.jpg', u'type': u'file', u'size': 105483}, u'sos0304.jpg': {u'index': 33, u'offset': 7114768, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0304.jpg', u'type': u'file', u'size': 83230}, u'sos0406.jpg': {u'index': 58, u'offset': 9352767, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0406.jpg', u'type': u'file', u'size': 63483}, u'sos0321.jpg': {u'index': 50, u'offset': 8733469, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0321.jpg', u'type': u'file', u'size': 92613}, u'sos0110.jpg': {u'index': 17, u'offset': 5868584, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0110.jpg', u'type': u'file', u'size': 67410}, u'sos0105.jpg': {u'index': 12, u'offset': 5462984, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0105.jpg', u'type': u'file', u'size': 70172}, u'sos0418.jpg': {u'index': 70, u'offset': 10163138, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0418.jpg', u'type': u'file', u'size': 67270}, u'sos0109.jpg': {u'index': 16, u'offset': 5794241, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0109.jpg', u'type': u'file', u'size': 74343}, u'sos0323.jpg': {u'index': 52, u'offset': 8905491, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0323.jpg', u'type': u'file', u'size': 81914}, u'sos0308.jpg': {u'index': 37, u'offset': 7432369, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0308.jpg', u'type': u'file', u'size': 83471}, u'sos0319.jpg': {u'index': 48, u'offset': 8563863, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0319.jpg', u'type': u'file', u'size': 81537}, u'sos0205.jpg': {u'index': 25, u'offset': 6528123, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0205.jpg', u'type': u'file', u'size': 75994}, u'sos0316.jpg': {u'index': 45, u'offset': 8310822, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0316.jpg', u'type': u'file', u'size': 80441}, u'sos0113.jpg': {u'index': 20, u'offset': 6090162, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0113.jpg', u'type': u'file', u'size': 80407}, u'sos0310.jpg': {u'index': 39, u'offset': 7643188, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0310.jpg', u'type': u'file', u'size': 116193}, u'sos0413.jpg': {u'index': 65, u'offset': 9839820, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0413.jpg', u'type': u'file', u'size': 79112}, u'sos0108.jpg': {u'index': 15, u'offset': 5701328, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0108.jpg', u'type': u'file', u'size': 92913}, u'sos0322.jpg': {u'index': 51, u'offset': 8826082, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0322.jpg', u'type': u'file', u'size': 79409}, u'sos0320.jpg': {u'index': 49, u'offset': 8645400, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0320.jpg', u'type': u'file', u'size': 88069}, u'sos0415.jpg': {u'index': 67, u'offset': 9972506, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0415.jpg', u'type': u'file', u'size': 57932}, u'sos0401.jpg': {u'index': 53, u'offset': 8987405, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0401.jpg', u'type': u'file', u'size': 77251}, u'sos0101.jpg': {u'index': 8, u'offset': 5148832, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0101.jpg', u'type': u'file', u'size': 72331}, u'sos0414.jpg': {u'index': 66, u'offset': 9918932, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0414.jpg', u'type': u'file', u'size': 53574}, u'sos0315.jpg': {u'index': 44, u'offset': 8223635, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0315.jpg', u'type': u'file', u'size': 87187}, u'sos0410.jpg': {u'index': 62, u'offset': 9622309, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0410.jpg', u'type': u'file', u'size': 74294}, u'sos0107.jpg': {u'index': 14, u'offset': 5607306, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0107.jpg', u'type': u'file', u'size': 94022}, u'sos0405.jpg': {u'index': 57, u'offset': 9280099, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0405.jpg', u'type': u'file', u'size': 72668}, u'sos0206.jpg': {u'index': 26, u'offset': 6604117, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0206.jpg', u'type': u'file', u'size': 77888}, u'sos0303.jpg': {u'index': 32, u'offset': 7047812, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0303.jpg', u'type': u'file', u'size': 66956}, u'sos0309.jpg': {u'index': 38, u'offset': 7515840, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0309.jpg', u'type': u'file', u'size': 127348}, u'sos0102.jpg': {u'index': 9, u'offset': 5221163, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0102.jpg', u'type': u'file', u'size': 79022}, u'sos0305.jpg': {u'index': 34, u'offset': 7197998, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0305.jpg', u'type': u'file', u'size': 57620}, u'sos0306.jpg': {u'index': 35, u'offset': 7255618, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0306.jpg', u'type': u'file', u'size': 81725}, u'sos0313.jpg': {u'index': 42, u'offset': 7982067, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0313.jpg', u'type': u'file', u'size': 122573}, u'sos0411.jpg': {u'index': 63, u'offset': 9696603, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0411.jpg', u'type': u'file', u'size': 70708}, u'sos0318.jpg': {u'index': 47, u'offset': 8466969, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0318.jpg', u'type': u'file', u'size': 96894}, u'sos0201.jpg': {u'index': 21, u'offset': 6170569, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0201.jpg', u'type': u'file', u'size': 97775}, u'sos0417.jpg': {u'index': 69, u'offset': 10093323, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0417.jpg', u'type': u'file', u'size': 69815}, u'sos0104.jpg': {u'index': 11, u'offset': 5383210, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0104.jpg', u'type': u'file', u'size': 79774}, u'sos0103.jpg': {u'index': 10, u'offset': 5300185, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0103.jpg', u'type': u'file', u'size': 83025}, u'sos0317.jpg': {u'index': 46, u'offset': 8391263, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0317.jpg', u'type': u'file', u'size': 75706}, u'sos0202.jpg': {u'index': 22, u'offset': 6268344, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0202.jpg', u'type': u'file', u'size': 96775}, u'sos0407.jpg': {u'index': 59, u'offset': 9416250, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0407.jpg', u'type': u'file', u'size': 73342}, u'sos0204.jpg': {u'index': 24, u'offset': 6445461, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0204.jpg', u'type': u'file', u'size': 82662}, u'sos0207.jpg': {u'index': 27, u'offset': 6682005, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0207.jpg', u'type': u'file', u'size': 77204}, u'sos0301.jpg': {u'index': 30, u'offset': 6907631, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0301.jpg', u'type': u'file', u'size': 73546}, u'sos0307.jpg': {u'index': 36, u'offset': 7337343, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0307.jpg', u'type': u'file', u'size': 95026}, u'sos0404.jpg': {u'index': 56, u'offset': 9217452, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0404.jpg', u'type': u'file', u'size': 62647}, u'sos0209.jpg': {u'index': 29, u'offset': 6829136, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0209.jpg', u'type': u'file', u'size': 78495}, u'sos0203.jpg': {u'index': 23, u'offset': 6365119, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0203.jpg', u'type': u'file', u'size': 80342}, u'sos0402.jpg': {u'index': 54, u'offset': 9064656, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0402.jpg', u'type': u'file', u'size': 75111}, u'sos0416.jpg': {u'index': 68, u'offset': 10030438, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0416.jpg', u'type': u'file', u'size': 62885}, u'sos0112.jpg': {u'index': 19, u'offset': 6017834, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0112.jpg', u'type': u'file', u'size': 72328}, u'sos0403.jpg': {u'index': 55, u'offset': 9139767, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0403.jpg', u'type': u'file', u'size': 77685}, u'sos0208.jpg': {u'index': 28, u'offset': 6759209, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0208.jpg', u'type': u'file', u'size': 69927}, u'sos0302.jpg': {u'index': 31, u'offset': 6981177, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0302.jpg', u'type': u'file', u'size': 66635}, u'sos0409.jpg': {u'index': 61, u'offset': 9570190, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0409.jpg', u'type': u'file', u'size': 52119}, u'sos0408.jpg': {u'index': 60, u'offset': 9489592, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0408.jpg', u'type': u'file', u'size': 80598}, u'sos0106.jpg': {u'index': 13, u'offset': 5533156, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0106.jpg', u'type': u'file', u'size': 74150}, u'sos0419.jpg': {u'index': 71, u'offset': 10230408, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0419.jpg', u'type': u'file', u'size': 65247}, u'sos0412.jpg': {u'index': 64, u'offset': 9767311, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_MIKURU/sos0412.jpg', u'type': u'file', u'size': 72509}}, u'size': 5146823}, u'_yuki': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'sos0603.jpg': {u'index': 97, u'offset': 12658155, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0603.jpg', u'type': u'file', u'size': 75600}, u'sos0601.jpg': {u'index': 95, u'offset': 12503942, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0601.jpg', u'type': u'file', u'size': 79973}, u'sos0602.jpg': {u'index': 96, u'offset': 12583915, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0602.jpg', u'type': u'file', u'size': 74240}, u'sos0701.jpg': {u'index': 98, u'offset': 12733755, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0701.jpg', u'type': u'file', u'size': 69675}, u'sos0702.jpg': {u'index': 99, u'offset': 12803430, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0702.jpg', u'type': u'file', u'size': 67043}, u'sos0402.jpg': {u'index': 93, u'offset': 12293909, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0402.jpg', u'type': u'file', u'size': 118517}, u'sos0401.jpg': {u'index': 92, u'offset': 12219571, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0401.jpg', u'type': u'file', u'size': 74338}, u'sos0501.jpg': {u'index': 94, u'offset': 12412426, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos0501.jpg', u'type': u'file', u'size': 91516}, u'sos1301.jpg': {u'index': 101, u'offset': 12946711, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos1301.jpg', u'type': u'file', u'size': 73247}, u'sos1201.jpg': {u'index': 100, u'offset': 12870473, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Pictures/_yuki/sos1201.jpg', u'type': u'file', u'size': 76238}}, u'size': 800387}}, u'size': 7871126}, u'Suzumiya Haruhi no Yuuutsu - Ending [BDRip 1920x1080 x264 FLAC].mkv': {u'index': 104, u'offset': 115526025, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Ending [BDRip 1920x1080 x264 FLAC].mkv', u'type': u'file', u'size': 62141298}, u'Suzumiya Haruhi no Yuuutsu - Creditless Ending [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 102, u'offset': 13019958, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Creditless Ending [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 28340050}, u'Suzumiya Haruhi no Yuuutsu - Full Final Dance [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 106, u'offset': 263037532, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Full Final Dance [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 49720618}, u'Suzumiya Haruhi no Yuuutsu - Creditless Opening [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 103, u'offset': 41360008, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Creditless Opening [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 74166017}, u'DVD menu': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'DVD menu (Vol 1).png': {u'index': 0, u'offset': 0, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 1).png', u'type': u'file', u'size': 630837}, u'DVD menu (Vol 8).png': {u'index': 7, u'offset': 4516838, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 8).png', u'type': u'file', u'size': 631994}, u'DVD menu (Vol 5).png': {u'index': 4, u'offset': 2574514, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 5).png', u'type': u'file', u'size': 651379}, u'DVD menu (Vol 3).png': {u'index': 2, u'offset': 1279861, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 3).png', u'type': u'file', u'size': 653664}, u'DVD menu (Vol 2).png': {u'index': 1, u'offset': 630837, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 2).png', u'type': u'file', u'size': 649024}, u'DVD menu (Vol 7).png': {u'index': 6, u'offset': 3872371, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 7).png', u'type': u'file', u'size': 644467}, u'DVD menu (Vol 6).png': {u'index': 5, u'offset': 3225893, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 6).png', u'type': u'file', u'size': 646478}, u'DVD menu (Vol 4).png': {u'index': 3, u'offset': 1933525, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/DVD menu/DVD menu (Vol 4).png', u'type': u'file', u'size': 640989}}, u'size': 5148832}, u'Suzumiya Haruhi no Yuuutsu - Ep00 Creditless Opening [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 105, u'offset': 177667323, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Ep00 Creditless Opening [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 85370209}, u'Suzumiya Haruhi no Yuuutsu - Opening [BDRip 1920x1080 x264 FLAC].mkv': {u'index': 107, u'offset': 312758150, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Bonus/Suzumiya Haruhi no Yuuutsu - Opening [BDRip 1920x1080 x264 FLAC].mkv', u'type': u'file', u'size': 175713891}}, u'size': 488472041}, u'Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 154, u'offset': 4351286140L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 884717622}, u'Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 163, u'offset': 13005593834L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 790099955}, u'Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 159, u'offset': 9240275458L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1005003256}, u'Rus Subs [Reanimedia]': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 137, u'offset': 1625227782, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 90921}, u'Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 140, u'offset': 1625441397, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 65895}, u'Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 139, u'offset': 1625388448, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 52949}, u'fonts.rar': {u'index': 136, u'offset': 1624799415, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/fonts.rar', u'type': u'file', u'size': 428367}, u'Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 147, u'offset': 1625872999, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 52060}, u'Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 141, u'offset': 1625507292, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 64125}, u'Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 149, u'offset': 1625994217, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 60954}, u'\u043d\u0430\u0434\u043f\u0438\u0441\u0438': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 122, u'offset': 1624642278, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 39434}, u'Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 125, u'offset': 1624697503, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 7862}, u'Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 124, u'offset': 1624690003, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 7500}, u'Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 131, u'offset': 1624766995, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 6130}, u'Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 132, u'offset': 1624773125, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 3884}, u'Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 126, u'offset': 1624705365, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 13449}, u'Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 134, u'offset': 1624790129, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 6338}, u'Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 123, u'offset': 1624681712, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 8291}, u'Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 127, u'offset': 1624718814, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 3094}, u'Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 133, u'offset': 1624777009, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 13120}, u'Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 129, u'offset': 1624730304, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 32881}, u'Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 130, u'offset': 1624763185, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 3810}, u'Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 135, u'offset': 1624796467, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 2948}, u'Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 128, u'offset': 1624721908, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/\u043d\u0430\u0434\u043f\u0438\u0441\u0438/Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 8396}}, u'size': 157137}, u'Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 138, u'offset': 1625318703, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 69745}, u'Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 142, u'offset': 1625571417, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 55853}, u'Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 148, u'offset': 1625925059, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 69158}, u'Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 144, u'offset': 1625680402, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 80659}, u'Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 145, u'offset': 1625761061, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 56813}, u'Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 150, u'offset': 1626055171, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 44401}, u'Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 146, u'offset': 1625817874, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 55125}, u'Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].ass': {u'index': 143, u'offset': 1625627270, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Subs [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].ass', u'type': u'file', u'size': 53132}}, u'size': 1457294}, u'Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 153, u'offset': 3661976011L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 689310129}, u'Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 152, u'offset': 2829426454L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 832549557}, u'Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 162, u'offset': 12209071015L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 796522819}, u'Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 151, u'offset': 1626099572, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1203326882}, u'Rus Sound [Reanimedia]': {u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]', u'progresses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], u'type': u'dir', u'contents': {u'Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 113, u'offset': 900041122, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 82543098}, u'Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 116, u'offset': 1142844426, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 08 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 82456987}, u'Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 121, u'offset': 1545744673, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 78897605}, u'Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 114, u'offset': 982584220, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 06 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 80614499}, u'Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 115, u'offset': 1063198719, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 07 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 79645707}, u'Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 108, u'offset': 488472041, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 00 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 82535932}, u'Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 120, u'offset': 1466063097, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 12 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 79681576}, u'Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 112, u'offset': 818633651, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 04 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 81407471}, u'Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 118, u'offset': 1305078090, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 79672616}, u'Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 119, u'offset': 1384750706, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 11 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 81312391}, u'Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 117, u'offset': 1225301413, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 09 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 79776677}, u'Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 109, u'offset': 571007973, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 01 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 83971144}, u'Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 111, u'offset': 734649941, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 03 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 83983710}, u'Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].mka': {u'index': 110, u'offset': 654979117, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Rus Sound [Reanimedia]/Suzumiya Haruhi no Yuuutsu - 02 [DVDrip 1280x720 x264 FLAC].mka', u'type': u'file', u'size': 79670824}}, u'size': 1136170237}, u'Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 164, u'offset': 13795693789L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 13 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 922761906}, u'Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].mkv': {u'index': 161, u'offset': 11095882579L, u'priority': 1, u'progress': 0.0, u'path': u'Suzumiya Haruhi no Yuuutsu (DVDrip)/Suzumiya Haruhi no Yuuutsu - 10 [DVDrip 1280x720 x264 FLAC].mkv', u'type': u'file', u'size': 1113188436}}, u'size': 14718455695L}}}} + +#obj=json.loads(x) +obj=obj['result'] + + + +res=[1,2,3,4,5] +res.pop(2) +res.insert(2,3) +print str(res) diff --git a/changelog.txt b/changelog.txt index 72ca89d..e138bf0 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,12 @@ -[B]Version 2.1.0[/B] +[B]Version 2.1.2[/B] +[+] Торрент-клиент: Поддержка Deluge WebUI (No SSL) +[+] История Поиска: Возможность изменять с помощью клавиатуры +[+] Поиска: Настройка выбора действия вместо Открытия торрента + +[B]Version 2.1.1[/B] +[+] Проигрыватель: Опция продолжать сидировать после просмотра + +[B]Version 2.1.0[/B] [+] Загрузка: Добавлена возможность управлять закачками, а так же возобновлять [+] Поиск: Возможность замены открытия торрента на вызов контекстного меню @@ -41,7 +49,7 @@ [+] Rutor, OpenSharing, OldPirateBay переведены на .torrent с магнит-ссылок [B]Version 2.0.2[/B] -[+] Отображение статуса загрузки при паузе +[+] Проигрыватель: Отображение статуса загрузки при паузе [B]Version 2.0.1[/B] [+] Увеличен буфер для файлов более 1 ГБ diff --git a/functions.py b/functions.py index 9e89165..b8714d5 100644 --- a/functions.py +++ b/functions.py @@ -1071,7 +1071,7 @@ class Contenters(): pass def first_time(self, scrapperDB_ver, language='ru'): - searcher = 'metadata'+language + searcher = 'metadata' redl = False scrapperDB_ver=scrapperDB_ver[language] if scrapperDB_ver != __settings__.getSetting('scrapperDB_ver'+language) and self.getBoolSetting(searcher): @@ -1092,8 +1092,8 @@ class Contenters(): Localization.localize( 'You can always restart this by deleting DBs via Context Menu'), ) - if not self.getBoolSetting('oldc_' + searcher): - self.setBoolSetting('oldc_' + searcher, True) + if not self.getBoolSetting('oldc_' + searcher + language): + self.setBoolSetting('oldc_' + searcher+ language, True) __settings__.setSetting('scrapperDB_ver'+language, scrapperDB_ver) ok = xbmcgui.Dialog().yesno('< %s >' % Localization.localize('Content Lists'), Localization.localize('Do you want to search and cache full metadata + arts?'), diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml index 858b8ce..9b14fdf 100644 --- a/resources/language/English/strings.xml +++ b/resources/language/English/strings.xml @@ -31,7 +31,11 @@ Ask to change storage before play Delete Russian stuff Return Russian stuff - Open context menu instead of torrent + Action onClick for torrent + Open Torrent File + Open Context Menu + Download via Torrent-client + Download via Python-Libtorrent (Download Status) Interface P2P Network Advanced diff --git a/resources/language/Russian/strings.xml b/resources/language/Russian/strings.xml index 0726e6c..6533e1b 100644 --- a/resources/language/Russian/strings.xml +++ b/resources/language/Russian/strings.xml @@ -31,7 +31,11 @@ Предлагать изменить место хранения Удалить русские трекеры Вернуть русские трекеры - Открывать контекстное меню вместо торрента + Действие при нажатии на торрент + Открыть Торрент Файл + Открыть Контекстное меню + Скачать Торрент-клиентом + Скачать Python-Libtorrent Интерфейс P2P Сеть Дополнительные diff --git a/resources/settings.xml b/resources/settings.xml index 556f5d1..652aa68 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -27,10 +27,11 @@ default="1" /> @@ -134,7 +135,7 @@ - @@ -151,5 +152,9 @@ + + + + diff --git a/resources/utorrent/net.py b/resources/utorrent/net.py index 419d876..24f8724 100644 --- a/resources/utorrent/net.py +++ b/resources/utorrent/net.py @@ -459,6 +459,10 @@ class UTorrent: return True if obj else None + def setprio_simple_multi(self, menu): + for hash, action, ind in menu: + self.setprio_simple(hash, action, ind) + def delete(self, id): pass @@ -751,6 +755,22 @@ class Transmission: return True if res else None + def setprio_simple_multi(self, menu): + id=menu[0][0] + prio=menu[0][1] + + inds=[] + for hash, action, ind in menu: + inds.append(int(ind)) + + if prio == '3': + res = self.action( + {"method": "torrent-set", "arguments": {"ids": [int(id)], "priority-high": inds, "files-wanted": inds}}) + elif prio == '0': + res = self.action({"method": "torrent-set", + "arguments": {"ids": [int(id)], "priority-high": inds, "files-unwanted": inds}}) + return True if res else None + def action(self, request): try: jsobj = json.dumps(request) @@ -842,17 +862,13 @@ class Deluge: self.http = HTTP() - self.token = '0' + def get_info(self): + obj = self.action({"method":"web.update_ui", + "params":[[],{}],"id":1}) + return obj def list(self): - obj = self.action({"method":"web.update_ui", - "params":[["queue","name","total_wanted","state","progress", - "num_seeds","total_seeds","num_peers","total_peers", - "download_payload_rate","upload_payload_rate","eta", - "ratio","distributed_copies","is_auto_managed", - "time_added","tracker_host","save_path","total_done", - "total_uploaded","max_download_speed","max_upload_speed", - "seeds_peers_ratio"],{}],"id":1}) + obj=self.get_info() if obj is None: return False @@ -860,7 +876,7 @@ class Deluge: if len(obj['result'].get('torrents'))>0: for k in obj['result'].get('torrents').keys(): r=obj['result']['torrents'][k] - res.append({ + add={ 'id': str(k), 'status': self.get_status(r['state']), 'name': r['name'], @@ -876,89 +892,34 @@ class Deluge: 'seed': r['num_seeds'], 'leech': r['num_peers'], 'add': r['time_added'], - #'finish': r['doneDate'], 'dir': r['save_path'] - }) - - '''if len(r['fileStats']) > 1: - res.append({ - 'id': str(r['id']), - 'status': self.get_status(r['status']), - 'name': r['name'], - 'size': r['totalSize'], - 'progress': 0 if not r['sizeWhenDone'] else int( - 100.0 * float(r['sizeWhenDone'] - r['leftUntilDone']) / float(r['sizeWhenDone'])), - 'download': r['downloadedEver'], - 'upload': r['uploadedEver'], - 'upspeed': r['rateUpload'], - 'downspeed': r['rateDownload'], - 'ratio': float(r['uploadRatio']), - 'eta': r['eta'], - 'peer': r['peersConnected'], - 'seed': r['peersSendingToUs'], - 'leech': r['peersGettingFromUs'], - 'add': r['addedDate'], - 'finish': r['doneDate'], - 'dir': os.path.join(r['downloadDir'], r['name']) - }) - else: - res.append({ - 'id': str(r['id']), - 'status': self.get_status(r['status']), - 'name': r['name'], - 'size': r['totalSize'], - 'progress': 0 if not r['sizeWhenDone'] else int( - 100.0 * float(r['sizeWhenDone'] - r['leftUntilDone']) / float(r['sizeWhenDone'])), - 'download': r['downloadedEver'], - 'upload': r['uploadedEver'], - 'upspeed': r['rateUpload'], - 'downspeed': r['rateDownload'], - 'ratio': float(r['uploadRatio']), - 'eta': r['eta'], - 'peer': r['peersConnected'], - 'seed': r['peersSendingToUs'], - 'leech': r['peersGettingFromUs'], - 'add': r['addedDate'], - 'finish': r['doneDate'], - 'dir': r['downloadDir'] - })''' - + } + if len(r['files'])>1: add['dir']=os.path.join(r['save_path'],r['name']) + res.append(add) return res def listdirs(self): - obj = self.action({'method': 'session-get'}) + obj = self.action({"method":"core.get_config","params":[],"id":5}) if obj is None: return False - res = [obj['arguments'].get('download-dir')] - # Debug('[Transmission][listdirs]: %s' % (str(res))) + res = [obj['result'].get('download_location')] return res, res def listfiles(self, id): - obj = self.action({"method":"web.get_torrent_files","params":[id],"id":2}) + obj = self.get_info() if obj is None: return None - print str(obj) - res = [] - i = -1 - obj=obj['result'] + obj=obj['result']['torrents'][id] + #print str(obj) + if len(obj['files'])==1: + strip_path=None + else: + strip_path=obj['name'] - content=obj['contents'] - while content.get('contents'): - for k in obj['contents'].keys(): - - res_new, i=self.contents(obj['contents']) - res.extend(res_new) - return res - - def contents(self, contents={}, i=-1): - res = [] - i = -1 - for k in contents.keys(): - x=contents[k] - i += 1 + for x in obj['files']: if x['size'] >= 1024 * 1024 * 1024: size = str(x['size'] / (1024 * 1024 * 1024)) + 'GB' elif x['size'] >= 1024 * 1024: @@ -967,62 +928,92 @@ class Deluge: size = str(x['size'] / 1024) + 'KB' else: size = str(x['size']) + 'B' - res.append([x['path'], round(x['progress'], 2), i, size]) + if strip_path: + path=x['path'].lstrip(strip_path).lstrip('/') + else: + path=x['path'] - return res, i + if x.get('progress'): + percent=int(x['progress']*100) + else:percent=0 + + res.append([path, percent, x['index'], size]) + + return res + + def get_prio(self, id): + obj = self.get_info() + if obj is None: + return None + res=obj['result']['torrents'][id]['file_priorities'] + return res def add(self, torrent, dirname): - if self.action({'method': 'torrent-add', - 'arguments': {'download-dir': dirname, 'metainfo': base64.b64encode(torrent)}}) is None: + torrentFile=os.path.join(self.http._dirname,'deluge.torrent') + if self.action({'method': 'core.add_torrent_file', + 'params': [torrentFile, + base64.b64encode(torrent), {"download_path": dirname}],"id":3}) is None: return None return True def add_url(self, torrent, dirname): - if self.action({'method': 'torrent-add', 'arguments': {'download-dir': dirname, 'filename': torrent}}) is None: - return None + if re.match("^magnet\:.+$", torrent): + if self.action({'method': 'core.add_torrent_magnet', 'params':[torrent, + {'download_path': dirname}],"id":3}) is None: + return None + else: + if self.action({"method": "core.add_torrent_url", "params":[torrent, {'download_path': dirname}],"id":3}) is None: + return None return True def delete(self, id): pass def setprio(self, id, ind): - obj = self.action({"method": "torrent-get", "arguments": {"fields": ["id", "fileStats", "files"], - "ids": [int(id)]}})['arguments']['torrents'][0] - if not obj or ind == None: - return None - - inds = [] i = -1 + prios=self.get_prio(id) - for x in obj['fileStats']: - i += 1 - if x['wanted'] == True and x['priority'] == 0: - inds.append(i) + for p in prios: + i=i+1 + if p==1: + prios.pop(i) + prios.insert(i,0) - if len(inds) > 1: self.action( - {"method": "torrent-set", "arguments": {"ids": [int(id)], "priority-high": inds, "files-unwanted": inds}}) + prios.pop(int(ind)) + prios.insert(int(ind),7) - res = self.setprio_simple(id, '3', ind) + if self.action({"method": "core.set_torrent_file_priorities", "params":[id, prios],"id":6}) is None: + return None - # self.action_simple('start',id) - - return True if res else None + return True def setprio_simple(self, id, prio, ind): - if ind == None: + prios=self.get_prio(id) + + if ind!=None: + prios.pop(int(ind)) + if prio == '3': + prios.insert(int(ind),7) + elif prio == '0': + prios.insert(int(ind),0) + + if self.action({"method": "core.set_torrent_file_priorities", "params":[id, prios],"id":6}) is None: return None + return True - res = None - inds = [int(ind)] + def setprio_simple_multi(self, menu): + id=menu[0][0] + prios=self.get_prio(id) - if prio == '3': - res = self.action( - {"method": "torrent-set", "arguments": {"ids": [int(id)], "priority-high": inds, "files-wanted": inds}}) - elif prio == '0': - res = self.action({"method": "torrent-set", - "arguments": {"ids": [int(id)], "priority-high": inds, "files-unwanted": inds}}) + for hash, action, ind in menu: + prios.pop(int(ind)) + if action == '3': + prios.insert(int(ind),7) + elif action == '0': + prios.insert(int(ind),0) - return True if res else None + if self.action({"method": "core.set_torrent_file_priorities", "params":[id, prios],"id":6}) is None: + return None def action(self, request): cookie = self.get_auth() @@ -1034,30 +1025,26 @@ class Deluge: except: return None else: + response = self.http.fetch(self.url + '/json', method='POST', params=jsobj, + headers={'X-Requested-With': 'XMLHttpRequest', 'Cookie': cookie, + 'Content-Type': 'application/json; charset=UTF-8'}) - while True: - # пробуем сделать запрос - response = self.http.fetch(self.url + '/json', method='POST', params=jsobj, - headers={'X-Requested-With': 'XMLHttpRequest', 'Cookie': cookie, - 'Content-Type': 'application/json; charset=UTF-8'}) + if response.error: + return None - if response.error: + else: + try: + obj = json.loads(response.body) + except: return None - else: - try: - obj = json.loads(response.body) - except: - return None - else: - return obj + return obj def action_simple(self, action, id): - actions = {'start': {"method": "torrent-start", "arguments": {"ids": [int(id)]}}, - 'stop': {"method": "torrent-stop", "arguments": {"ids": [int(id)]}}, - 'remove': {"method": "torrent-remove", "arguments": {"ids": [int(id)], "delete-local-data": False}}, - 'removedata': {"method": "torrent-remove", - "arguments": {"ids": [int(id)], "delete-local-data": True}}} + actions = {'start': {"method":"core.resume_torrent","params":[[id]],"id":4}, + 'stop': {"method":"core.pause_torrent","params":[[id]],"id":4}, + 'remove': {"method":"core.remove_torrent","params":[id, False],"id":4}, + 'removedata': {"method":"core.remove_torrent", "params":[id, True],"id":4}} obj = self.action(actions[action]) return True if obj else None @@ -1073,20 +1060,17 @@ class Deluge: if auth["result"]==False: return False else: - # _session_id=7167aae78e7cbdff694571f640ee2cd02351 r = re.compile('_session_id=([^;]+);').search(response.headers.get('set-cookie', '')) if r: cookie = r.group(1).strip() return '_session_id=' + cookie - - def get_status(self, code): mapping = { 'Queued': 'stopped', - 'Error': 'check_pending', + 'Error': 'stopped', 'Checking': 'checking', - 'Paused': 'download_pending', + 'Paused': 'seed_pending', 'Downloading': 'downloading', 'Active': 'seed_pending', 'Seeding': 'seeding' @@ -1228,6 +1212,10 @@ class Vuze: time.sleep(0.1) return True if obj else None + def setprio_simple_multi(self, menu): + for hash, action, ind in menu: + self.setprio_simple(hash, action, ind) + def action_simple(self, action, id): torrent = self.downloads[int(id)] obj = None @@ -1340,5 +1328,8 @@ class Download(): # Debug('[setprio_simple] '+str((id, prio, ind))) return self.client.setprio_simple(id, prio, ind) + def setprio_simple_multi(self, prio_list): + return self.client.setprio_simple_multi(prio_list) + def action_simple(self, action, id): return self.client.action_simple(action, id)