diff --git a/Anteoloader.py b/Anteoloader.py index b2a67cc..1a8fb31 100644 --- a/Anteoloader.py +++ b/Anteoloader.py @@ -2,6 +2,7 @@ ''' Torrenter v2 plugin for XBMC/Kodi Copyright (C) 2012-2015 Vadim Skorba v1 - DiMartino v2 + https://forums.tvaddons.ag/addon-releases/29224-torrenter-v2.html 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 @@ -29,7 +30,7 @@ import xbmcgui import xbmcvfs import xbmcaddon import Localization -from functions import localize_path, isSubtitle, is_writable, file_url +from functions import file_encode, isSubtitle, DownloadDB, log, debug, is_writable, unquote, file_url import os @@ -40,16 +41,10 @@ from contextlib import contextmanager, closing, nested from functions import foldername, showMessage, clearStorage, WatchedHistoryDB, get_ids_video, log, debug, ensure_str -#if sys.modules["__main__"].__settings__.getSetting("torrent_player") == '2': from torrent2http import State, Engine, MediaType author = 'Anteo' __settings__ = xbmcaddon.Addon(id='script.module.torrent2http') __version__ = __settings__.getAddonInfo('version') -#elif sys.modules["__main__"].__settings__.getSetting("torrent_player") == '3': -# from pyrrent2http import State, Engine, MediaType -# author = 'Inpos' -# __settings__ = xbmcaddon.Addon(id='script.module.pyrrent2http') -# __version__ = __settings__.getAddonInfo('version') ROOT = sys.modules["__main__"].__root__ RESOURCES_PATH = os.path.join(ROOT, 'resources') @@ -165,7 +160,7 @@ class AnteoLoader: self.setup_engine() files = [] filelist = [] - try: + with closing(self.engine): self.engine.start() #media_types=[MediaType.VIDEO, MediaType.AUDIO, MediaType.SUBTITLES, MediaType.UNKNOWN] @@ -192,11 +187,6 @@ class AnteoLoader: stringdata = {"title": ensure_str(fs.name), "size": fs.size, "ind": fs.index, 'offset': fs.offset} filelist.append(stringdata) - except: - import traceback - log(traceback.format_exc()) - finally: - self.engine.close() return filelist def saveTorrent(self, torrentUrl): @@ -255,7 +245,7 @@ class AnteoLoader: self.torrentFile = torrent.torrentFile except: self.torrentFile = magnet - log('['+author+'Loader][magnetToTorrent]: self.torrentFile '+str(self.torrentFile)) + log('[AnteoLoader][magnetToTorrent]: self.torrentFile '+str(self.torrentFile)) class AnteoPlayer(xbmc.Player): __plugin__ = sys.modules["__main__"].__plugin__ @@ -286,22 +276,23 @@ class AnteoPlayer(xbmc.Player): self.contentId = int(self.get("url")) if self.get("seek"): self.seek = int(self.get("seek")) + #self.torrent = AnteoLoader(self.userStorageDirectory, self.torrentUrl, self.torrentFilesDirectory) self.init() self.setup_engine() - try: + with closing(self.engine): self.engine.start(self.contentId) self.setup_nextep() while True: if self.buffer(): - log('['+author+'Player]: ************************************* GOING LOOP') + log('[AnteoPlayer]: ************************************* GOING LOOP') if self.setup_play(): self.setup_subs() self.loop() WatchedHistoryDB().add(self.basename, foldername(self.getContentList()[self.contentId]['title']), self.watchedTime, self.totalTime, self.contentId, self.fullSize) else: - log('['+author+'Player]: ************************************* break') + log('[AnteoPlayer]: ************************************* break') break - log('['+author+'Player]: ************************************* GO NEXT?') + log('[AnteoPlayer]: ************************************* GO NEXT?') if self.next_dl and self.next_contentId != False and isinstance(self.next_contentId, int) and self.iterator == 100: if not self.next_play: xbmc.sleep(3000) @@ -311,13 +302,9 @@ class AnteoPlayer(xbmc.Player): break self.contentId = self.next_contentId continue - log('['+author+'Player]: ************************************* NO! break') + + log('[AnteoPlayer]: ************************************* NO! break') break - except: - import traceback - log(traceback.format_exc()) - finally: - self.engine.close() xbmc.Player().stop() @@ -386,7 +373,6 @@ class AnteoPlayer(xbmc.Player): dht_routers = ["router.bittorrent.com:6881","router.utorrent.com:6881"] user_agent = 'uTorrent/2200(24683)' self.pre_buffer_bytes = int(self.__settings__.getSetting("pre_buffer_bytes"))*1024*1024 - #showMessage('[%sPlayer v%s] ' % (author, __version__), self.localize('Please Wait')) self.engine = Engine(uri=file_url(self.torrentUrl), download_path=self.userStorageDirectory, connections_limit=connections_limit, download_kbps=download_limit, upload_kbps=upload_limit, @@ -470,7 +456,7 @@ class AnteoPlayer(xbmc.Player): else: self.next_dl = False self.next_play = self.__settings__.getSetting('next_play') == 'true' - log('['+author+'Player]: next_dl - %s, next_play - %s, ids_video - %s' % (str(self.next_dl), str(self.next_play), str(self.ids_video))) + log('[AnteoPlayer]: next_dl - %s, next_play - %s, ids_video - %s' % (str(self.next_dl), str(self.next_play), str(self.ids_video))) def setup_play(self): file_status = self.engine.file_status(self.contentId) @@ -489,7 +475,7 @@ class AnteoPlayer(xbmc.Player): self.next_contentId = int(self.ids_video[next_contentId_index]) else: self.next_contentId = False - log('['+author+'Player][setup_play]: next_contentId: '+str(self.next_contentId)) + log('[AnteoPlayer][setup_play]: next_contentId: '+str(self.next_contentId)) try: seasonId = self.get("seasonId") self.episodeId = self.get("episodeId") if not self.episodeId else int(self.episodeId) + 1 @@ -509,7 +495,7 @@ class AnteoPlayer(xbmc.Player): 'season': int(seasonId), 'tvshowtitle': title}) except: - log('['+author+'Player]: Operation INFO failed!') + log('[AnteoPlayer]: Operation INFO failed!') thumbnail = self.get("thumbnail") if thumbnail: @@ -525,12 +511,12 @@ class AnteoPlayer(xbmc.Player): xbmc.sleep(200) i += 1 - log('['+author+'Player]: self.isPlaying() = %s, i = %d, xbmc.abortRequested - %s' % (str(self.isPlaying()), i, str(xbmc.abortRequested))) + log('[AnteoPlayer]: self.isPlaying() = %s, i = %d, xbmc.abortRequested - %s' % (str(self.isPlaying()), i, str(xbmc.abortRequested))) if not self.isPlaying() or xbmc.abortRequested: return False if self.seek > 0: - log('['+author+'Player]: seekTime - '+str(self.seek)) + log('[AnteoPlayer]: seekTime - '+str(self.seek)) self.seekTime(self.seek) return True @@ -544,7 +530,7 @@ class AnteoPlayer(xbmc.Player): if isSubtitle(filename, i.name): subs.append(i) if subs: - log("["+author+"Player][setup_subs]: Detected subtitles: %s" % str(subs)) + log("[AnteoPlayer][setup_subs]: Detected subtitles: %s" % str(subs)) for sub in subs: xbmc.Player().setSubtitles(sub.url) @@ -612,7 +598,7 @@ class AnteoPlayer(xbmc.Player): def _get_status_lines(self, s, f): return [ - ensure_str(self.display_name), + self.display_name, "%.2f%% %s" % (f.progress * 100, self.localize(STATE_STRS[s.state]).decode('utf-8')), "D:%.2f%s U:%.2f%s S:%d P:%d" % (s.download_rate, self.localize('kb/s').decode('utf-8'), s.upload_rate, self.localize('kb/s').decode('utf-8'), @@ -637,7 +623,7 @@ class AnteoPlayer(xbmc.Player): if not status: status = self.engine.status() self.engine.check_torrent_error(status) - log('['+author+'Player]: %.2f%% complete (down: %.1f kb/s up: %.1f kb/s peers: %d) %s' % \ + log('[AnteoPlayer]: %.2f%% complete (down: %.1f kb/s up: %.1f kb/s peers: %d) %s' % \ (status.progress * 100, status.download_rate, status.upload_rate, status.num_peers, status.state_str)) diff --git a/Core.py b/Core.py index 5028d59..cfdfa22 100644 --- a/Core.py +++ b/Core.py @@ -1101,8 +1101,8 @@ class Core: 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))) + listitem = xbmcgui.ListItem(title, iconImage=image, thumbnailImage=image) if not info: info = {"Title": title, "plot": title} if not isFolder and fileSize: info['size'] = fileSize @@ -1430,9 +1430,11 @@ class Core: request.add_header('Accept-encoding', 'gzip') result = urllib2.urlopen(request) if result.info().get('Content-Encoding') == 'gzip': + from StringIO import StringIO + import zlib buf = StringIO(result.read()) - f = gzip.GzipFile(fileobj=buf) - content = f.read() + decomp = zlib.decompressobj(16 + zlib.MAX_WBITS) + content = decomp.decompress(buf.getvalue()) else: content = result.read() localFile = xbmcvfs.File(torrentFile, "wb+") @@ -1459,7 +1461,7 @@ class Core: def openTorrent(self, params={}): get = params.get tdir = unquote(get("url2"),None) - thumbnail = unquote(get("thumbnail"), False) and True or 'DefaultVideo.png' + thumbnail = unquote(get("thumbnail"), False) or 'DefaultVideo.png' save_folder = unquote(get("save_folder"),'') url = urllib.unquote_plus(get("url")) diff --git a/Inposloader.py b/Inposloader.py index 29e3402..eb69b0f 100644 --- a/Inposloader.py +++ b/Inposloader.py @@ -522,7 +522,10 @@ class InposPlayer(xbmc.Player): while not xbmc.abortRequested and self.isPlaying(): self.print_fulldebug() status = self.engine.status() - file_status = self.engine.file_status(self.contentId) + if not self.next_dling: + file_status = self.engine.file_status(self.contentId) + else: + file_status = self.engine.file_status(self.next_contentId) self.watchedTime = xbmc.Player().getTime() self.totalTime = xbmc.Player().getTotalTime() if self.iterator == 100 and debug_counter < 100: