Версия 3.0.1
parent
6ec2e7eea0
commit
47946616e7
2
addon.py
2
addon.py
|
@ -7,7 +7,7 @@ import xbmcgui, xbmc
|
||||||
from resources.lib.searchers import rutor
|
from resources.lib.searchers import rutor
|
||||||
from resources.lib.utils import localize, store_torrent_file, get_engine
|
from resources.lib.utils import localize, store_torrent_file, get_engine
|
||||||
from resources.lib.overrrides.session import torrent_file_fetch
|
from resources.lib.overrrides.session import torrent_file_fetch
|
||||||
from resources.lib.player import PlaybackWindow, VideoLoop
|
from resources.lib.player import VideoLoop
|
||||||
|
|
||||||
video_extensions = ('.mp4', '.avi', '.3gp', '.ogv', '.mkv', '.ts', '.mpg', '.mpeg', '.webm', '.flv', '.vob')
|
video_extensions = ('.mp4', '.avi', '.3gp', '.ogv', '.mkv', '.ts', '.mpg', '.mpeg', '.webm', '.flv', '.vob')
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,13 @@
|
||||||
<import addon="script.module.pysocks" version="1.0.0"/>
|
<import addon="script.module.pysocks" version="1.0.0"/>
|
||||||
</requires>
|
</requires>
|
||||||
<extension point="xbmc.python.pluginsource" library="addon.py">
|
<extension point="xbmc.python.pluginsource" library="addon.py">
|
||||||
<provides>audio video</provides>
|
<provides>video</provides>
|
||||||
</extension>
|
</extension>
|
||||||
<extension point="xbmc.addon.metadata">
|
<extension point="xbmc.addon.metadata">
|
||||||
<summary lang="en_GB">Plugin helps you to watch videos from p2p torrent-networks, without full predownload.</summary>
|
<summary lang="en_GB">Plugin helps you to watch videos from p2p torrent-networks, without full predownload.</summary>
|
||||||
<description lang="en_GB">Plugin helps you to watch videos from p2p torrent-networks, without full predownload.</description>
|
<description lang="en_GB">This add-on is fully rewrited version of Torrenter v2</description>
|
||||||
|
<summary lang="ru_RU">Позволяет смотреть видео из p2p-сети torrent без предварителной закачки.</summary>
|
||||||
|
<description lang="ru_RU">Этот модуль является полностью переписанной версией модуля Torrenter v2 </description>
|
||||||
<license>MIT</license>
|
<license>MIT</license>
|
||||||
<source>https://git.ukamnya.ru/ukamnya/plugin.video.torrenter3</source>
|
<source>https://git.ukamnya.ru/ukamnya/plugin.video.torrenter3</source>
|
||||||
<forum>http://xbmc.ru/forum/showthread.php?t=14787</forum>
|
<forum>http://xbmc.ru/forum/showthread.php?t=14787</forum>
|
||||||
|
@ -26,7 +28,7 @@
|
||||||
<screenshot>resources/screenshots/screenshot001.jpg</screenshot>
|
<screenshot>resources/screenshots/screenshot001.jpg</screenshot>
|
||||||
<screenshot>resources/screenshots/screenshot002.jpg</screenshot> -->
|
<screenshot>resources/screenshots/screenshot002.jpg</screenshot> -->
|
||||||
</assets>
|
</assets>
|
||||||
<news>Initial release</news>
|
<news>- 3.0.1: first rewrited version</news>
|
||||||
<reuselanguageinvoker>true</reuselanguageinvoker>
|
<reuselanguageinvoker>true</reuselanguageinvoker>
|
||||||
</extension>
|
</extension>
|
||||||
</addon>
|
</addon>
|
|
@ -1,8 +1,6 @@
|
||||||
import xbmc, xbmcgui
|
import xbmc, xbmcgui
|
||||||
from .utils import get_engine, localize
|
from .utils import get_engine, localize
|
||||||
|
|
||||||
EXPECTED_KBITS = 512
|
|
||||||
|
|
||||||
class TorrentPlayer(xbmc.Player) :
|
class TorrentPlayer(xbmc.Player) :
|
||||||
pyrrent_engine = None
|
pyrrent_engine = None
|
||||||
loop = None
|
loop = None
|
||||||
|
@ -12,9 +10,11 @@ class TorrentPlayer(xbmc.Player) :
|
||||||
xbmc.Player().stop()
|
xbmc.Player().stop()
|
||||||
def onPlayBackPaused(self):
|
def onPlayBackPaused(self):
|
||||||
self.pyrrent_engine.pause()
|
self.pyrrent_engine.pause()
|
||||||
|
#self.loop.overlay.show()
|
||||||
|
|
||||||
def onPlayBackResumed(self):
|
def onPlayBackResumed(self):
|
||||||
self.pyrrent_engine.resume()
|
self.loop.overlay.hide()
|
||||||
|
#self.pyrrent_engine.resume()
|
||||||
|
|
||||||
def onPlayBackStopped(self):
|
def onPlayBackStopped(self):
|
||||||
self.pyrrent_engine.close()
|
self.pyrrent_engine.close()
|
||||||
|
@ -27,6 +27,8 @@ class TorrentPlayer(xbmc.Player) :
|
||||||
monitor = xbmc.Monitor()
|
monitor = xbmc.Monitor()
|
||||||
pw = xbmcgui.DialogProgress()
|
pw = xbmcgui.DialogProgress()
|
||||||
pw.create(localize(33055), line1='0 Kbit/s')
|
pw.create(localize(33055), line1='0 Kbit/s')
|
||||||
|
f_size = self.pyrrent_engine.file_status(f_index).size
|
||||||
|
EXPECTED_KBYTES = f_size / 3 / 1024 / 1024
|
||||||
while True:
|
while True:
|
||||||
xbmc.sleep(500)
|
xbmc.sleep(500)
|
||||||
if monitor.abortRequested() or pw.iscanceled():
|
if monitor.abortRequested() or pw.iscanceled():
|
||||||
|
@ -37,10 +39,10 @@ class TorrentPlayer(xbmc.Player) :
|
||||||
return False
|
return False
|
||||||
status = self.pyrrent_engine.status()
|
status = self.pyrrent_engine.status()
|
||||||
d_rate = status.download_rate
|
d_rate = status.download_rate
|
||||||
xbmc.log('*** DRATE: {}'.format(d_rate), level=xbmc.LOGNOTICE)
|
# xbmc.log('*** DRATE: {}'.format(d_rate), level=xbmc.LOGNOTICE)
|
||||||
perc = d_rate / EXPECTED_KBITS * 100
|
perc = d_rate / EXPECTED_KBYTES * 100
|
||||||
if perc > 100: perc = 100
|
if perc > 100: perc = 100
|
||||||
pw.update(perc, line1='{} kbit/s'.format(int(d_rate)))
|
pw.update(perc, line1=' {} / {} KB/s'.format(int(d_rate), int(EXPECTED_KBYTES)))
|
||||||
if perc == 100:
|
if perc == 100:
|
||||||
pw.close()
|
pw.close()
|
||||||
break
|
break
|
||||||
|
@ -50,7 +52,6 @@ class TorrentPlayer(xbmc.Player) :
|
||||||
|
|
||||||
class VideoLoop(object):
|
class VideoLoop(object):
|
||||||
stopped = False
|
stopped = False
|
||||||
status = None
|
|
||||||
def __init__(self, torr_fp):
|
def __init__(self, torr_fp):
|
||||||
self.e = get_engine(torr_fp)
|
self.e = get_engine(torr_fp)
|
||||||
def start(self, f_index):
|
def start(self, f_index):
|
||||||
|
@ -58,5 +59,9 @@ class VideoLoop(object):
|
||||||
self.mediaPlayer.loop = self
|
self.mediaPlayer.loop = self
|
||||||
self.mediaPlayer.play(self.e, f_index)
|
self.mediaPlayer.play(self.e, f_index)
|
||||||
while not self.stopped:
|
while not self.stopped:
|
||||||
self.status = self.e.status()
|
# sometime busydialog is showing in infinite loop. kick it.
|
||||||
|
if xbmc.getCondVisibility('Window.IsVisible(busydialog)'):
|
||||||
|
xbmc.executebuiltin("Dialog.Close(busydialog)")
|
||||||
|
status = self.e.status()
|
||||||
|
f_status = self.e.file_status(f_index)
|
||||||
xbmc.sleep(1000)
|
xbmc.sleep(1000)
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
from . import Searcher, urljoin_partial, ResultItem
|
from . import Searcher, urljoin_partial, ResultItem
|
||||||
|
|
||||||
class SearchEngine(Searcher):
|
class SearchEngine(Searcher):
|
||||||
base_url = 'http://new-tor.top'
|
#base_url = 'http://new-tor.top'
|
||||||
|
base_url = 'http://rutor.info'
|
||||||
search_path = '/search/0/0/100/2/{}'
|
search_path = '/search/0/0/100/2/{}'
|
||||||
name = 'RuTor.org'
|
name = 'RuTor.org'
|
||||||
icon = 'searcher_rutor.png'
|
icon = 'searcher_rutor.png'
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from codequick.support import addon_data # @UnresolvedImport
|
from codequick.support import addon_data # @UnresolvedImport
|
||||||
|
from codequick.listing import local_image # @UnresolvedImport
|
||||||
from urlquick import urljoin # @UnresolvedImport
|
from urlquick import urljoin # @UnresolvedImport
|
||||||
from ..settings import option, storage_toorents_dir, storage_download_dir
|
from ..settings import option, storage_toorents_dir, storage_download_dir
|
||||||
import xbmcgui
|
import xbmcgui
|
||||||
|
@ -38,7 +39,6 @@ def get_engine(torrent_uri):
|
||||||
encryption=1, keep_complete=False, keep_incomplete=False,
|
encryption=1, keep_complete=False, keep_incomplete=False,
|
||||||
dht_routers=["router.bittorrent.com:6881", "router.utorrent.com:6881"], use_random_port=False, listen_port=6881,
|
dht_routers=["router.bittorrent.com:6881", "router.utorrent.com:6881"], use_random_port=False, listen_port=6881,
|
||||||
user_agent='', enable_dht=True)
|
user_agent='', enable_dht=True)
|
||||||
|
|
||||||
while not option['storage_dir']:
|
while not option['storage_dir']:
|
||||||
dialog = xbmcgui.Dialog()
|
dialog = xbmcgui.Dialog()
|
||||||
dialog.ok(localize(33000), localize(33051))
|
dialog.ok(localize(33000), localize(33051))
|
||||||
|
|
Loading…
Reference in New Issue