diff --git a/Core.py b/Core.py index 541a1d6..9278334 100644 --- a/Core.py +++ b/Core.py @@ -1101,11 +1101,13 @@ class Core: view_style('searchOption') xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) - def drawItem(self, title, action, link='', image='', isFolder=True, contextMenu=None, replaceMenu=True, action2='', + def drawItem(self, title, action, link='', image='', isFolder=True, contextMenu=None, replaceMenu=True, action2='', fileSize=0L, info={}): listitem = xbmcgui.ListItem(title, iconImage=image, thumbnailImage=image) #log('[drawItem]:'+str((title, action, image, isFolder, contextMenu, replaceMenu, action2, info))) if not info: info = {"Title": title, "plot": title} + if not isFolder and fileSize: + info['size'] = fileSize if isinstance(link, dict): link_url = '' for key in link.keys(): @@ -1465,14 +1467,19 @@ class Core: if not torrent: torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory) self.__settings__.setSetting("lastTorrent", torrent.saveTorrent(url)) - + + append_filesize = self.__settings__.getSetting("append_filesize") == 'true' + hasSize = False contentList = [] for filedict in torrent.getContentList(): fileTitle = filedict.get('title') - if filedict.get('size'): - fileTitle += ' [%d MB]' % (filedict.get('size') / 1024 / 1024) - contentList.append((unescape(fileTitle), str(filedict.get('ind')))) - contentList = sorted(contentList, key=lambda x: x[0]) + size = filedict.get('size') + if size: + if append_filesize: + fileTitle += ' [%d MB]' % (size / 1024 / 1024) + hasSize = True + contentList.append((unescape(fileTitle), str(filedict.get('ind')), size)) + #contentList = sorted(contentList, key=lambda x: x[0]) dirList, contentListNew = cutFolder(contentList, tdir) @@ -1486,7 +1493,7 @@ class Core: for identifier in ids_video_result: ids_video = ids_video + str(identifier) + ',' - for title, identifier in contentListNew: + for title, identifier, filesize in contentListNew: contextMenu = [ (self.localize('Download via T-client'), 'XBMC.RunPlugin(%s)' % ('%s?action=%s&ind=%s') % ( @@ -1497,9 +1504,20 @@ class Core: ] link = {'url': identifier, 'thumbnail': thumbnail, 'save_folder':save_folder} self.drawItem(title, 'playTorrent', link, image=thumbnail, isFolder=False, - action2=ids_video.rstrip(','), contextMenu=contextMenu, replaceMenu=False) + action2=ids_video.rstrip(','), contextMenu=contextMenu, replaceMenu=False, fileSize=filesize) view_style('openTorrent') - xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) + p_handle = int(sys.argv[1]) + try: + xbmcplugin.addSortMethod(p_handle, xbmcplugin.SORT_METHOD_LABEL) + if hasSize: + xbmcplugin.addSortMethod(p_handle, xbmcplugin.SORT_METHOD_SIZE) + xbmc.executebuiltin("Container.SetSortMethod(%s)" % str(1)) + #xbmc.executebuiltin("Container.SetSortDirection()") + except: + log(' !!!! >>>> Faild to set sorting method to ' + str(xbmcplugin.SORT_METHOD_SIZE)) + pass + + xbmcplugin.endOfDirectory(p_handle, succeeded=True) def openSection(self, params={}): get = params.get diff --git a/Libtorrent.py b/Libtorrent.py index 220e31d..8a6fabc 100644 --- a/Libtorrent.py +++ b/Libtorrent.py @@ -96,7 +96,9 @@ class Libtorrent: torrentUrl) + '.torrent' try: if not re.match("^http\:.+$", torrentUrl): - content = xbmcvfs.File(torrentUrl, "rb").read() + contentFile = xbmcvfs.File(torrentUrl, "rb") + content = contentFile.read() + contentFile.close() else: request = urllib2.Request(torrentUrl) request.add_header('Referer', torrentUrl) @@ -126,30 +128,7 @@ class Libtorrent: self.torrentFile = torrentFile return self.torrentFile - #baseName = localize_path(os.path.basename(self.getFilePath())) - #if not xbmcvfs.exists(self.torrentFilesPath): - # xbmcvfs.mkdirs(self.torrentFilesPath) - #newFile = self.torrentFilesPath + self.md5( - # torrentUrl) + '.torrent' #self.md5(baseName) + '.' + - #if xbmcvfs.exists(newFile): - # log('saveTorrent: delete file ' + newFile) - # xbmcvfs.delete(newFile) - #if not xbmcvfs.exists(newFile): - # try: - # renamed = xbmcvfs.rename(torrentFile, newFile) - # log('saveTorrent: xbmcvfs.rename %s %s to %s' %(torrentFile, newFile, str(renamed))) - # except Exception, e: - # log('Unable to rename torrent file from %s to %s in Torrent::renameTorrent. Exception: %s' % - # (torrentFile, newFile, str(e))) - # return - #self.torrentFile = newFile - #if not self.torrentFileInfo: - # e=self.lt.bdecode(xbmcvfs.File(self.torrentFile,'rb').read()) - # self.torrentFileInfo = self.lt.torrent_info(e) - # log('torrentFileInfo (saveTorrent2)=' + str(self.torrentFileInfo)) - - #return self.torrentFile - + def getMagnetInfo(self): magnetSettings = { 'url': self.magnetLink, diff --git a/functions.py b/functions.py index 45e5801..dc26d3c 100644 --- a/functions.py +++ b/functions.py @@ -428,13 +428,16 @@ def cutFolder(contentList, tdir=None): common_folder = common_folder.split('/')[0] common = True - for fileTitle, contentId in contentList: + for item in contentList: + fileTitle = item[0] if common_folder not in fileTitle: common = False break # print common_folder - for fileTitle, contentId in contentList: + for item in contentList: + fileTitle = item[0] + contentId = item[1] dir = None if common: fileTitle = fileTitle[len(common_folder) + 1:] @@ -446,10 +449,12 @@ def cutFolder(contentList, tdir=None): elif '/' in fileTitle: dir = fileTitle.split('/')[0] elif not tdir: - contentListNew.append((fileTitle, contentId)) + contentListNew.append(item) if tdir and dir == tdir: - contentListNew.append((fileTitle[len(dir) + 1:], contentId)) + tupleContent = list(item) + tupleContent[0] = fileTitle[len(dir) + 1:] + contentListNew.append(tuple(tupleContent)) if not tdir and dir and dir not in dirList: dirList.append(dir) @@ -1711,7 +1716,9 @@ def get_ids_video(contentList): 'fli', 'flc', 'm4v', 'iso'] allowed_music_ext = ['mp3', 'flac', 'wma', 'ogg', 'm4a', 'aac', 'm4p', 'rm', 'ra'] for extlist in [allowed_video_ext, allowed_music_ext]: - for title, identifier in contentList: + for item in contentList: + title = item[0] + identifier = item[1] try: ext = title.split('.')[-1] if ext.lower() in extlist: diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml index f76c42b..39e3cb3 100644 --- a/resources/language/English/strings.xml +++ b/resources/language/English/strings.xml @@ -66,6 +66,7 @@ Confluence (by safonov_ivan) Aeon Nox (by joyrider) pyrrent2http (python-libtorrent via http) + Append size to file name Interface P2P Network Advanced diff --git a/resources/language/Russian/strings.xml b/resources/language/Russian/strings.xml index a4351d8..a6be9a9 100644 --- a/resources/language/Russian/strings.xml +++ b/resources/language/Russian/strings.xml @@ -1,4 +1,4 @@ - + Язык интерфейса Удерживать стиль отображения @@ -66,6 +66,7 @@ Confluence (от safonov_ivan) Aeon Nox (от joyrider) pyrrent2http (python-libtorrent по http) + Добавлять размер к имени файла Интерфейс P2P Сеть Дополнительные diff --git a/resources/settings.xml b/resources/settings.xml index 1dc796b..4c65b91 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -6,6 +6,7 @@ +