watched history, torr2http dialog
parent
de2323f7af
commit
a5704f7cc3
File diff suppressed because it is too large
Load Diff
|
@ -37,7 +37,7 @@ import sys
|
||||||
from contextlib import contextmanager, closing, nested
|
from contextlib import contextmanager, closing, nested
|
||||||
|
|
||||||
|
|
||||||
from functions import calculate, showMessage, clearStorage, DownloadDB, get_ids_video, log, debug
|
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, get_ids_video, log, debug
|
||||||
|
|
||||||
from torrent2http import State, Engine, MediaType
|
from torrent2http import State, Engine, MediaType
|
||||||
|
|
||||||
|
@ -253,6 +253,10 @@ class AnteoPlayer(xbmc.Player):
|
||||||
seeding_run = False
|
seeding_run = False
|
||||||
ids_video = None
|
ids_video = None
|
||||||
episodeId = None
|
episodeId = None
|
||||||
|
fullSize = 0
|
||||||
|
watchedTime = 0
|
||||||
|
totalTime = 1
|
||||||
|
seek = 0
|
||||||
basename = ''
|
basename = ''
|
||||||
|
|
||||||
def __init__(self, userStorageDirectory, torrentUrl, params={}):
|
def __init__(self, userStorageDirectory, torrentUrl, params={}):
|
||||||
|
@ -263,6 +267,8 @@ class AnteoPlayer(xbmc.Player):
|
||||||
self.params = params
|
self.params = params
|
||||||
self.get = self.params.get
|
self.get = self.params.get
|
||||||
self.contentId = int(self.get("url"))
|
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.torrent = AnteoLoader(self.userStorageDirectory, self.torrentUrl, self.torrentFilesDirectory)
|
||||||
self.init()
|
self.init()
|
||||||
self.setup_engine()
|
self.setup_engine()
|
||||||
|
@ -275,6 +281,7 @@ class AnteoPlayer(xbmc.Player):
|
||||||
if self.setup_play():
|
if self.setup_play():
|
||||||
self.setup_subs()
|
self.setup_subs()
|
||||||
self.loop()
|
self.loop()
|
||||||
|
WatchedHistoryDB().add(self.basename, self.watchedTime, self.totalTime, self.contentId, self.fullSize)
|
||||||
else:
|
else:
|
||||||
log('[AnteoPlayer]: ************************************* break')
|
log('[AnteoPlayer]: ************************************* break')
|
||||||
break
|
break
|
||||||
|
@ -379,22 +386,25 @@ class AnteoPlayer(xbmc.Player):
|
||||||
xbmc.sleep(500)
|
xbmc.sleep(500)
|
||||||
status = self.engine.status()
|
status = self.engine.status()
|
||||||
self.print_debug(status)
|
self.print_debug(status)
|
||||||
|
#self.print_fulldebug()
|
||||||
self.engine.check_torrent_error(status)
|
self.engine.check_torrent_error(status)
|
||||||
file_status = self.engine.file_status(self.contentId)
|
file_status = self.engine.file_status(self.contentId)
|
||||||
if not file_status:
|
if not file_status:
|
||||||
continue
|
continue
|
||||||
fullSize = file_status.size / 1024 / 1024
|
self.fullSize = int(file_status.size / 1024 / 1024)
|
||||||
downloadedSize = status.total_download / 1024 / 1024
|
downloadedSize = status.total_download / 1024 / 1024
|
||||||
getDownloadRate = status.download_rate / 1024 * 8
|
getDownloadRate = status.download_rate / 1024 * 8
|
||||||
getUploadRate = status.upload_rate / 1024 * 8
|
getUploadRate = status.upload_rate / 1024 * 8
|
||||||
getSeeds, getPeers = status.num_seeds, status.num_peers
|
getSeeds, getPeers = status.num_seeds, status.num_peers
|
||||||
iterator = int(round(float(file_status.download) / self.pre_buffer_bytes, 2) * 100)
|
iterator = int(round(float(file_status.download) / self.pre_buffer_bytes, 2) * 100)
|
||||||
if iterator > 99: iterator = 99
|
if iterator > 99: iterator = 99
|
||||||
if status.state == State.QUEUED_FOR_CHECKING:
|
if status.state == State.CHECKING_FILES:
|
||||||
|
iterator = int(status.progress*100)
|
||||||
|
if iterator > 99: iterator = 99
|
||||||
progressBar.update(iterator, self.localize('Checking preloaded files...'), ' ', ' ')
|
progressBar.update(iterator, self.localize('Checking preloaded files...'), ' ', ' ')
|
||||||
elif status.state == State.DOWNLOADING:
|
elif status.state == State.DOWNLOADING:
|
||||||
dialogText = self.localize('Preloaded: ') + "%d MB / %d MB" % \
|
dialogText = self.localize('Preloaded: ') + "%d MB / %d MB" % \
|
||||||
(int(downloadedSize), int(fullSize))
|
(int(downloadedSize), self.fullSize)
|
||||||
peersText = ' [%s: %s; %s: %s]' % (
|
peersText = ' [%s: %s; %s: %s]' % (
|
||||||
self.localize('Seeds'), getSeeds, self.localize('Peers'), getPeers)
|
self.localize('Seeds'), getSeeds, self.localize('Peers'), getPeers)
|
||||||
speedsText = '%s: %d Mbit/s; %s: %d Mbit/s' % (
|
speedsText = '%s: %d Mbit/s; %s: %d Mbit/s' % (
|
||||||
|
@ -443,6 +453,8 @@ class AnteoPlayer(xbmc.Player):
|
||||||
def setup_play(self):
|
def setup_play(self):
|
||||||
file_status = self.engine.file_status(self.contentId)
|
file_status = self.engine.file_status(self.contentId)
|
||||||
self.iterator = 0
|
self.iterator = 0
|
||||||
|
self.watchedTime = 0
|
||||||
|
self.totalTime = 1
|
||||||
url = file_status.url
|
url = file_status.url
|
||||||
label = os.path.basename(file_status.name)
|
label = os.path.basename(file_status.name)
|
||||||
self.basename = label
|
self.basename = label
|
||||||
|
@ -487,6 +499,12 @@ class AnteoPlayer(xbmc.Player):
|
||||||
player.play(url, listitem)
|
player.play(url, listitem)
|
||||||
|
|
||||||
xbmc.sleep(2000) # very important, do not edit this, podavan
|
xbmc.sleep(2000) # very important, do not edit this, podavan
|
||||||
|
if self.seek > 0:
|
||||||
|
while not self.isPlaying():
|
||||||
|
xbmc.sleep(200)
|
||||||
|
log('seekTime')
|
||||||
|
log('[AnteoPlayer]: seekTime - '+str(self.seek))
|
||||||
|
self.seekTime(self.seek)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def setup_subs(self):
|
def setup_subs(self):
|
||||||
|
@ -515,6 +533,8 @@ class AnteoPlayer(xbmc.Player):
|
||||||
#self.print_fulldebug()
|
#self.print_fulldebug()
|
||||||
status = self.engine.status()
|
status = self.engine.status()
|
||||||
file_status = self.engine.file_status(self.contentId)
|
file_status = self.engine.file_status(self.contentId)
|
||||||
|
self.watchedTime = xbmc.Player().getTime()
|
||||||
|
self.totalTime = xbmc.Player().getTotalTime()
|
||||||
if self.iterator == 100 and debug_counter < 100:
|
if self.iterator == 100 and debug_counter < 100:
|
||||||
debug_counter += 1
|
debug_counter += 1
|
||||||
else:
|
else:
|
||||||
|
|
101
Core.py
101
Core.py
|
@ -54,12 +54,13 @@ 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_242()
|
||||||
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()
|
||||||
if self.__plugin__ == 'Torrenter v.2.4.1b':
|
#if self.__plugin__ == 'Torrenter v.2.4.1b':
|
||||||
first_run_241()
|
# first_run_242()
|
||||||
pass
|
# pass
|
||||||
|
|
||||||
ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=%s&action2=%s&%s=%s')
|
ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=%s&action2=%s&%s=%s')
|
||||||
contextMenu = [(self.localize('Search Control Window'),
|
contextMenu = [(self.localize('Search Control Window'),
|
||||||
|
@ -88,6 +89,13 @@ class Core:
|
||||||
contextMenu=DLScontextMenu, replaceMenu=False)
|
contextMenu=DLScontextMenu, replaceMenu=False)
|
||||||
self.drawItem('< %s >' % self.localize('Torrent-client Browser'), 'uTorrentBrowser',
|
self.drawItem('< %s >' % self.localize('Torrent-client Browser'), 'uTorrentBrowser',
|
||||||
image=self.ROOT + '/icons/' + self.getTorrentClientIcon())
|
image=self.ROOT + '/icons/' + self.getTorrentClientIcon())
|
||||||
|
if self.history_bool:
|
||||||
|
WatchedHistorycontextMenu=[]
|
||||||
|
WatchedHistorycontextMenu.extend(contextMenu)
|
||||||
|
WatchedHistorycontextMenu.append(
|
||||||
|
(self.localize('Clear %s') % self.localize('Watched History'), ListString % ('WatchedHistory', 'clear', 'addtime', '')))
|
||||||
|
self.drawItem('< %s >' % self.localize('Watched History'), 'WatchedHistory',
|
||||||
|
image=self.ROOT + '/icons/watched.png', contextMenu=WatchedHistorycontextMenu, replaceMenu=False)
|
||||||
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')
|
||||||
self.drawItem('< %s >' % self.localize('Search Control Window'), 'controlCenter',
|
self.drawItem('< %s >' % self.localize('Search Control Window'), 'controlCenter',
|
||||||
|
@ -233,23 +241,27 @@ class Core:
|
||||||
lockView('wide')
|
lockView('wide')
|
||||||
|
|
||||||
def test(self, params={}):
|
def test(self, params={}):
|
||||||
from Anteoloader import AnteoPlayer
|
#from Anteoloader import AnteoPlayer
|
||||||
torrentUrl='D:\\test.torrent'
|
#torrentUrl='D:\\test.torrent'
|
||||||
params['url']='0'
|
#params['url']='0'
|
||||||
if not xbmcvfs.exists(torrentUrl):
|
#if not xbmcvfs.exists(torrentUrl):
|
||||||
action = xbmcgui.Dialog()
|
# action = xbmcgui.Dialog()
|
||||||
torrentUrl = action.browse(1, self.localize('Choose .torrent in video library'), 'video', '.torrent')
|
# torrentUrl = action.browse(1, self.localize('Choose .torrent in video library'), 'video', '.torrent')
|
||||||
if torrentUrl and xbmcvfs.exists(torrentUrl):
|
#if torrentUrl and xbmcvfs.exists(torrentUrl):
|
||||||
if 0 != len(torrentUrl):
|
# if 0 != len(torrentUrl):
|
||||||
self.Downloader = Downloader.Torrent(self.userStorageDirectory, torrentUrl)
|
# self.Downloader = Downloader.Torrent(self.userStorageDirectory, torrentUrl)
|
||||||
else:
|
# else:
|
||||||
log(self.__plugin__ + " Unexpected access to method Anteoloader() without torrent content")
|
# log(self.__plugin__ + " Unexpected access to method Anteoloader() without torrent content")
|
||||||
#if self.Downloader:
|
#if self.Downloader:
|
||||||
# x=self.Downloader.getContentList()
|
# x=self.Downloader.getContentList()
|
||||||
# print str(x)
|
# print str(x)
|
||||||
# xbmc.sleep(1000)
|
# xbmc.sleep(1000)
|
||||||
# self.Downloader.__exit__()
|
# self.Downloader.__exit__()
|
||||||
self.Player = AnteoPlayer(userStorageDirectory=self.userStorageDirectory, torrentUrl=torrentUrl, params=params)
|
#self.Player = AnteoPlayer(userStorageDirectory=self.userStorageDirectory, torrentUrl=torrentUrl, params=params)
|
||||||
|
yes=xbmcgui.Dialog().yesno('< %s >' % (Localization.localize('Torrenter Update ') + '2.4.2'),
|
||||||
|
Localization.localize('New player to Torrenter v2 - Torrent2HTTP! It should be faster, '
|
||||||
|
'stable and better with Android, also seeking works in it.'),
|
||||||
|
Localization.localize('Would you like to try it?'),)
|
||||||
|
|
||||||
def DownloadStatus(self, params={}):
|
def DownloadStatus(self, params={}):
|
||||||
db = DownloadDB()
|
db = DownloadDB()
|
||||||
|
@ -449,6 +461,65 @@ class Core:
|
||||||
view_style('History')
|
view_style('History')
|
||||||
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||||
|
|
||||||
|
def WatchedHistory(self, params={}):
|
||||||
|
db = WatchedHistoryDB()
|
||||||
|
get = params.get
|
||||||
|
action2 = get('action2')
|
||||||
|
url = get('url')
|
||||||
|
addtime = get('addtime')
|
||||||
|
|
||||||
|
if action2 == 'add':
|
||||||
|
db.add(url)
|
||||||
|
xbmc.executebuiltin('Container.Refresh')
|
||||||
|
showMessage(self.localize('Watched History'), self.localize('Added!'))
|
||||||
|
|
||||||
|
if action2 == 'delete':
|
||||||
|
db.delete(addtime)
|
||||||
|
xbmc.executebuiltin('Container.Refresh')
|
||||||
|
showMessage(self.localize('Watched History'), self.localize('Deleted!'))
|
||||||
|
|
||||||
|
if action2 == 'play':
|
||||||
|
filename, path, url, seek, length, ind = db.get('filename, path, url, seek, length, ind', 'addtime', str(addtime))
|
||||||
|
seek = int(seek) if int(seek) > 3*60 else 0
|
||||||
|
if seek > 0:
|
||||||
|
seek = seeking_warning(seek)
|
||||||
|
if os.path.exists(path):
|
||||||
|
self.__settings__.setSetting("lastTorrent", path)
|
||||||
|
else:
|
||||||
|
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
||||||
|
self.__settings__.setSetting("lastTorrent", torrent.saveTorrent(url))
|
||||||
|
xbmc.executebuiltin('xbmc.RunPlugin("plugin://plugin.video.torrenter/?action=playTorrent&url='+str(ind)+'&seek='+str(seek)+'")')
|
||||||
|
|
||||||
|
if action2 == 'clear':
|
||||||
|
db.clear()
|
||||||
|
showMessage(self.localize('Watched History'), self.localize('Clear!'))
|
||||||
|
|
||||||
|
if not action2:
|
||||||
|
items = db.get_all()
|
||||||
|
debug('[WatchedHistory]: items - '+str(items))
|
||||||
|
#favlist = [(1, '[B]%s[/B]'), (0, '%s')]
|
||||||
|
if items:
|
||||||
|
ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=%s&action2=%s&%s=%s')
|
||||||
|
#for favbool, bbstring in favlist:
|
||||||
|
for addtime, filename, path, url, seek, length, ind, size in items:
|
||||||
|
watchedPercent = int((float(seek) / float(length)) * 100)
|
||||||
|
duration = '%02d:%02d:%02d' % ((length / (60*60)), (length / 60) % 60, length % 60)
|
||||||
|
title = '[%d%%][%s] %s [%d MB]' % (watchedPercent, duration, filename.encode('utf-8'), int(size))
|
||||||
|
contextMenu = [(self.localize('Search Control Window'),
|
||||||
|
'xbmc.RunScript(%s,)' % os.path.join(ROOT, 'controlcenter.py'))]
|
||||||
|
if watchedPercent >= 85:
|
||||||
|
img = self.ROOT + '/icons/stop-icon.png'
|
||||||
|
else:
|
||||||
|
img = self.ROOT + '/icons/pause-icon.png'
|
||||||
|
|
||||||
|
contextMenu.append((self.localize('Delete from %s') % self.localize('Watched History'),
|
||||||
|
ListString % ('WatchedHistory', 'delete', 'addtime', str(addtime))))
|
||||||
|
|
||||||
|
link = {'url': str(ind), 'action2': 'play', 'addtime': str(addtime)}
|
||||||
|
self.drawItem(title, 'WatchedHistory', link, image=img, contextMenu=contextMenu, replaceMenu=False)
|
||||||
|
view_style('History')
|
||||||
|
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||||
|
|
||||||
def List(self, params={}):
|
def List(self, params={}):
|
||||||
db = ListDB()
|
db = ListDB()
|
||||||
get = params.get
|
get = params.get
|
||||||
|
|
|
@ -175,6 +175,9 @@ def localize(text):
|
||||||
'Added!': 'Добавлено',
|
'Added!': 'Добавлено',
|
||||||
'Deleted!': 'Удалено!',
|
'Deleted!': 'Удалено!',
|
||||||
'Search History': 'История Поиска',
|
'Search History': 'История Поиска',
|
||||||
|
' History ':' История ',
|
||||||
|
'Torrent History':'История Торрентов',
|
||||||
|
'Watched History':'История Просмотров',
|
||||||
'Favourites': 'Избранное',
|
'Favourites': 'Избранное',
|
||||||
'Favourites SH': 'Избранное ИП',
|
'Favourites SH': 'Избранное ИП',
|
||||||
'Clear %s': 'Очистить %s',
|
'Clear %s': 'Очистить %s',
|
||||||
|
@ -273,8 +276,13 @@ def localize(text):
|
||||||
'Please, restart Kodi now!':'Теперь перезагрузите Коди, пожалуйста!',
|
'Please, restart Kodi now!':'Теперь перезагрузите Коди, пожалуйста!',
|
||||||
'./ (Root folder)':'./ (Корневой каталог)',
|
'./ (Root folder)':'./ (Корневой каталог)',
|
||||||
'Opening torrent file':'Открытие torrent-файла',
|
'Opening torrent file':'Открытие torrent-файла',
|
||||||
'New player to Torrenter v2 - Torrent2HTTP! It can be enabled in settings.':'В Torrenter новый плеер - Torrent2HTTP! Включить его можно в настройках.',
|
'New player to Torrenter v2 - Torrent2HTTP! It should be faster, stable and better with Android, also seeking works in it.':'В Torrenter новый плеер - Torrent2HTTP! Он стабильнее, быстрее и отлично ладит с Android, в нем работает перемотка.',
|
||||||
'It should be faster, stable and better with Android, also seeking works in it.':'Он стабильнее, быстрее и отлично ладит с Android, в нем работает перемотка.',
|
'Would you like to try it?':'Хотите его попробовать?',
|
||||||
|
'Torrent2HTTP enabled! Can be changed in Settings.':'Torrent2HTTP включен! Можно изменить в Настройках.',
|
||||||
|
'Seeking':'Перемотка',
|
||||||
|
'Would you like to resume from %s?':'Хотите начать проигрывать с %s?',
|
||||||
|
'Seeking is working only with player Torrent2HTTP.':'Перемотка работает только с плеером Torrent2HTTP.',
|
||||||
|
|
||||||
},
|
},
|
||||||
'uk': {
|
'uk': {
|
||||||
'Seeds searching.': 'Йде пошук сідів.',
|
'Seeds searching.': 'Йде пошук сідів.',
|
||||||
|
|
|
@ -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.4.1b" provider-name="vadim.skorba, DiMartino">
|
<addon id="plugin.video.torrenter" name="Torrenter" version="2.4.2" provider-name="vadim.skorba, 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"/>
|
||||||
|
|
137
functions.py
137
functions.py
|
@ -1000,6 +1000,102 @@ class HistoryDB:
|
||||||
self.db.close()
|
self.db.close()
|
||||||
|
|
||||||
|
|
||||||
|
class WatchedHistoryDB:
|
||||||
|
def __init__(self, version=1.2):
|
||||||
|
self.name = 'watched_history.db3'
|
||||||
|
self.version = version
|
||||||
|
self.history_bool = __settings__.getSetting('history') == 'true'
|
||||||
|
|
||||||
|
def get_all(self):
|
||||||
|
self._connect()
|
||||||
|
self.cur.execute('select addtime,filename,path,url,seek,length,ind,size from history order by addtime DESC')
|
||||||
|
x = self.cur.fetchall()
|
||||||
|
self._close()
|
||||||
|
return x if x else None
|
||||||
|
|
||||||
|
def get(self, get, by, equal):
|
||||||
|
self._connect()
|
||||||
|
self.cur.execute('select '+get+' from history where '+by+'="' + equal + '"')
|
||||||
|
x = self.cur.fetchone()
|
||||||
|
self._close()
|
||||||
|
return x if x else None
|
||||||
|
|
||||||
|
def add(self, filename, seek = 0, length = 1, ind = 0, size = 0):
|
||||||
|
if self.history_bool:
|
||||||
|
self._connect()
|
||||||
|
url = __settings__.getSetting("lastTorrentUrl")
|
||||||
|
path = __settings__.getSetting("lastTorrent")
|
||||||
|
self.cur.execute('delete from history where filename="' + decode(filename) + '"')
|
||||||
|
self.cur.execute('insert into history(addtime,filename,path,url,seek,length,ind,size)'
|
||||||
|
' values(?,?,?,?,?,?,?,?)', (int(time.time()), decode(filename), decode(path),
|
||||||
|
decode(url), str(int(seek)), str(int(length)), str(ind), str(size)))
|
||||||
|
self.db.commit()
|
||||||
|
self._close()
|
||||||
|
|
||||||
|
def update(self, what, to, by, equal):
|
||||||
|
self._connect()
|
||||||
|
self.cur.execute('UPDATE history SET '+what+' = ' + to + ' where '+by+'=' + equal)
|
||||||
|
self.db.commit()
|
||||||
|
self._close()
|
||||||
|
|
||||||
|
def delete(self, addtime):
|
||||||
|
self._connect()
|
||||||
|
self.cur.execute('delete from history where addtime="' + addtime + '"')
|
||||||
|
self.db.commit()
|
||||||
|
self._close()
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self._connect()
|
||||||
|
self.cur.execute('delete from history')
|
||||||
|
self.db.commit()
|
||||||
|
self._close()
|
||||||
|
|
||||||
|
def _connect(self):
|
||||||
|
dirname = xbmc.translatePath('special://temp')
|
||||||
|
for subdir in ('xbmcup', 'plugin.video.torrenter'):
|
||||||
|
dirname = os.path.join(dirname, subdir)
|
||||||
|
if not xbmcvfs.exists(dirname):
|
||||||
|
xbmcvfs.mkdir(dirname)
|
||||||
|
|
||||||
|
self.filename = os.path.join(dirname, self.name)
|
||||||
|
|
||||||
|
first = False
|
||||||
|
if not xbmcvfs.exists(self.filename):
|
||||||
|
first = True
|
||||||
|
|
||||||
|
self.db = sqlite.connect(self.filename, check_same_thread=False)
|
||||||
|
if not first:
|
||||||
|
self.cur = self.db.cursor()
|
||||||
|
try:
|
||||||
|
self.cur.execute('select version from db_ver')
|
||||||
|
row = self.cur.fetchone()
|
||||||
|
if not row or float(row[0]) != self.version:
|
||||||
|
self.cur.execute('drop table history')
|
||||||
|
self.cur.execute('drop table if exists db_ver')
|
||||||
|
first = True
|
||||||
|
self.db.commit()
|
||||||
|
self.cur.close()
|
||||||
|
except:
|
||||||
|
self.cur.execute('drop table history')
|
||||||
|
first = True
|
||||||
|
self.db.commit()
|
||||||
|
self.cur.close()
|
||||||
|
|
||||||
|
if first:
|
||||||
|
cur = self.db.cursor()
|
||||||
|
cur.execute('pragma auto_vacuum=1')
|
||||||
|
cur.execute('create table db_ver(version real)')
|
||||||
|
cur.execute(
|
||||||
|
'create table history(addtime integer PRIMARY KEY, filename varchar(32), path varchar(32), url varchar(32), seek integer, length integer, ind integer, size integer)')
|
||||||
|
cur.execute('insert into db_ver(version) values(?)', (self.version,))
|
||||||
|
self.db.commit()
|
||||||
|
cur.close()
|
||||||
|
self.cur = self.db.cursor()
|
||||||
|
|
||||||
|
def _close(self):
|
||||||
|
self.cur.close()
|
||||||
|
self.db.close()
|
||||||
|
|
||||||
class Searchers():
|
class Searchers():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
@ -1637,10 +1733,43 @@ def first_run_231():
|
||||||
xbmc.executebuiltin('Dialog.Close(all,true)')
|
xbmc.executebuiltin('Dialog.Close(all,true)')
|
||||||
xbmc.executebuiltin('XBMC.ActivateWindow(Addonbrowser,addons://search/%s)' % ('Torrenter Searcher'))
|
xbmc.executebuiltin('XBMC.ActivateWindow(Addonbrowser,addons://search/%s)' % ('Torrenter Searcher'))
|
||||||
|
|
||||||
def first_run_241():
|
def first_run_242():
|
||||||
ok = xbmcgui.Dialog().ok('< %s >' % Localization.localize('Torrenter Update ') + '2.4.1',
|
if __settings__.getSetting('torrent_player')=='2':
|
||||||
Localization.localize('New player to Torrenter v2 - Torrent2HTTP! It can be enabled in settings.'),
|
__settings__.setSetting('first_run_242','True')
|
||||||
Localization.localize('It should be faster, stable and better with Android, also seeking works in it.'))
|
|
||||||
|
if not __settings__.getSetting('first_run_242')=='True':
|
||||||
|
__settings__.setSetting('first_run_242','True')
|
||||||
|
yes=xbmcgui.Dialog().yesno('< %s >' % (Localization.localize('Torrenter Update ') + '2.4.2'),
|
||||||
|
Localization.localize('New player to Torrenter v2 - Torrent2HTTP! It should be faster, '
|
||||||
|
'stable and better with Android, also seeking works in it.'),
|
||||||
|
Localization.localize('Would you like to try it?'),)
|
||||||
|
if yes:
|
||||||
|
__settings__.setSetting('torrent_player','2')
|
||||||
|
ok = xbmcgui.Dialog().ok('< %s >' % (Localization.localize('Torrenter Update ') + '2.4.2'),
|
||||||
|
Localization.localize('Torrent2HTTP enabled! Can be changed in Settings.'))
|
||||||
|
|
||||||
|
def seeking_warning(seek):
|
||||||
|
if __settings__.getSetting('torrent_player')=='2':
|
||||||
|
seek_point = '%02d:%02d:%02d' % ((seek / (60*60)), (seek / 60) % 60, seek % 60)
|
||||||
|
yes=xbmcgui.Dialog().yesno('< %s >' % (Localization.localize('Seeking')),
|
||||||
|
Localization.localize('Would you like to resume from %s?') % seek_point,)
|
||||||
|
if yes:
|
||||||
|
log('[seeking_warning]: yes, seek = '+str(seek))
|
||||||
|
return seek
|
||||||
|
else:
|
||||||
|
log('[seeking_warning]: no, seek = '+str(0))
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
if not __settings__.getSetting('seeking_warning')=='True':
|
||||||
|
__settings__.setSetting('seeking_warning','True')
|
||||||
|
yes=xbmcgui.Dialog().yesno('< %s >' % (Localization.localize('Seeking')),
|
||||||
|
Localization.localize('Seeking is working only with player Torrent2HTTP.'),
|
||||||
|
Localization.localize('Would you like to try it?'))
|
||||||
|
if yes:
|
||||||
|
__settings__.setSetting('torrent_player','2')
|
||||||
|
ok = xbmcgui.Dialog().ok('< %s >' % (Localization.localize('Seeking')),
|
||||||
|
Localization.localize('Torrent2HTTP enabled! Can be changed in Settings.'))
|
||||||
|
return seek
|
||||||
|
|
||||||
def noActiveSerachers():
|
def noActiveSerachers():
|
||||||
yes=xbmcgui.Dialog().yesno('< %s >' % Localization.localize('Torrenter v2'),
|
yes=xbmcgui.Dialog().yesno('< %s >' % Localization.localize('Torrenter v2'),
|
||||||
|
|
Loading…
Reference in New Issue