Browse Source

Новый движок

master v3.3.3
parent
commit
eec57dbe38
  1. 16
      addon.py
  2. 4
      addon.xml
  3. 25
      resources/lib/player.py
  4. 2
      resources/lib/searchers/__init__.py
  5. 4
      resources/lib/searchers/kinozal.py
  6. 2
      resources/lib/searchers/rutracker.py
  7. 10
      resources/lib/utils/__init__.py

16
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

4
addon.xml

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.torrenter3" name="Torrenter3" provider-name="inpos" version="3.3.2">
<addon id="plugin.video.torrenter3" name="Torrenter3" provider-name="inpos" version="3.3.3">
<requires>
<import addon="xbmc.python" version="3.0.0"/>
<import addon="script.module.pyrrent2http" version="1.1.1"/>
<import addon="script.module.gorrent2http" version="1.2.0"/>
<import addon="script.module.codequick" version="1.0.2"/>
<import addon="script.module.htmlement" version="1.0.0"/>
<import addon="script.module.requests" version="2.22.0"/>

25
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),

2
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:

4
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

2
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

10
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']:

Loading…
Cancel
Save