def __init__(self,params): self.params = params database = Database() database.connect() database.checkDBStructure() self.historyDB = WatchHistory(database) self.settings = DBSettings(database)
def __init__(self): utils.log("Starting History Service") self.playerMonitor = HistoryPlayerMonitor(on_play_started = self.playStarted) self.updateMonitor = HistorySettingsMonitor(update_settings = self.onSettingsUpdate) #setup the database connection database = Database() database.connect() database.checkDBStructure() self.historyDB = WatchHistory(database) self.settings = DBSettings(database) if(utils.getSetting('require_pin_on_change') == 'true'): self.require_pin = True #backup the settings file self._settingsBackup()
class HistoryGUI: params = None historyDB = None settings = None def __init__(self,params): self.params = params database = Database() database.connect() database.checkDBStructure() self.historyDB = WatchHistory(database) self.settings = DBSettings(database) def run(self): action = int(params['action']) utils.log("action " + str(action)) if(action == 0): self._showHistory() elif(action == 1001): self._delete(params['id']) def _showHistory(self): #we are listing files xbmcplugin.setContent(int(sys.argv[1]),'files') xbmcplugin.setPluginCategory(int(sys.argv[1]),'Play History') xbmcplugin.addSortMethod(int(sys.argv[1]),xbmcplugin.SORT_METHOD_NONE) context_url = "%s?%s" #load the history history = self.historyDB.getAllOrderedLimit('date',0,30) if(len(history) > 0): for entry in history: entryName = str(entry[2]) #if the name is blank use the file path if(entryName == ''): entryName = str(entry[3]) item = xbmcgui.ListItem(entryName,str(entry[4]),path=str(entry[3])) item.setProperty('IsPlayable','true') item.addContextMenuItems([('Delete from History','Xbmc.RunPlugin(%s?%s)' % (str(sys.argv[0]),'action=1001&id=' + str(entry[0])))]) ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url= "%s" % (entry[3],),listitem=item,isFolder=False) else: item = xbmcgui.ListItem("No Items In History") ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url="%s?%s" % (sys.argv[0],"action=0"),listitem=item,isFolder=False) xbmcplugin.endOfDirectory(int(sys.argv[1]),cacheToDisc=False) def _delete(self,id): #check if we need PIN confirmation to do this if(utils.getSetting('require_pin_on_delete') == 'true'): user_try = xbmcgui.Dialog().numeric(0,'PIN Required') if(self.settings.checkPIN(user_try)): self.historyDB.delete(id) xbmc.executebuiltin('Container.Refresh') else: xbmcgui.Dialog().ok('Error','Incorrect PIN') else: self.historyDB.delete(id) xbmc.executebuiltin('Container.Refresh')
import xbmcgui import resources.lib.utils as utils from resources.lib.database import Database, DBSettings # create the dialog dialog = xbmcgui.Dialog() database = Database() database.connect() database.checkDBStructure() settings = DBSettings(database) # check if there is a current pin current_pin = settings.getPIN() allow_change = True if current_pin != "0000": allow_change = False # ask user to input current pin user_input = dialog.numeric(0, "Enter Current PIN") if settings.checkPIN(user_input): allow_change = True else: dialog.ok("Error", "Incorrect PIN") # ask the user for a new pin if allow_change: first_try = dialog.numeric(0, "Enter new PIN")
class HistoryService: playerMonitor = None updateMonitor = None historyDB = None settings = None require_pin = False #need to store this as it might change def __init__(self): utils.log("Starting History Service") self.playerMonitor = HistoryPlayerMonitor(on_play_started = self.playStarted) self.updateMonitor = HistorySettingsMonitor(update_settings = self.onSettingsUpdate) #setup the database connection database = Database() database.connect() database.checkDBStructure() self.historyDB = WatchHistory(database) self.settings = DBSettings(database) if(utils.getSetting('require_pin_on_change') == 'true'): self.require_pin = True #backup the settings file self._settingsBackup() def run(self): while(not xbmc.abortRequested): xbmc.sleep(500) def playStarted(self): if(self.playerMonitor.isPlayingVideo() and utils.getSetting('monitor_video') == 'true'): videoTag = self.playerMonitor.getVideoInfoTag() utils.log("Logging: " + videoTag.getTitle(),xbmc.LOGDEBUG) self.historyDB.insert(("video",videoTag.getTitle(),self.playerMonitor.getPlayingFile(),int(time.time()))) elif(self.playerMonitor.isPlayingAudio() and utils.getSetting('monitor_music') == 'true'): audioTag = self.playerMonitor.getMusicInfoTag() utils.log("Logging: " + audioTag.getTitle(),xbmc.LOGDEBUG) self.historyDB.insert(('audio',audioTag.getTitle(),self.playerMonitor.getPlayingFile(),int(time.time()))) def onSettingsUpdate(self): #check if a pin is required to change settings if(self.require_pin): dialog = xbmcgui.Dialog() #ask the user for their pin user_try = dialog.numeric(0,'Pin required to change settings') if(self.settings.checkPIN(user_try)): #make backup of new settings self._settingsBackup() if(utils.getSetting('require_pin_on_change') == 'false'): self.require_pin = False else: #restore the settings file self._settingsRestore() dialog.ok('Error','Incorrect PIN') else: #check this setting in case it's the one that changed if(utils.getSetting('require_pin_on_change') == 'true'): self.require_pin = True def _settingsBackup(self): #make a backup of the settings file (in case pin is incorrect) settings_file = xbmc.translatePath(utils.data_dir() + "settings.xml") if(xbmcvfs.exists(settings_file)): xbmcvfs.copy(settings_file,settings_file + ".bak") def _settingsRestore(self): #restore the settings file (in case pin is incorrect) settings_file = xbmc.translatePath(utils.data_dir() + "settings.xml") if(xbmcvfs.exists(settings_file)): xbmcvfs.copy(settings_file + ".bak",settings_file)