sw release
parent
9622dc9f67
commit
94e02d116b
3325
.idea/workspace.xml
3325
.idea/workspace.xml
File diff suppressed because it is too large
Load Diff
|
@ -28,7 +28,7 @@ from StringIO import StringIO
|
||||||
import zlib
|
import zlib
|
||||||
|
|
||||||
from functions import file_decode, file_encode
|
from functions import file_decode, file_encode
|
||||||
from functions import magnet_alert, log, debug
|
from functions import magnet_alert, log, loadsw_onstop
|
||||||
import xbmcvfs
|
import xbmcvfs
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ class AceStream:
|
||||||
|
|
||||||
def __exit__(self):
|
def __exit__(self):
|
||||||
self.TSplayer.end()
|
self.TSplayer.end()
|
||||||
|
loadsw_onstop() # Reload Search Window
|
||||||
|
|
||||||
def play_url_ind(self, ind, label, icon):
|
def play_url_ind(self, ind, label, icon):
|
||||||
self.TSplayer.play_url_ind(int(ind), label, str(icon), '')
|
self.TSplayer.play_url_ind(int(ind), label, str(icon), '')
|
||||||
|
|
|
@ -30,7 +30,7 @@ import xbmcgui
|
||||||
import xbmcvfs
|
import xbmcvfs
|
||||||
import xbmcaddon
|
import xbmcaddon
|
||||||
import Localization
|
import Localization
|
||||||
from functions import localize_path, isSubtitle, DownloadDB, log, debug, is_writable, unquote, file_url
|
from functions import localize_path, isSubtitle, loadsw_onstop, is_writable, file_url
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -326,6 +326,8 @@ class AnteoPlayer(xbmc.Player):
|
||||||
|
|
||||||
xbmc.Player().stop()
|
xbmc.Player().stop()
|
||||||
|
|
||||||
|
loadsw_onstop() # Reload Search Window
|
||||||
|
|
||||||
if '1' != self.__settings__.getSetting("keep_files") and 'Saved Files' not in self.userStorageDirectory:
|
if '1' != self.__settings__.getSetting("keep_files") and 'Saved Files' not in self.userStorageDirectory:
|
||||||
xbmc.sleep(1000)
|
xbmc.sleep(1000)
|
||||||
clearStorage(self.userStorageDirectory)
|
clearStorage(self.userStorageDirectory)
|
||||||
|
|
157
Core.py
157
Core.py
|
@ -39,6 +39,7 @@ class Core:
|
||||||
language = {0: 'en', 1: 'ru', 2: 'uk', 3: 'he', 4: 'hu'}.get(int(__settings__.getSetting("language")))
|
language = {0: 'en', 1: 'ru', 2: 'uk', 3: 'he', 4: 'hu'}.get(int(__settings__.getSetting("language")))
|
||||||
scrapperDB_ver = {'en':'1.1', 'ru':'1.3', 'he':'1.3'}
|
scrapperDB_ver = {'en':'1.1', 'ru':'1.3', 'he':'1.3'}
|
||||||
torrent_info_style = int(__settings__.getSetting('torrent_info_style'))
|
torrent_info_style = int(__settings__.getSetting('torrent_info_style'))
|
||||||
|
searchwindowmode = int(__settings__.getSetting('searchwindowmode'))
|
||||||
|
|
||||||
log('SYS ARGV: ' + str(sys.argv))
|
log('SYS ARGV: ' + str(sys.argv))
|
||||||
|
|
||||||
|
@ -53,7 +54,8 @@ class Core:
|
||||||
def sectionMenu(self):
|
def sectionMenu(self):
|
||||||
if self.__settings__.getSetting('plugin_name') != self.__plugin__:
|
if self.__settings__.getSetting('plugin_name') != self.__plugin__:
|
||||||
#Every update run
|
#Every update run
|
||||||
first_run_250()
|
first_run_260()
|
||||||
|
self.__settings__.setSetting('first_run_260', 'True')
|
||||||
self.__settings__.setSetting('plugin_name', self.__plugin__)
|
self.__settings__.setSetting('plugin_name', self.__plugin__)
|
||||||
#check_network_advancedsettings()
|
#check_network_advancedsettings()
|
||||||
check_download_dir()
|
check_download_dir()
|
||||||
|
@ -65,52 +67,100 @@ class Core:
|
||||||
contextMenu = [(self.localize('Search Control Window'),
|
contextMenu = [(self.localize('Search Control Window'),
|
||||||
'xbmc.RunScript(%s,)' % os.path.join(ROOT, 'controlcenter.py'))]
|
'xbmc.RunScript(%s,)' % os.path.join(ROOT, 'controlcenter.py'))]
|
||||||
|
|
||||||
self.drawItem('< %s >' % self.localize('Search Window') + ' (BETA)', 'searchWindow',
|
#Search Window
|
||||||
|
if self.searchwindowmode < 3:
|
||||||
|
self.drawItem('< %s >' % self.localize('Search Window'), 'searchWindow',
|
||||||
image=self.ROOT + '/icons/kodi.png', isFolder=False)
|
image=self.ROOT + '/icons/kodi.png', isFolder=False)
|
||||||
|
|
||||||
if self.history_bool:
|
#History
|
||||||
HistorycontextMenu=[]
|
if self.history_bool and self.searchwindowmode > 0:
|
||||||
|
HistorycontextMenu = []
|
||||||
HistorycontextMenu.extend(contextMenu)
|
HistorycontextMenu.extend(contextMenu)
|
||||||
HistorycontextMenu.append(
|
HistorycontextMenu.append(
|
||||||
(self.localize('Clear %s') % self.localize('Search History'), ListString % ('History', 'clear', 'addtime', '')))
|
(self.localize('Clear %s') % self.localize('Search History'),
|
||||||
|
ListString % ('History', 'clear', 'addtime', '')))
|
||||||
|
if self.searchwindowmode == 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Search History'), 'swHistory',
|
||||||
|
image=self.ROOT + '/icons/history2.png', contextMenu=HistorycontextMenu, replaceMenu=False)
|
||||||
|
else:
|
||||||
self.drawItem('< %s >' % self.localize('Search History'), 'History',
|
self.drawItem('< %s >' % self.localize('Search History'), 'History',
|
||||||
image=self.ROOT + '/icons/history2.png', contextMenu=HistorycontextMenu, replaceMenu=False)
|
image=self.ROOT + '/icons/history2.png', contextMenu=HistorycontextMenu, replaceMenu=False)
|
||||||
|
|
||||||
|
#Search
|
||||||
|
if self.searchwindowmode == 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Search'), 'swsearch', image=self.ROOT + '/icons/search.png',)
|
||||||
|
elif self.searchwindowmode > 1:
|
||||||
self.drawItem('< %s >' % self.localize('Search'), 'search', image=self.ROOT + '/icons/search.png', )
|
self.drawItem('< %s >' % self.localize('Search'), 'search', image=self.ROOT + '/icons/search.png', )
|
||||||
|
|
||||||
|
#Media
|
||||||
CLcontextMenu=[]
|
CLcontextMenu=[]
|
||||||
CLcontextMenu.extend(contextMenu)
|
CLcontextMenu.extend(contextMenu)
|
||||||
CLcontextMenu.append((self.localize('Reset All Cache DBs'),
|
CLcontextMenu.append((self.localize('Reset All Cache DBs'),
|
||||||
ListString % ('full_download', '', 'url', json.dumps({'action': 'delete'}))))
|
ListString % ('full_download', '', 'url', json.dumps({'action': 'delete'}))))
|
||||||
self.drawItem('< %s >' % self.localize('Content Lists'), 'openContent', image=self.ROOT + '/icons/media.png',
|
self.drawItem('< %s >' % self.localize('Content Lists'), 'openContent', image=self.ROOT + '/icons/media.png',
|
||||||
contextMenu=CLcontextMenu, replaceMenu=False)
|
contextMenu=CLcontextMenu, replaceMenu=False)
|
||||||
|
|
||||||
|
#DL Status
|
||||||
DLScontextMenu=[(self.localize('Start All'), ListString % ('DownloadStatus', 'startall', 'addtime', '')),
|
DLScontextMenu=[(self.localize('Start All'), ListString % ('DownloadStatus', 'startall', 'addtime', '')),
|
||||||
(self.localize('Stop All'), ListString % ('DownloadStatus', 'stopall', 'addtime', '')),]
|
(self.localize('Stop All'), ListString % ('DownloadStatus', 'stopall', 'addtime', '')),]
|
||||||
DLScontextMenu.append(
|
DLScontextMenu.append(
|
||||||
(self.localize('Clear %s') % self.localize('Download Status'), ListString % ('DownloadStatus', 'clear', 'addtime', '')))
|
(self.localize('Clear %s') % self.localize('Download Status'), ListString % ('DownloadStatus', 'clear', 'addtime', '')))
|
||||||
DLScontextMenu.extend(contextMenu)
|
DLScontextMenu.extend(contextMenu)
|
||||||
self.drawItem('< %s >' % self.localize('Download Status'), 'DownloadStatus', image=self.ROOT + '/icons/download.png',
|
|
||||||
|
if self.searchwindowmode == 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Download Status'), 'swDownloadStatus',
|
||||||
|
image=self.ROOT + '/icons/download.png',
|
||||||
contextMenu=DLScontextMenu, replaceMenu=False)
|
contextMenu=DLScontextMenu, replaceMenu=False)
|
||||||
|
elif self.searchwindowmode > 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Download Status'), 'DownloadStatus',
|
||||||
|
image=self.ROOT + '/icons/download.png',
|
||||||
|
contextMenu=DLScontextMenu, replaceMenu=False)
|
||||||
|
|
||||||
|
#Torrent-client
|
||||||
|
if self.searchwindowmode == 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Torrent-client Browser'), 'swuTorrentBrowser',
|
||||||
|
image=self.ROOT + '/icons/' + getTorrentClientIcon())
|
||||||
|
elif self.searchwindowmode > 1:
|
||||||
self.drawItem('< %s >' % self.localize('Torrent-client Browser'), 'uTorrentBrowser',
|
self.drawItem('< %s >' % self.localize('Torrent-client Browser'), 'uTorrentBrowser',
|
||||||
image=self.ROOT + '/icons/' + getTorrentClientIcon())
|
image=self.ROOT + '/icons/' + getTorrentClientIcon())
|
||||||
if self.history_bool:
|
|
||||||
|
#Watched
|
||||||
|
if self.history_bool and self.searchwindowmode > 0:
|
||||||
WatchedHistorycontextMenu=[]
|
WatchedHistorycontextMenu=[]
|
||||||
WatchedHistorycontextMenu.extend(contextMenu)
|
WatchedHistorycontextMenu.extend(contextMenu)
|
||||||
WatchedHistorycontextMenu.append(
|
WatchedHistorycontextMenu.append(
|
||||||
(self.localize('Clear %s') % self.localize('Watched History'), ListString % ('WatchedHistory', 'clear', 'addtime', '')))
|
(self.localize('Clear %s') % self.localize('Watched History'), ListString % ('WatchedHistory', 'clear', 'addtime', '')))
|
||||||
|
if self.searchwindowmode == 1:
|
||||||
|
self.drawItem('< %s >' % self.localize('Watched History'), 'swWatchedHistory',
|
||||||
|
image=self.ROOT + '/icons/watched.png', contextMenu=WatchedHistorycontextMenu,
|
||||||
|
replaceMenu=False)
|
||||||
|
else:
|
||||||
self.drawItem('< %s >' % self.localize('Watched History'), 'WatchedHistory',
|
self.drawItem('< %s >' % self.localize('Watched History'), 'WatchedHistory',
|
||||||
image=self.ROOT + '/icons/watched.png', contextMenu=WatchedHistorycontextMenu, replaceMenu=False)
|
image=self.ROOT + '/icons/watched.png', contextMenu=WatchedHistorycontextMenu,
|
||||||
|
replaceMenu=False)
|
||||||
|
|
||||||
|
#Torr player
|
||||||
self.drawItem('< %s >' % self.localize('.torrent Player'), 'torrentPlayer',
|
self.drawItem('< %s >' % self.localize('.torrent Player'), 'torrentPlayer',
|
||||||
image=self.ROOT + '/icons/torrentPlayer.png')
|
image=self.ROOT + '/icons/torrentPlayer.png', isFolder = False)
|
||||||
|
|
||||||
|
#Search Control Window
|
||||||
self.drawItem('< %s >' % self.localize('Search Control Window'), 'controlCenter',
|
self.drawItem('< %s >' % self.localize('Search Control Window'), 'controlCenter',
|
||||||
image=self.ROOT + '/icons/settings.png', isFolder=False)
|
image=self.ROOT + '/icons/settings.png', isFolder=False)
|
||||||
|
|
||||||
|
#Magnet player
|
||||||
self.drawItem('< %s >' % self.localize('Magnet-link Player'), 'magentPlayer',
|
self.drawItem('< %s >' % self.localize('Magnet-link Player'), 'magentPlayer',
|
||||||
image=self.ROOT + '/icons/magnet.png')
|
image=self.ROOT + '/icons/magnet.png', isFolder = False)
|
||||||
|
|
||||||
|
#Debug
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.drawItem('full_download', 'full_download', image=self.ROOT + '/icons/magnet.png')
|
self.drawItem('full_download', 'full_download', image=self.ROOT + '/icons/magnet.png')
|
||||||
self.drawItem('test', 'test', image=self.ROOT + '/icons/magnet.png', isFolder=False)
|
self.drawItem('test', 'test', image=self.ROOT + '/icons/magnet.png', isFolder=False)
|
||||||
|
|
||||||
|
#Clear storage
|
||||||
if '0' != self.__settings__.getSetting("keep_files"):
|
if '0' != self.__settings__.getSetting("keep_files"):
|
||||||
self.drawItem('< %s >' % self.localize('Clear Storage'), 'clearStorage', isFolder=True,
|
self.drawItem('< %s >' % self.localize('Clear Storage'), 'clearStorage', isFolder=True,
|
||||||
image=self.ROOT + '/icons/clear.png')
|
image=self.ROOT + '/icons/clear.png')
|
||||||
|
|
||||||
view_style('sectionMenu')
|
view_style('sectionMenu')
|
||||||
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||||
|
|
||||||
|
@ -243,54 +293,43 @@ class Core:
|
||||||
lockView('wide')
|
lockView('wide')
|
||||||
|
|
||||||
def test(self, params={}):
|
def test(self, params={}):
|
||||||
#from Anteoloader import AnteoPlayer
|
import searchwindow
|
||||||
#from python_libtorrent import get_libtorrent
|
params = {'mode': 'file_browser', 'path':'D:\\', 'tdir':'D:\\FRAPS\\'}
|
||||||
#self.lt=get_libtorrent()
|
searchwindow.main(params)
|
||||||
#self.torrentFile='D:\\test.torrent'
|
|
||||||
#self.session = self.lt.session()
|
|
||||||
#e=self.lt.bdecode(xbmcvfs.File(self.torrentFile,'rb').read())
|
|
||||||
#self.torrentFileInfo = self.lt.torrent_info(e)
|
|
||||||
#torrent_info={'ti': self.torrentFileInfo,
|
|
||||||
# 'save_path': self.userStorageDirectory,
|
|
||||||
# 'flags': 0x300,
|
|
||||||
# #'storage_mode': self.lt.storage_mode_t(1),
|
|
||||||
# 'paused': False,
|
|
||||||
# #'auto_managed': False,
|
|
||||||
# #'duplicate_is_error': True
|
|
||||||
# }
|
|
||||||
#self.torrentHandle = self.session.add_torrent(torrent_info)
|
|
||||||
#log(self.torrentHandle.torrent_file())
|
|
||||||
#self.session.remove_torrent(self.torrentHandle)
|
|
||||||
|
|
||||||
#params['url']='0'
|
def swHistory(self, params={}):
|
||||||
#if not xbmcvfs.exists(torrentUrl):
|
import searchwindow
|
||||||
# action = xbmcgui.Dialog()
|
params = {'mode': 'history'}
|
||||||
# torrentUrl = action.browse(1, self.localize('Choose .torrent in video library'), 'video', '.torrent')
|
searchwindow.main(params)
|
||||||
#if torrentUrl and xbmcvfs.exists(torrentUrl):
|
|
||||||
# if 0 != len(torrentUrl):
|
def swDownloadStatus(self, params={}):
|
||||||
# self.Downloader = Downloader.Torrent(self.userStorageDirectory, torrentUrl)
|
import searchwindow
|
||||||
# else:
|
params = {'mode': 'downloadstatus'}
|
||||||
# log(self.__plugin__ + " Unexpected access to method Anteoloader() without torrent content")
|
searchwindow.main(params)
|
||||||
#if self.Downloader:
|
|
||||||
# x=self.Downloader.getContentList()
|
def swuTorrentBrowser(self, params={}):
|
||||||
# print str(x)
|
import searchwindow
|
||||||
# xbmc.sleep(1000)
|
params = {'mode': 'browser'}
|
||||||
# self.Downloader.__exit__()
|
searchwindow.main(params)
|
||||||
#self.Player = AnteoPlayer(userStorageDirectory=self.userStorageDirectory, torrentUrl=torrentUrl, params=params)
|
|
||||||
|
def swWatchedHistory(self, params={}):
|
||||||
|
import searchwindow
|
||||||
|
params = {'mode': 'watched'}
|
||||||
|
searchwindow.main(params)
|
||||||
|
|
||||||
|
|
||||||
|
def swsearch(self, params={}):
|
||||||
|
if len(Searchers().get_active())<1:
|
||||||
|
noActiveSerachers()
|
||||||
|
return
|
||||||
|
keyboard = xbmc.Keyboard('', self.localize('Search Phrase'))
|
||||||
|
keyboard.doModal()
|
||||||
|
params["query"] = keyboard.getText()
|
||||||
|
if keyboard.isConfirmed():
|
||||||
|
params["mode"] = 'search'
|
||||||
|
import searchwindow
|
||||||
|
searchwindow.main(params)
|
||||||
|
|
||||||
#xbmcgui.Dialog().ok('Dam Son!','Now send this shit to DiMartino')
|
|
||||||
from resources.proxy import antizapret
|
|
||||||
filename = os.path.join(tempdir(),"antizapret.pac_config")
|
|
||||||
import shelve
|
|
||||||
from contextlib import contextmanager, closing
|
|
||||||
with closing(shelve.open(filename, writeback=True)) as d:
|
|
||||||
import time
|
|
||||||
log(str(d))
|
|
||||||
log(str(time.time()))
|
|
||||||
log(str((time.time() - d["created_at"])))
|
|
||||||
ttl = 24*3600
|
|
||||||
if ttl > 0 and (time.time() - d["created_at"]) > ttl:
|
|
||||||
log('xxx')
|
|
||||||
|
|
||||||
def DownloadStatus(self, params={}):
|
def DownloadStatus(self, params={}):
|
||||||
db = DownloadDB()
|
db = DownloadDB()
|
||||||
|
@ -1382,7 +1421,6 @@ class Core:
|
||||||
params["url"] = urllib.quote_plus(unescape(urllib.unquote_plus(query)))
|
params["url"] = urllib.quote_plus(unescape(urllib.unquote_plus(query)))
|
||||||
else:
|
else:
|
||||||
params["url"] = urllib.quote_plus(unescape(urllib.unquote_plus(defaultKeyword)))
|
params["url"] = urllib.quote_plus(unescape(urllib.unquote_plus(defaultKeyword)))
|
||||||
#print str(params)
|
|
||||||
self.torrentPlayer(params)
|
self.torrentPlayer(params)
|
||||||
|
|
||||||
def torrentPlayer(self, params={}):
|
def torrentPlayer(self, params={}):
|
||||||
|
@ -1403,7 +1441,12 @@ class Core:
|
||||||
% ('torrentPlayer', url))
|
% ('torrentPlayer', url))
|
||||||
return
|
return
|
||||||
if url:
|
if url:
|
||||||
|
if self.searchwindowmode > 1:
|
||||||
self.openTorrent(params)
|
self.openTorrent(params)
|
||||||
|
else:
|
||||||
|
import searchwindow
|
||||||
|
params = {'mode': 'open_torrent', 'link': url}
|
||||||
|
searchwindow.main(params)
|
||||||
|
|
||||||
def userStorage(self, params):
|
def userStorage(self, params):
|
||||||
save=False
|
save=False
|
||||||
|
|
|
@ -30,7 +30,7 @@ import xbmcvfs
|
||||||
import xbmcaddon
|
import xbmcaddon
|
||||||
import xbmcplugin
|
import xbmcplugin
|
||||||
import Localization
|
import Localization
|
||||||
from functions import encode_msg, isSubtitle, is_writable, file_url, localize_path
|
from functions import loadsw_onstop, isSubtitle, is_writable, file_url, localize_path
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -301,6 +301,8 @@ class InposPlayer(xbmc.Player):
|
||||||
|
|
||||||
xbmc.Player().stop()
|
xbmc.Player().stop()
|
||||||
|
|
||||||
|
loadsw_onstop() # Reload Search Window
|
||||||
|
|
||||||
if '1' != self.__settings__.getSetting("keep_files") and 'Saved Files' not in self.userStorageDirectory:
|
if '1' != self.__settings__.getSetting("keep_files") and 'Saved Files' not in self.userStorageDirectory:
|
||||||
xbmc.sleep(1000)
|
xbmc.sleep(1000)
|
||||||
clearStorage(self.userStorageDirectory)
|
clearStorage(self.userStorageDirectory)
|
||||||
|
|
|
@ -809,6 +809,8 @@ def localize(text):
|
||||||
'Play (from start)':'Lejátszás (az elejétől)',
|
'Play (from start)':'Lejátszás (az elejétől)',
|
||||||
},
|
},
|
||||||
'ru': {
|
'ru': {
|
||||||
|
'is recommended for Kodi 17 users and now out of beta.': 'рекомендовано пользователям Kodi 17 и вышло из беты.',
|
||||||
|
'You can disable it usage in Settings.':'Его можно отключить в настройках плагина.',
|
||||||
'Move Up': 'Вверх',
|
'Move Up': 'Вверх',
|
||||||
'Torrenter Search Window': 'Окно Поиска Torrenter',
|
'Torrenter Search Window': 'Окно Поиска Torrenter',
|
||||||
'Cancel': 'Отмена',
|
'Cancel': 'Отмена',
|
||||||
|
|
|
@ -30,7 +30,7 @@ import Downloader
|
||||||
import xbmcgui
|
import xbmcgui
|
||||||
import xbmcvfs
|
import xbmcvfs
|
||||||
import Localization
|
import Localization
|
||||||
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, DownloadDB, get_ids_video, log, debug, foldername, ensure_str
|
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, DownloadDB, get_ids_video, log, debug, foldername, ensure_str, loadsw_onstop
|
||||||
|
|
||||||
ROOT = sys.modules["__main__"].__root__
|
ROOT = sys.modules["__main__"].__root__
|
||||||
RESOURCES_PATH = os.path.join(ROOT, 'resources')
|
RESOURCES_PATH = os.path.join(ROOT, 'resources')
|
||||||
|
@ -184,6 +184,8 @@ class TorrentPlayer(xbmc.Player):
|
||||||
debug('************************************* NO! break')
|
debug('************************************* NO! break')
|
||||||
break
|
break
|
||||||
|
|
||||||
|
loadsw_onstop() # Reload Search Window
|
||||||
|
|
||||||
self.torrent.stopSession()
|
self.torrent.stopSession()
|
||||||
self.torrent.threadComplete = True
|
self.torrent.threadComplete = True
|
||||||
self.torrent.checkThread()
|
self.torrent.checkThread()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="plugin.video.torrenter" name="Torrenter" version="2.5.6" provider-name="DiMartino">
|
<addon id="plugin.video.torrenter" name="Torrenter" version="2.6.0" provider-name="DiMartino">
|
||||||
<requires>
|
<requires>
|
||||||
<import addon="xbmc.python" version="2.1.0"/>
|
<import addon="xbmc.python" version="2.1.0"/>
|
||||||
<import addon="script.module.libtorrent"/>
|
<import addon="script.module.libtorrent"/>
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
English changelog at http://bit.ly/1MfSVUP
|
English changelog at http://bit.ly/1MfSVUP
|
||||||
|
|
||||||
|
[B]Version 2.5.6[/B]
|
||||||
|
[+] Списки Медиа: Добавлен RuTorOrg
|
||||||
|
|
||||||
[B]Version 2.5.5[/B]
|
[B]Version 2.5.5[/B]
|
||||||
[+] Control Center: Исправлена работа выбора трекеров для определенного запроса
|
[+] Control Center: Исправлена работа выбора трекеров для определенного запроса
|
||||||
[+] Торрент-клиент: При скачивании одного файла торрент-клиентом теперь автоматически выбирается раздача
|
[+] Торрент-клиент: При скачивании одного файла торрент-клиентом теперь автоматически выбирается раздача
|
||||||
|
|
18
functions.py
18
functions.py
|
@ -1870,6 +1870,18 @@ def first_run_250():
|
||||||
#ok = xbmcgui.Dialog().ok('< %s >' % (Localization.localize('Torrenter Update ') + '2.4.2'),
|
#ok = xbmcgui.Dialog().ok('< %s >' % (Localization.localize('Torrenter Update ') + '2.4.2'),
|
||||||
# Localization.localize('Torrent2HTTP enabled! Can be changed in Settings.'))
|
# Localization.localize('Torrent2HTTP enabled! Can be changed in Settings.'))
|
||||||
|
|
||||||
|
def first_run_260():
|
||||||
|
if not __settings__.getSetting('first_run_260') == 'True':
|
||||||
|
yes=xbmcgui.Dialog().yesno('< %s >' % (Localization.localize('Torrenter Update ') + '2.6.0'),
|
||||||
|
Localization.localize('Torrenter Search Window')+' '
|
||||||
|
+Localization.localize('is recommended for Kodi 17 users and now out of beta.')
|
||||||
|
+Localization.localize('You can disable it usage in Settings.'),
|
||||||
|
Localization.localize('Would you like to try it?'),)
|
||||||
|
if yes:
|
||||||
|
import searchwindow
|
||||||
|
searchwindow.main()
|
||||||
|
|
||||||
|
|
||||||
def seeking_warning(seek):
|
def seeking_warning(seek):
|
||||||
if __settings__.getSetting('torrent_player')!='1':
|
if __settings__.getSetting('torrent_player')!='1':
|
||||||
seek_point = '%02d:%02d:%02d' % ((seek / (60*60)), (seek / 60) % 60, seek % 60)
|
seek_point = '%02d:%02d:%02d' % ((seek / (60*60)), (seek / 60) % 60, seek % 60)
|
||||||
|
@ -2266,3 +2278,9 @@ def get_item():
|
||||||
|
|
||||||
item.setInfo(type='Video', infoLabels=infoLabels)
|
item.setInfo(type='Video', infoLabels=infoLabels)
|
||||||
return item
|
return item
|
||||||
|
|
||||||
|
def loadsw_onstop():
|
||||||
|
if __settings__.getSetting('loadsw_onstop') == 'true':
|
||||||
|
import searchwindow
|
||||||
|
params = {'mode': 'load'}
|
||||||
|
searchwindow.main(params)
|
||||||
|
|
|
@ -79,6 +79,12 @@
|
||||||
<string id="30103">Advanced</string>
|
<string id="30103">Advanced</string>
|
||||||
<string id="30104">Torrent-client</string>
|
<string id="30104">Torrent-client</string>
|
||||||
<string id="30105">Hentai (fine-tuning)</string>
|
<string id="30105">Hentai (fine-tuning)</string>
|
||||||
|
<string id="30106">Search Window Mode</string>
|
||||||
|
<string id="30107">Enabled, hide old style</string>
|
||||||
|
<string id="30108">Enabled, replace old style</string>
|
||||||
|
<string id="30109">Enabled, optional</string>
|
||||||
|
<string id="30110">Disabled</string>
|
||||||
|
<string id="30111">Search Window Transparent Background</string>
|
||||||
<string id="50301">Save path</string>
|
<string id="50301">Save path</string>
|
||||||
<string id="50302">Call dialog</string>
|
<string id="50302">Call dialog</string>
|
||||||
<string id="50303">Default</string>
|
<string id="50303">Default</string>
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<setting id="sort_search" type="enum" label="30061" default="0" lvalues="30062|30063|30064"/>
|
<setting id="sort_search" type="enum" label="30061" default="0" lvalues="30062|30063|30064"/>
|
||||||
<setting id="skin_optimization" type="enum" label="30002" default="1" lvalues="30003|30018|30017|30016|30019|30066|30067|30071|30076"/>
|
<setting id="skin_optimization" type="enum" label="30002" default="1" lvalues="30003|30018|30017|30016|30019|30066|30067|30071|30076"/>
|
||||||
<setting id="open_option" type="enum" label="30034" default="0" lvalues="30035|30036|30037|30038"/>
|
<setting id="open_option" type="enum" label="30034" default="0" lvalues="30035|30036|30037|30038"/>
|
||||||
|
<setting id="searchwindowmode" type="enum" label="30106" default="1" lvalues="30107|30108|30109|30110"/>
|
||||||
</category>
|
</category>
|
||||||
<category label="30103">
|
<category label="30103">
|
||||||
<setting id="timeout" type="enum" lvalues="30026|30027|30028" label="30025" default="1"/>
|
<setting id="timeout" type="enum" lvalues="30026|30027|30028" label="30025" default="1"/>
|
||||||
|
@ -72,5 +73,6 @@
|
||||||
<setting id="enable_dht" type="bool" label="30070" default="true" visible="!eq(-8,1)"/>
|
<setting id="enable_dht" type="bool" label="30070" default="true" visible="!eq(-8,1)"/>
|
||||||
<setting id="append_filesize" type="bool" label="30069" default="true"/>
|
<setting id="append_filesize" type="bool" label="30069" default="true"/>
|
||||||
<setting id="torrent_info_style" type="enum" label="30072" default="0" lvalues="30073|30074|30075"/>
|
<setting id="torrent_info_style" type="enum" label="30072" default="0" lvalues="30073|30074|30075"/>
|
||||||
|
<setting id="sw_transparent_back" type="bool" label="30111" default="false"/>
|
||||||
</category>
|
</category>
|
||||||
</settings>
|
</settings>
|
||||||
|
|
101
searchwindow.py
101
searchwindow.py
|
@ -21,7 +21,7 @@ import pyxbmct.addonwindow as pyxbmct
|
||||||
import xbmcaddon
|
import xbmcaddon
|
||||||
import xbmcgui
|
import xbmcgui
|
||||||
import xbmcvfs
|
import xbmcvfs
|
||||||
import json
|
import xbmc
|
||||||
|
|
||||||
from functions import *
|
from functions import *
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
last_top_button = None
|
last_top_button = None
|
||||||
last_right_button = None
|
last_right_button = None
|
||||||
last_listing_mode = None
|
last_listing_mode = None
|
||||||
route = None
|
route = {}
|
||||||
count = 0
|
count = 0
|
||||||
navi_right_menu = []
|
navi_right_menu = []
|
||||||
navi_top_menu = []
|
navi_top_menu = []
|
||||||
|
@ -60,6 +60,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
def __init__(self, params = None):
|
def __init__(self, params = None):
|
||||||
log('SearchWindow init params: '+str(params))
|
log('SearchWindow init params: '+str(params))
|
||||||
super(SearchWindow, self).__init__(self.localize('Torrenter Search Window'))
|
super(SearchWindow, self).__init__(self.localize('Torrenter Search Window'))
|
||||||
|
__settings__.setSetting('loadsw_onstop', 'false')
|
||||||
self.setGeometry(1280, 720, 9, 16)
|
self.setGeometry(1280, 720, 9, 16)
|
||||||
self.set_navi()
|
self.set_navi()
|
||||||
self.set_controls()
|
self.set_controls()
|
||||||
|
@ -69,9 +70,20 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
self.navi_load()
|
self.navi_load()
|
||||||
elif params.get('mode') == 'search':
|
elif params.get('mode') == 'search':
|
||||||
self.search(params)
|
self.search(params)
|
||||||
|
elif params.get('mode') == 'history':
|
||||||
|
self.history()
|
||||||
|
elif params.get('mode') == 'downloadstatus':
|
||||||
|
self.downloadstatus()
|
||||||
|
elif params.get('mode') == 'browser':
|
||||||
|
self.browser()
|
||||||
|
elif params.get('mode') == 'watched':
|
||||||
|
self.watched()
|
||||||
|
elif params.get('mode') == 'open_torrent':
|
||||||
|
self.open_torrent(params)
|
||||||
|
elif params.get('mode') == 'file_browser':
|
||||||
|
self.file_browser(params)
|
||||||
else:
|
else:
|
||||||
self.navi_load()
|
self.navi_load()
|
||||||
#self.history()
|
|
||||||
|
|
||||||
def set_navi(self):
|
def set_navi(self):
|
||||||
self.navi = {
|
self.navi = {
|
||||||
|
@ -87,11 +99,9 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
}
|
}
|
||||||
|
|
||||||
def set_controls(self):
|
def set_controls(self):
|
||||||
if not __settings__.getSetting('debug') == 'true':
|
if not __settings__.getSetting('sw_transparent_back') == 'true':
|
||||||
self.background.setImage('%s/icons/%s.png' % (__root__, 'ContentPanel'))
|
self.background.setImage('%s/icons/%s.png' % (__root__, 'ContentPanel'))
|
||||||
|
|
||||||
#self.background.setImage('%s/icons/%s.png' % (__root__, 'ContentPanel'))
|
|
||||||
|
|
||||||
# Top menu
|
# Top menu
|
||||||
self.button_downloadstatus = pyxbmct.Button("",
|
self.button_downloadstatus = pyxbmct.Button("",
|
||||||
focusTexture=self.icon % 'fdownloadstatus',
|
focusTexture=self.icon % 'fdownloadstatus',
|
||||||
|
@ -187,20 +197,20 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
('WindowClose', 'effect=fade start=100 end=0 time=500',)])
|
('WindowClose', 'effect=fade start=100 end=0 time=500',)])
|
||||||
|
|
||||||
def navi_back(self):
|
def navi_back(self):
|
||||||
log('navi_back init')
|
debug('navi_back init')
|
||||||
self.navi['route'].pop(-1)
|
self.navi['route'].pop(-1)
|
||||||
self.navi_restore()
|
self.navi_restore()
|
||||||
|
|
||||||
def navi_route_reset(self):
|
def navi_route_reset(self):
|
||||||
log('navi_route_reset init')
|
debug('navi_route_reset init')
|
||||||
self.navi['route'] = [self.navi['route'][0]]
|
self.navi['route'] = [self.navi['route'][0]]
|
||||||
|
|
||||||
def navi_route_pop(self):
|
def navi_route_pop(self):
|
||||||
log('navi_route_pop init')
|
debug('navi_route_pop init')
|
||||||
self.navi['route'].pop(-1)
|
self.navi['route'].pop(-1)
|
||||||
|
|
||||||
def navi_restore(self):
|
def navi_restore(self):
|
||||||
log('navi_restore init')
|
debug('navi_restore init')
|
||||||
self.route = self.navi['route'].pop(-1)
|
self.route = self.navi['route'].pop(-1)
|
||||||
action = getattr(self, self.route['mode'])
|
action = getattr(self, self.route['mode'])
|
||||||
try:
|
try:
|
||||||
|
@ -211,17 +221,17 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
|
|
||||||
self.set_focus(self.route['mode'])
|
self.set_focus(self.route['mode'])
|
||||||
|
|
||||||
log('self.route[last_listing_item]: ' + str(self.route['last_listing_item']))
|
debug('self.route[last_listing_item]: ' + str(self.route['last_listing_item']))
|
||||||
if self.route['last_listing_item'] > 0:
|
if self.route['last_listing_item'] > 0:
|
||||||
self.listing.selectItem(self.route['last_listing_item'])
|
self.listing.selectItem(self.route['last_listing_item'])
|
||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
log('navi_restore ERROR '+traceback.format_exc())
|
debug('navi_restore ERROR '+traceback.format_exc())
|
||||||
self.set_navi()
|
self.set_navi()
|
||||||
self.history()
|
self.history()
|
||||||
|
|
||||||
def navi_load(self):
|
def navi_load(self):
|
||||||
log('navi_load init')
|
debug('navi_load init')
|
||||||
__tmppath__ = os.path.join(xbmc.translatePath('special://temp'), 'xbmcup', 'plugin.video.torrenter')
|
__tmppath__ = os.path.join(xbmc.translatePath('special://temp'), 'xbmcup', 'plugin.video.torrenter')
|
||||||
if not xbmcvfs.exists(__tmppath__):
|
if not xbmcvfs.exists(__tmppath__):
|
||||||
xbmcvfs.mkdirs(__tmppath__)
|
xbmcvfs.mkdirs(__tmppath__)
|
||||||
|
@ -230,14 +240,15 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
navi = read.read()
|
navi = read.read()
|
||||||
read.close()
|
read.close()
|
||||||
|
|
||||||
log('navi_load navi: '+str(navi))
|
debug('navi_load navi: '+str(navi))
|
||||||
|
log('navi_load navi: ' + str(navi['route']))
|
||||||
|
|
||||||
if navi and len(navi) > 0:
|
if navi and len(navi) > 0:
|
||||||
self.navi = json.loads(navi)
|
self.navi = json.loads(navi)
|
||||||
self.navi_restore()
|
self.navi_restore()
|
||||||
|
|
||||||
def navi_save(self, mode = None):
|
def navi_save(self, mode = None):
|
||||||
log('navi_save init')
|
debug('navi_save init')
|
||||||
|
|
||||||
if mode: self.set_focus(mode)
|
if mode: self.set_focus(mode)
|
||||||
|
|
||||||
|
@ -252,23 +263,23 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
write.close()
|
write.close()
|
||||||
|
|
||||||
def navi_update(self):
|
def navi_update(self):
|
||||||
log('navi_update init')
|
debug('navi_update init')
|
||||||
try:
|
try:
|
||||||
focused_control = self.getFocus()
|
focused_control = self.getFocus()
|
||||||
except:
|
except:
|
||||||
focused_control = None
|
focused_control = None
|
||||||
debug('start navi_update' + str(focused_control))
|
debug('start navi_update' + str(focused_control))
|
||||||
log(str(self.navi['route']))
|
debug(str(self.navi['route']))
|
||||||
|
|
||||||
if focused_control == self.listing:
|
if focused_control == self.listing:
|
||||||
item_index = self.listing.getSelectedPosition()
|
item_index = self.listing.getSelectedPosition()
|
||||||
self.navi['route'][-1]['last_listing_item'] = item_index
|
self.navi['route'][-1]['last_listing_item'] = item_index
|
||||||
log('self.listing getSelectedPosition ' + str(item_index))
|
debug('self.listing getSelectedPosition ' + str(item_index))
|
||||||
|
|
||||||
item = self.listing.getSelectedItem()
|
item = self.listing.getSelectedItem()
|
||||||
params = json.loads(item.getfilename())
|
params = json.loads(item.getfilename())
|
||||||
mode = params.get('mode')
|
mode = params.get('mode')
|
||||||
log('navi_update:' + str(mode))
|
debug('navi_update:' + str(mode))
|
||||||
if self.last_listing_mode != mode:
|
if self.last_listing_mode != mode:
|
||||||
self.last_listing_mode = mode
|
self.last_listing_mode = mode
|
||||||
debug('set_menulist navi_update:' + str(mode))
|
debug('set_menulist navi_update:' + str(mode))
|
||||||
|
@ -284,17 +295,17 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
self.update_navigation()
|
self.update_navigation()
|
||||||
|
|
||||||
def navi_route(self, mode, params = {}, right_menu = None):
|
def navi_route(self, mode, params = {}, right_menu = None):
|
||||||
log('navi_route init')
|
debug('navi_route init')
|
||||||
try:
|
try:
|
||||||
focused_control = self.getFocus()
|
focused_control = self.getFocus()
|
||||||
except:
|
except:
|
||||||
focused_control = None
|
focused_control = None
|
||||||
|
|
||||||
if focused_control in self.navi_top_menu:
|
if focused_control in self.navi_top_menu:
|
||||||
log('focused_control in self.navi[\'top_menu\']')
|
debug('focused_control in self.navi[\'top_menu\']')
|
||||||
self.navi_route_reset()
|
self.navi_route_reset()
|
||||||
|
|
||||||
log('***** self.navi[\'route\'].append *****' + str(mode) + str(params))
|
debug('***** self.navi[\'route\'].append *****' + str(mode) + str(params))
|
||||||
|
|
||||||
self.navi['route'].append({'mode': mode,
|
self.navi['route'].append({'mode': mode,
|
||||||
'params': params,
|
'params': params,
|
||||||
|
@ -304,8 +315,11 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
self.listing.reset()
|
self.listing.reset()
|
||||||
|
|
||||||
def set_focus(self, mode):
|
def set_focus(self, mode):
|
||||||
if mode and not self.listing.size() and hasattr(self, "button_" + mode):
|
if not self.listing.size():
|
||||||
|
if mode and hasattr(self, "button_" + mode):
|
||||||
self.setFocus(getattr(self, "button_" + mode))
|
self.setFocus(getattr(self, "button_" + mode))
|
||||||
|
else:
|
||||||
|
self.setFocus(self.input_search)
|
||||||
else:
|
else:
|
||||||
self.setFocus(self.listing)
|
self.setFocus(self.listing)
|
||||||
|
|
||||||
|
@ -316,7 +330,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
get = params.get
|
get = params.get
|
||||||
addtime = get('addtime')
|
addtime = get('addtime')
|
||||||
query = get('query')
|
query = get('query')
|
||||||
route = self.navi['route'][-1]
|
self.route = self.navi['route'][-1]
|
||||||
|
|
||||||
if query:
|
if query:
|
||||||
self.input_search.setText(query)
|
self.input_search.setText(query)
|
||||||
|
@ -331,10 +345,10 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
searchersList = get_searchersList(addtime)
|
searchersList = get_searchersList(addtime)
|
||||||
|
|
||||||
# cache
|
# cache
|
||||||
route['params']['query'] = query
|
self.route['params']['query'] = query
|
||||||
if (query != self.navi['last_query'] or self.navi['searchersList'] != searchersList) and len(query) > 0:
|
if (query != self.navi['last_query'] or self.navi['searchersList'] != searchersList) and len(query) > 0:
|
||||||
self.navi['filesList'] = get_filesList(query, searchersList, addtime)
|
self.navi['filesList'] = get_filesList(query, searchersList, addtime)
|
||||||
route['params']['addtime'] = addtime
|
self.route['params']['addtime'] = addtime
|
||||||
self.navi['last_addtime'] = addtime
|
self.navi['last_addtime'] = addtime
|
||||||
self.navi['searchersList'] = searchersList
|
self.navi['searchersList'] = searchersList
|
||||||
self.navi['last_query'] = query
|
self.navi['last_query'] = query
|
||||||
|
@ -449,6 +463,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
||||||
__settings__.setSetting("lastTorrent", torrent.saveTorrent(url))
|
__settings__.setSetting("lastTorrent", torrent.saveTorrent(url))
|
||||||
xbmc.executebuiltin('xbmc.RunPlugin("plugin://plugin.video.torrenter/?action=playTorrent&url='+str(ind)+'&seek='+str(seek)+'")')
|
xbmc.executebuiltin('xbmc.RunPlugin("plugin://plugin.video.torrenter/?action=playTorrent&url='+str(ind)+'&seek='+str(seek)+'")')
|
||||||
|
__settings__.setSetting('loadsw_onstop', 'true')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
if action == 'clear':
|
if action == 'clear':
|
||||||
|
@ -574,7 +589,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
filename = data[0]
|
filename = data[0]
|
||||||
break
|
break
|
||||||
filename = os.path.join(folder, filename)
|
filename = os.path.join(folder, filename)
|
||||||
xbmc.executebuiltin('xbmc.PlayMedia("' + filename.encode('utf-8') + '")')
|
self.file_play(filename)
|
||||||
elif tdir and action == 'copy':
|
elif tdir and action == 'copy':
|
||||||
path = os.path.join(folder, tdir)
|
path = os.path.join(folder, tdir)
|
||||||
dirs, files = xbmcvfs.listdir(path)
|
dirs, files = xbmcvfs.listdir(path)
|
||||||
|
@ -744,13 +759,11 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
path = encode_msg(path)
|
path = encode_msg(path)
|
||||||
tdir = encode_msg(tdir)
|
tdir = encode_msg(tdir)
|
||||||
|
|
||||||
if tdir == os.path.dirname(path):
|
if mode == 'moveup' and tdir == os.path.dirname(path):
|
||||||
self.downloadstatus()
|
self.downloadstatus()
|
||||||
elif mode == 'file':
|
elif mode == 'file':
|
||||||
xbmc.Player().play(localize_path(tdir))
|
swPlayer().play(localize_path(tdir))
|
||||||
self.close()
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
self.drawItem('..', {'mode': 'moveup', 'path': path,
|
self.drawItem('..', {'mode': 'moveup', 'path': path,
|
||||||
'tdir': os.path.dirname(tdir)}, image = 'DefaultFolderBack.png', isFolder=True)
|
'tdir': os.path.dirname(tdir)}, image = 'DefaultFolderBack.png', isFolder=True)
|
||||||
|
|
||||||
|
@ -767,6 +780,10 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
|
|
||||||
self.navi_save('file_browser')
|
self.navi_save('file_browser')
|
||||||
|
|
||||||
|
def file_play(self, file):
|
||||||
|
self.close()
|
||||||
|
swPlayer().play(item = file)
|
||||||
|
|
||||||
def open_torrent(self, params):
|
def open_torrent(self, params):
|
||||||
self.navi_route('open_torrent', params)
|
self.navi_route('open_torrent', params)
|
||||||
|
|
||||||
|
@ -1013,6 +1030,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
if index == 1:
|
if index == 1:
|
||||||
url = self.form_link('playTorrent', params)
|
url = self.form_link('playTorrent', params)
|
||||||
xbmc.executebuiltin('xbmc.RunPlugin("%s")' % (url))
|
xbmc.executebuiltin('xbmc.RunPlugin("%s")' % (url))
|
||||||
|
__settings__.setSetting('loadsw_onstop', 'true')
|
||||||
self.close()
|
self.close()
|
||||||
elif index == 2:
|
elif index == 2:
|
||||||
action = 'downloadFilesList'
|
action = 'downloadFilesList'
|
||||||
|
@ -1066,9 +1084,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
||||||
elif index == 3: action = '0'
|
elif index == 3: action = '0'
|
||||||
|
|
||||||
self.browser_action(hash, action, tdir = tdir, ind = ind)
|
self.browser_action(hash, action, tdir = tdir, ind = ind)
|
||||||
|
|
||||||
if index == 1:
|
|
||||||
self.close()
|
|
||||||
elif mode in ['downloadstatus', 'downloadstatus_subfolder', 'downloadstatus_file']:
|
elif mode in ['downloadstatus', 'downloadstatus_subfolder', 'downloadstatus_file']:
|
||||||
if index == 1: action = 'play'
|
if index == 1: action = 'play'
|
||||||
elif index == 2: action = 'start'
|
elif index == 2: action = 'start'
|
||||||
|
@ -1210,6 +1225,24 @@ def main(params = None):
|
||||||
del dialog # You need to delete your instance when it is no longer needed
|
del dialog # You need to delete your instance when it is no longer needed
|
||||||
# because underlying xbmcgui classes are not grabage-collected.
|
# because underlying xbmcgui classes are not grabage-collected.
|
||||||
|
|
||||||
|
class swPlayer(xbmc.Player):
|
||||||
|
def play(self, item):
|
||||||
|
xbmc.Player().play(item = item)
|
||||||
|
i = 0
|
||||||
|
while not self.isPlaying() and i < 100:
|
||||||
|
i += 1
|
||||||
|
xbmc.sleep(500)
|
||||||
|
log('swPlayer not started '+str(i))
|
||||||
|
|
||||||
|
if i > 99:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
while not xbmc.abortRequested and self.isPlaying():
|
||||||
|
xbmc.sleep(500)
|
||||||
|
log('swPlayer playing')
|
||||||
|
|
||||||
|
params = {'mode': 'load'}
|
||||||
|
main(params)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue