From eec57dbe380f203e22305d2a5da7032c39c09d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=A0=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD?= Date: Sun, 20 Mar 2022 00:15:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=B8=D0=B6=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addon.py | 16 +++++++--------- addon.xml | 4 ++-- resources/lib/player.py | 25 ++++++++++++------------- resources/lib/searchers/__init__.py | 2 +- resources/lib/searchers/kinozal.py | 4 ++-- resources/lib/searchers/rutracker.py | 2 +- resources/lib/utils/__init__.py | 10 +++++----- 7 files changed, 30 insertions(+), 33 deletions(-) diff --git a/addon.py b/addon.py index 5b923cb..051e836 100644 --- a/addon.py +++ b/addon.py @@ -91,16 +91,16 @@ def search(plugin, search_query, thumb=None): res_items = [] for i in sorted(found_items, key=lambda x: x.seeders, reverse=True): if '2160p' in i.title: - hd = '[2160p/{}] '.format(i.size) + hd = f'{{2160p/{i.size}}} ' elif '1080p' in i.title: - hd = '[1080p/{}] '.format(i.size) + hd = f'{{1080p/{i.size}}} ' elif '720p' in i.title: - hd = '[720p/{}] '.format(i.size) + hd = f'{{720p/{i.size}}} ' else: hd = '' item = Listitem.from_dict( open_torrent, - '{}{} {} ({}/{})'.format(hd, i.title, i.size, i.seeders, i.leachers), + f'{hd}{i.title} {i.size} ({i.seeders}/{i.leachers})', params={'url': i.url, 'cookies': i.cookies, 'referer': i.referer} ) if thumb: @@ -129,7 +129,9 @@ def open_torrent(plugin, url='--back--', cookies={}, referer='', path=''): if not tf: yield False t_full_path = store_torrent_file(tf) + e = get_engine(t_full_path) + files = sorted(list(filter( lambda x: x.name.startswith(path) and x.name.lower().endswith( video_extensions), e.list_from_info(media_types=['video']))), @@ -151,7 +153,7 @@ def open_torrent(plugin, url='--back--', cookies={}, referer='', path=''): p = f.name[len(path):].lstrip('/').split('/') if len(p) == 1: item = Listitem.from_dict(play_file, - '{} ({:.3f} GB)'.format(p[0], f.size / 1024.0 / 1024.0 / 1024.0), + f'{p[0]} ({f.size / 1024.0 / 1024.0 / 1024.0:.3f} GB)', params={'t_full_path': t_full_path, 'f_index': f.index} ) item.art.local_thumb('video.png') @@ -169,12 +171,8 @@ def play_file(plugin, t_full_path, f_index): vl.start(f_index) return False except: - - # todo import traceback xbmc.log(f'PLAY exception: {traceback.format_exc()}') - # - return False diff --git a/addon.xml b/addon.xml index 13de943..a62fbc9 100644 --- a/addon.xml +++ b/addon.xml @@ -1,8 +1,8 @@ - + - + diff --git a/resources/lib/player.py b/resources/lib/player.py index 1b11700..d7ea369 100644 --- a/resources/lib/player.py +++ b/resources/lib/player.py @@ -3,36 +3,35 @@ from .utils import get_engine, localize class TorrentPlayer(xbmc.Player): - pyrrent_engine = None + gorrent_engine = None loop = None paused = False def onPlayBackEnded(self): - self.pyrrent_engine.close() + self.gorrent_engine.close() self.loop.stopped = True xbmc.Player().stop() def onPlayBackPaused(self): - self.pyrrent_engine.pause() + self.gorrent_engine.pause() self.paused = True def onPlayBackResumed(self): self.paused = False - self.pyrrent_engine.resume() + self.gorrent_engine.resume() def onPlayBackStopped(self): - self.pyrrent_engine.close() + self.gorrent_engine.close() self.loop.stopped = True xbmc.Player().stop() def play(self, engine, f_index): - self.pyrrent_engine = engine - self.pyrrent_engine.start() - self.pyrrent_engine.activate_file(f_index) + self.gorrent_engine = engine + self.gorrent_engine.start(f_index) monitor = xbmc.Monitor() pw = xbmcgui.DialogProgress() pw.create(localize(33055), '0 Kbit/s') - f_size = self.pyrrent_engine.file_status(f_index).size + f_size = self.gorrent_engine.file_status(f_index).size EXPECTED_KBYTES = f_size // 3 // 1024 // 1024 if EXPECTED_KBYTES > 768: EXPECTED_KBYTES = 768 @@ -40,11 +39,11 @@ class TorrentPlayer(xbmc.Player): xbmc.sleep(500) if monitor.abortRequested() or pw.iscanceled(): pw.close() - self.pyrrent_engine.close() + self.gorrent_engine.close() xbmc.Player().stop() self.loop.stopped = True return False - status = self.pyrrent_engine.status() + status = self.gorrent_engine.status() d_rate = status.download_rate # xbmc.log('*** DRATE: {}'.format(d_rate), level=xbmc.LOGNOTICE) perc = d_rate // EXPECTED_KBYTES * 100 @@ -53,7 +52,7 @@ class TorrentPlayer(xbmc.Player): if perc == 100: pw.close() break - fstat = self.pyrrent_engine.file_status(f_index) + fstat = self.gorrent_engine.file_status(f_index) listitem = xbmcgui.ListItem('.'.join(fstat.name.split('/')[-1].split('.')[:-1])[:-1], path=fstat.url) xbmc.Player.play(self, fstat.url, listitem) @@ -78,7 +77,7 @@ class VideoLoop(object): if self.mediaPlayer.paused: self.statinfo.notification( # '[{}]{}.'.format(('|' * (int(f_status.progress * 100) // 2)).ljust(50, '.'), ' ' * 100), - '[{}]'.format(('|' * (int(f_status.progress * 100) // 2)).ljust(50, '.')), + '[{}]'.format(('|' * (f_status.progress // 2)).ljust(50, '.')), 'S: {} DL: {} KB/s UL: {} KB/s'.format(status.num_seeds, status.download_rate, status.upload_rate), diff --git a/resources/lib/searchers/__init__.py b/resources/lib/searchers/__init__.py index fbac717..1f46964 100644 --- a/resources/lib/searchers/__init__.py +++ b/resources/lib/searchers/__init__.py @@ -47,7 +47,7 @@ class Searcher(object): parser = HTMLement('body') parser.feed(resp.text) # todo отладка - xbmc.log(f'SEARCH BODY:\n{resp.text}') + # xbmc.log(f'SEARCH BODY:\n{resp.text}') # return self.process(parser.close()) except: diff --git a/resources/lib/searchers/kinozal.py b/resources/lib/searchers/kinozal.py index 7ed9284..57af8a1 100644 --- a/resources/lib/searchers/kinozal.py +++ b/resources/lib/searchers/kinozal.py @@ -48,14 +48,14 @@ class SearchEngine(Searcher): data={'username': user, 'password': password, 'returnto': ''}, cookies={}, headers=self.headers, allow_redirects=False) # todo отладка - xbmc.log(f'Kinozal LOGIN BODY:\n{resp.text}') + # xbmc.log(f'Kinozal LOGIN BODY:\n{resp.text}') # if not resp.ok: raise Exception # todo отладка - xbmc.log(f'LOGIN COOKIE:\n{resp.cookies}') + # xbmc.log(f'LOGIN COOKIE:\n{resp.cookies}') # cookies = resp.cookies diff --git a/resources/lib/searchers/rutracker.py b/resources/lib/searchers/rutracker.py index a45b46f..15f3146 100644 --- a/resources/lib/searchers/rutracker.py +++ b/resources/lib/searchers/rutracker.py @@ -47,7 +47,7 @@ class SearchEngine(Searcher): raise Exception # todo отладка - xbmc.log(f'RuTracker LOGIN BODY:\n{resp.text}') + # xbmc.log(f'RuTracker LOGIN BODY:\n{resp.text}') # cookies = resp.cookies diff --git a/resources/lib/utils/__init__.py b/resources/lib/utils/__init__.py index 7ce9284..92dc4c4 100644 --- a/resources/lib/utils/__init__.py +++ b/resources/lib/utils/__init__.py @@ -1,10 +1,10 @@ -from codequick.support import addon_data # @UnresolvedImport -from codequick.utils import urljoin_partial # @UnresolvedImport +from codequick.support import addon_data +from codequick.utils import urljoin_partial from ..settings import option import xbmcgui import os from hashlib import sha1 -from pyrrent2http import Engine # @UnresolvedImport +from gorrent2http import Engine from urllib.request import pathname2url @@ -49,10 +49,10 @@ def get_engine(torrent_uri): else: proxy = None return Engine(uri=file_url(torrent_uri), download_path=storage_download_dir, - encryption=1, keep_complete=False, keep_incomplete=False, + encryption=1, keep_files=False, dht_routers=["router.bittorrent.com:6881", "router.utorrent.com:6881"], use_random_port=False, listen_port=6881, - user_agent='', enable_dht=True, proxy=proxy) + user_agent='', enable_dht=True, proxy=proxy, debug_alerts=False) while not option['storage_dir']: