history update
This commit is contained in:
		
							parent
							
								
									16cc3c5aa2
								
							
						
					
					
						commit
						c41d55ef1c
					
				
							
								
								
									
										962
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										962
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
										
											
												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]
 | 
			
		||||
[+] Дополнительна секция настроек со специфическими опциями
 | 
			
		||||
[+] Минимальный размер хранилища при очищении
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								functions.py
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								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()
 | 
			
		||||
@ -2012,4 +2016,11 @@ def getDirectorySizeInBytes(directory):
 | 
			
		||||
 | 
			
		||||
def getDirectorySizeInGB(directory):
 | 
			
		||||
    dir_size = int(getDirectorySizeInBytes(directory)/1024/1024/1024)
 | 
			
		||||
    return dir_size
 | 
			
		||||
    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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user