history update
parent
16cc3c5aa2
commit
c41d55ef1c
File diff suppressed because it is too large
Load Diff
|
@ -38,7 +38,7 @@ import sys
|
|||
from contextlib import contextmanager, closing, nested
|
||||
|
||||
|
||||
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, get_ids_video, log, debug, ensure_str
|
||||
from functions import foldername, showMessage, clearStorage, WatchedHistoryDB, get_ids_video, log, debug, ensure_str
|
||||
|
||||
from torrent2http import State, Engine, MediaType
|
||||
|
||||
|
@ -282,7 +282,7 @@ class AnteoPlayer(xbmc.Player):
|
|||
if self.setup_play():
|
||||
self.setup_subs()
|
||||
self.loop()
|
||||
WatchedHistoryDB().add(self.basename, self.watchedTime, self.totalTime, self.contentId, self.fullSize)
|
||||
WatchedHistoryDB().add(self.basename, foldername(self.getContentList()[self.contentId]['title']), self.watchedTime, self.totalTime, self.contentId, self.fullSize)
|
||||
else:
|
||||
log('[AnteoPlayer]: ************************************* break')
|
||||
break
|
||||
|
@ -635,6 +635,14 @@ class AnteoPlayer(xbmc.Player):
|
|||
contentList = sorted(contentList, key=lambda x: x[0])
|
||||
return get_ids_video(contentList)
|
||||
|
||||
def getContentList(self):
|
||||
filelist = []
|
||||
for fs in self.engine.list():
|
||||
stringdata = {"title": ensure_str(fs.name), "size": fs.size, "ind": fs.index,
|
||||
'offset': fs.offset}
|
||||
filelist.append(stringdata)
|
||||
return filelist
|
||||
|
||||
class OverlayText(object):
|
||||
def __init__(self, w, h, *args, **kwargs):
|
||||
self.window = xbmcgui.Window(WINDOW_FULLSCREEN_VIDEO)
|
||||
|
|
10
Core.py
10
Core.py
|
@ -572,7 +572,7 @@ class Core:
|
|||
showMessage(self.localize('Watched History'), self.localize('Deleted!'))
|
||||
|
||||
if action2 == 'open':
|
||||
filename, path, url, seek, length, ind = db.get('filename, path, url, seek, length, ind', 'addtime', str(addtime))
|
||||
filename, foldername, path, url, seek, length, ind = db.get('filename, foldername, path, url, seek, length, ind', 'addtime', str(addtime))
|
||||
if os.path.exists(path):
|
||||
self.__settings__.setSetting("lastTorrent", path)
|
||||
else:
|
||||
|
@ -609,11 +609,15 @@ class Core:
|
|||
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:
|
||||
for addtime, filename, foldername, path, url, seek, length, ind, size in items:
|
||||
seek = int(seek) if int(seek) > 3*60 else 0
|
||||
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))
|
||||
title = '[%d%%][%s] %s [%d MB]' %\
|
||||
(watchedPercent, duration, filename.encode('utf-8'), int(size))
|
||||
clDimgray = '[COLOR FF696969]%s[/COLOR]'
|
||||
|
||||
title = title + chr(10) + clDimgray % '(%s)' % foldername.encode('utf-8')
|
||||
if self.torrent_player == '2' and seek > 0:
|
||||
seek_text = '%02d:%02d:%02d' % ((seek / (60*60)), (seek / 60) % 60, seek % 60)
|
||||
contextMenu = [(self.localize('Play (from %s)') % seek_text, ListString % ('WatchedHistory', 'playwithseek', 'addtime', str(addtime))),
|
||||
|
|
|
@ -430,6 +430,9 @@ class Libtorrent:
|
|||
#'auto_managed': False,
|
||||
#'duplicate_is_error': True
|
||||
}
|
||||
if self.save_resume_data:
|
||||
log('loading resume data')
|
||||
torrent_info['resume_data']=self.save_resume_data
|
||||
self.torrentHandle = self.session.add_torrent(torrent_info)
|
||||
|
||||
self.torrentHandle.set_sequential_download(True)
|
||||
|
@ -475,6 +478,19 @@ class Libtorrent:
|
|||
self.session.stop_lsd()
|
||||
self.session.stop_dht()
|
||||
|
||||
def resume_data(self):
|
||||
self.torrentHandle.save_resume_data()
|
||||
received=False
|
||||
while not received:
|
||||
self.session.wait_for_alert(1000)
|
||||
a = self.session.pop_alert()
|
||||
log('[save_resume_data]: ['+str(type(a))+'] the alert '+str(a)+' is received')
|
||||
if type(a) == self.lt.save_resume_data_alert:
|
||||
received = True
|
||||
debug('[save_resume_data]: '+str(dir(a)))
|
||||
self.save_resume_data=self.lt.bencode(a.resume_data)
|
||||
log('[save_resume_data]: the torrent resume data are saved')
|
||||
|
||||
def debug(self):
|
||||
#try:
|
||||
if 1==1:
|
||||
|
|
11
Player.py
11
Player.py
|
@ -30,7 +30,7 @@ import Downloader
|
|||
import xbmcgui
|
||||
import xbmcvfs
|
||||
import Localization
|
||||
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, DownloadDB, get_ids_video, log, debug
|
||||
from functions import calculate, showMessage, clearStorage, WatchedHistoryDB, DownloadDB, get_ids_video, log, debug, foldername
|
||||
|
||||
ROOT = sys.modules["__main__"].__root__
|
||||
RESOURCES_PATH = os.path.join(ROOT, 'resources')
|
||||
|
@ -165,7 +165,7 @@ class TorrentPlayer(xbmc.Player):
|
|||
self.torrent.startSession()
|
||||
self.torrent.continueSession(self.contentId)
|
||||
self.loop()
|
||||
WatchedHistoryDB().add(self.basename, self.watchedTime, self.totalTime, self.contentId, self.fullSize / 1024 / 1024)
|
||||
WatchedHistoryDB().add(self.basename, foldername(self.torrent.getContentList()[self.contentId]['title']), self.watchedTime, self.totalTime, self.contentId, self.fullSize / 1024 / 1024)
|
||||
else:
|
||||
break
|
||||
debug('************************************* GO NEXT?')
|
||||
|
@ -226,11 +226,12 @@ class TorrentPlayer(xbmc.Player):
|
|||
int(download_limit) * 1024 * 1024 / 8) # MBits/second
|
||||
self.torrent.status = False
|
||||
self.fullSize = self.torrent.getFileSize(self.contentId)
|
||||
self.path = self.torrent.getFilePath(self.contentId)
|
||||
Offset = calculate(self.fullSize)
|
||||
debug('Offset: '+str(Offset))
|
||||
|
||||
# mp4 fix
|
||||
label = os.path.basename(self.torrent.getFilePath(self.contentId))
|
||||
label = os.path.basename(self.path)
|
||||
isMP4 = False
|
||||
if '.' in label and str(label.split('.')[-1]).lower() == 'mp4':
|
||||
isMP4 = True
|
||||
|
@ -243,7 +244,7 @@ class TorrentPlayer(xbmc.Player):
|
|||
progressBar.create(self.localize('Please Wait') + str(' [%s]' % str(self.torrent.lt.version)),
|
||||
self.localize('Seeds searching.'))
|
||||
if self.subs_dl:
|
||||
subs = self.torrent.getSubsIds(os.path.basename(self.torrent.getFilePath(self.contentId)))
|
||||
subs = self.torrent.getSubsIds(os.path.basename(self.path))
|
||||
if len(subs) > 0:
|
||||
for ind, title in subs:
|
||||
self.torrent.continueSession(ind)
|
||||
|
@ -284,6 +285,8 @@ class TorrentPlayer(xbmc.Player):
|
|||
xbmc.sleep(1000)
|
||||
#self.torrent.torrentHandle.flush_cache()
|
||||
#self.torrent.session.remove_torrent(self.torrent.torrentHandle)
|
||||
self.torrent.resume_data()
|
||||
self.torrent.session.remove_torrent(self.torrent.torrentHandle)
|
||||
progressBar.update(0)
|
||||
progressBar.close()
|
||||
return True
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
English changelog at http://bit.ly/1MfSVUP
|
||||
|
||||
[B]Version 2.4.6[/B]
|
||||
[+] Проигрыватель: Уменьшена просадка после загрузки буфера (спасибо srg70 и RussakHH)
|
||||
[+] История Просмотров: Добавлено имя раздачи, тонкая настройка добавления по проценту просмотра
|
||||
|
||||
[B]Version 2.4.5[/B]
|
||||
[+] Дополнительна секция настроек со специфическими опциями
|
||||
[+] Минимальный размер хранилища при очищении
|
||||
|
|
25
functions.py
25
functions.py
|
@ -1005,14 +1005,14 @@ class HistoryDB:
|
|||
|
||||
|
||||
class WatchedHistoryDB:
|
||||
def __init__(self, version=1.2):
|
||||
def __init__(self, version=1.3):
|
||||
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')
|
||||
self.cur.execute('select addtime,filename,foldername,path,url,seek,length,ind,size from history order by addtime DESC')
|
||||
x = self.cur.fetchall()
|
||||
self._close()
|
||||
return x if x else None
|
||||
|
@ -1024,14 +1024,18 @@ class WatchedHistoryDB:
|
|||
self._close()
|
||||
return x if x else None
|
||||
|
||||
def add(self, filename, seek = 0, length = 1, ind = 0, size = 0):
|
||||
if self.history_bool:
|
||||
def add(self, filename, foldername = None, seek = 0, length = 1, ind = 0, size = 0):
|
||||
watchedPercent = int((float(seek) / float(length)) * 100)
|
||||
max_history_add = int(__settings__.getSetting('max_history_add'))
|
||||
if self.history_bool and watchedPercent <= max_history_add:
|
||||
self._connect()
|
||||
url = __settings__.getSetting("lastTorrentUrl")
|
||||
path = __settings__.getSetting("lastTorrent")
|
||||
if not foldername:
|
||||
foldername = ''
|
||||
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),
|
||||
self.cur.execute('insert into history(addtime,filename,foldername,path,url,seek,length,ind,size)'
|
||||
' values(?,?,?,?,?,?,?,?,?)', (int(time.time()), decode(filename), decode(foldername), decode(path),
|
||||
decode(url), str(int(seek)), str(int(length)), str(ind), str(size)))
|
||||
self.db.commit()
|
||||
self._close()
|
||||
|
@ -1090,7 +1094,7 @@ class WatchedHistoryDB:
|
|||
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)')
|
||||
'create table history(addtime integer PRIMARY KEY, filename varchar(32), foldername 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()
|
||||
|
@ -2013,3 +2017,10 @@ def getDirectorySizeInBytes(directory):
|
|||
def getDirectorySizeInGB(directory):
|
||||
dir_size = int(getDirectorySizeInBytes(directory)/1024/1024/1024)
|
||||
return dir_size
|
||||
|
||||
def foldername(path):
|
||||
if '\\' in path:
|
||||
foldername = path.split('\\')[0]
|
||||
else:
|
||||
foldername = ''
|
||||
return foldername
|
|
@ -62,6 +62,7 @@
|
|||
<string id="30062">by Seeds</string>
|
||||
<string id="30063">Do not sort</string>
|
||||
<string id="30064">by Name</string>
|
||||
<string id="30065">Do not add to Watched History if played more (%)</string>
|
||||
<string id="30101">Interface</string>
|
||||
<string id="30102">P2P Network</string>
|
||||
<string id="30103">Advanced</string>
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
<string id="30062">по Количеству раздающих</string>
|
||||
<string id="30063">Не сортировать</string>
|
||||
<string id="30064">по Имени</string>
|
||||
<string id="30065">Не добавлять в История Просмотров если больше (%)</string>
|
||||
<string id="30101">Интерфейс</string>
|
||||
<string id="30102">P2P Сеть</string>
|
||||
<string id="30103">Дополнительные</string>
|
||||
|
|
|
@ -68,5 +68,6 @@
|
|||
<setting id="listen_port" type="number" label="30053" default="6881" visible="!eq(-4,1)"/>
|
||||
<setting id="min_storage_size" type="slider" label="30059" default="0" visible="!eq(-5,1)" range="0,2,100" option="int"/>
|
||||
<setting id="pause_onplay" type="bool" label="30060" default="false" visible="!eq(-6,1)"/>
|
||||
<setting id="max_history_add" type="slider" label="30065" default="100" visible="!eq(-7,1)" range="0,2,100" option="int"/>
|
||||
</category>
|
||||
</settings>
|
||||
|
|
Loading…
Reference in New Issue