def numberOfAccounts(accountType): return 9 count = 1 max_count = int(settings.getSetting(accountType+'_numaccounts',9)) actualCount = 0 while True: try: if settings.getSetting(accountType+str(count)+'_username') != '': actualCount = actualCount + 1 except: break if count == max_count: break count = count + 1 return actualCount
def debugger(): try: remote_debugger = settings.getSetting('remote_debugger') remote_debugger_host = settings.getSetting('remote_debugger_host') # append pydev remote debugger if remote_debugger == 'true': # Make pydev debugger works for auto reload. # Note pydevd module need to be copied in XBMC\system\python\Lib\pysrc import pysrc.pydevd as pydevd # stdoutToServer and stderrToServer redirect stdout and stderr to eclipse console pydevd.settrace(remote_debugger_host, stdoutToServer=True, stderrToServer=True) except ImportError: xbmc.log(addon.getLocalizedString(30016), xbmc.LOGERROR) sys.exit(1) except : pass
def getInstanceName(addon, PLUGIN_NAME, mode, instanceName, invokedUsername, numberOfAccounts, contextType): # show list of services if mode == 'delete' or mode == 'dummy': count = 1 elif numberOfAccounts > 1 and instanceName == '' and invokedUsername == '' and mode == 'main': kodi_common.addMenu(PLUGIN_URL+'?mode=enroll&content_type='+str(contextType),'[enroll account]') mode = '' count = 1 while True: instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username') if username != '': kodi_common.addMenu(PLUGIN_URL+'?mode=main&content_type='+str(contextType)+'&instance='+str(instanceName),username, instanceName=instanceName) except: pass if count == numberOfAccounts: break count = count + 1 return None # spreadshetModule = getSetting('library', False) # libraryAccount = getSetting('library_account') # if spreadshetModule: # kodi_common.addMenu(PLUGIN_URL+'?mode=kiosk&content_type='+str(contextType)+'&instance='+PLUGIN_NAME+str(libraryAccount),'[kiosk mode]') elif instanceName == '' and invokedUsername == '' and numberOfAccounts == 1: count = 1 options = [] accounts = [] for count in range (1, numberOfAccounts+1): instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username') if username != '': options.append(username) accounts.append(instanceName) if username != '': return instanceName except: return instanceName #fallback on first defined account return accounts[0] # no accounts defined and url provided; assume public elif numberOfAccounts == 0 and mode=='streamurl': return None # no accounts defined elif numberOfAccounts == 0: #legacy account conversion try: username = settings.getSetting('username') if username != '': addon.setSetting(PLUGIN_NAME+'1_username', username) addon.setSetting(PLUGIN_NAME+'1_password', settings,getSetting('password')) addon.setSetting(PLUGIN_NAME+'1_auth_writely', settings.getSetting('auth_writely')) addon.setSetting(PLUGIN_NAME+'1_auth_wise', settings.getSetting('auth_wise')) addon.setSetting('username', '') addon.setSetting('password', '') addon.setSetting('auth_writely', '') addon.setSetting('auth_wise', '') else: xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30015)) xbmcplugin.endOfDirectory(plugin_handle) except : xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30015)) xbmcplugin.endOfDirectory(plugin_handle) return instanceName # show entries of a single account (such as folder) elif instanceName != '': return instanceName elif invokedUsername != '': options = [] accounts = [] for count in range (1, numberOfAccounts+1): instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username') if username != '': options.append(username) accounts.append(instanceName) if username == invokedUsername: return instanceName except: return instanceName #fallback on first defined account return accounts[0] #prompt before playback else: options = [] accounts = [] # url provided; provide public option if mode=='streamurl': options.append('*public') accounts.append('public') for count in range (1, numberOfAccounts+1): instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username',10) if username != '': options.append(username) accounts.append(instanceName) except: break # url provided; provide public option if mode=='streamurl': options.append('public') accounts.append('public') ret = xbmcgui.Dialog().select(addon.getLocalizedString(30120), options) #fallback on first defined account if accounts[ret] == 'public': return None else: return accounts[ret]
def getContentType(contextType, encfs): #contentType #video context # 0 video # 1 video and music # 2 everything # 9 encrypted video # #music context # 3 music # 4 everything # 10 encrypted video # #photo context # 5 photo # 6 music and photos # 7 everything # 11 encrypted photo contentType = 0 if contextType == 'video': if encfs: contentTypeDecider = int(settings.getSetting('context_evideo', 0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 9 else: contentTypeDecider = int(settings.getSetting('context_video', 0)) if contentTypeDecider == 2: contentType = 2 elif contentTypeDecider == 1: contentType = 1 else: contentType = 0 # cloudservice - sorting options xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_EPISODE) xbmcplugin.setContent(int(sys.argv[1]), 'movies') elif contextType == 'audio': if encfs: contentTypeDecider = int(settings.getSetting('context_emusic', 0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 10 else: contentTypeDecider = int(settings.getSetting('context_music', 0)) if contentTypeDecider == 1: contentType = 4 else: contentType = 3 # cloudservice - sorting options xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_TRACKNUM) elif contextType == 'image': if encfs: contentTypeDecider = int(settings.getSetting('context_ephoto', 0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 11 else: contentTypeDecider = int(settings.getSetting('context_photo', 0)) if contentTypeDecider == 2: contentType = 7 elif contentTypeDecider == 1: contentType = 6 else: contentType = 5 # show all (for encfs) elif contextType == 'all': contentType = 8 return contentType
def getInstanceName(addon, PLUGIN_NAME, mode, instanceName, invokedUsername, numberOfAccounts, contextType): # show list of services if mode == 'delete' or mode == 'dummy': count = 1 elif numberOfAccounts > 1 and instanceName == '' and invokedUsername == '' and mode == 'main': addMenu(PLUGIN_URL + '?mode=enroll&content_type=' + str(contextType), '[enroll account]') if contextType != 'image': path = settings.getSetting('cache_folder') if path != '' and (xbmcvfs.exists(path) or os.path.exists(path)): addMenu( PLUGIN_URL + '?mode=offline&content_type=' + str(contextType), '<offline media>') if contextType == 'image': path = settings.getSetting('photo_folder') if path != '' and (xbmcvfs.exists(path) or os.path.exists(path)): addMenu(path, '<offline photos>') path = settings.getSetting('encfs_target') if path != '' and (xbmcvfs.exists(path) or os.path.exists(path)): addMenu(path, '<offline encfs>') mode = '' count = 1 while True: instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username') if username != '': addMenu(PLUGIN_URL + '?mode=main&content_type=' + str(contextType) + '&instance=' + str(instanceName), username, instanceName=instanceName) except: pass if count == numberOfAccounts: break count = count + 1 return None # spreadshetModule = getSetting('library', False) # libraryAccount = getSetting('library_account') # if spreadshetModule: # addMenu(PLUGIN_URL+'?mode=kiosk&content_type='+str(contextType)+'&instance='+PLUGIN_NAME+str(libraryAccount),'[kiosk mode]') elif instanceName == '' and invokedUsername == '' and numberOfAccounts == 1: count = 1 options = [] accounts = [] for count in range(1, numberOfAccounts + 1): instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username') if username != '': options.append(username) accounts.append(instanceName) if username != '': return instanceName except: return instanceName #fallback on first defined account return accounts[0] # no accounts defined and url provided; assume public elif numberOfAccounts == 0 and mode == 'streamurl': return None # offline mode elif mode == 'offline': return None # no accounts defined elif numberOfAccounts == 0: #legacy account conversion try: username = settings.getSetting('username') if username != '': addon.setSetting(PLUGIN_NAME + '1_username', username) addon.setSetting(PLUGIN_NAME + '1_password', settings, getSetting('password')) addon.setSetting(PLUGIN_NAME + '1_auth_writely', settings.getSetting('auth_writely')) addon.setSetting(PLUGIN_NAME + '1_auth_wise', settings.getSetting('auth_wise')) addon.setSetting('username', '') addon.setSetting('password', '') addon.setSetting('auth_writely', '') addon.setSetting('auth_wise', '') else: xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30015)) xbmcplugin.endOfDirectory(plugin_handle) except: xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30015)) xbmcplugin.endOfDirectory(plugin_handle) return instanceName # show entries of a single account (such as folder) elif instanceName != '': return instanceName elif invokedUsername != '': options = [] accounts = [] for count in range(1, numberOfAccounts + 1): instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username') if username != '': options.append(username) accounts.append(instanceName) if username == invokedUsername: return instanceName except: return instanceName #fallback on first defined account return accounts[0] #prompt before playback else: options = [] accounts = [] # url provided; provide public option if mode == 'streamurl': options.append('*public') accounts.append('public') for count in range(1, numberOfAccounts + 1): instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username', 10) if username != '': options.append(username) accounts.append(instanceName) except: break # url provided; provide public option if mode == 'streamurl': options.append('public') accounts.append('public') ret = xbmcgui.Dialog().select(addon.getLocalizedString(30120), options) #fallback on first defined account if accounts[ret] == 'public': return None else: return accounts[ret]
def accountActions(addon, PLUGIN_NAME, mode, instanceName, numberOfAccounts): if mode == 'dummy': xbmc.executebuiltin("XBMC.Container.Refresh") # delete the configuration for the specified account elif mode == 'delete': #*** old - needs to be re-written if instanceName != '': try: # gdrive specific *** addon.setSetting(instanceName + '_username', '') addon.setSetting(instanceName + '_code', '') addon.setSetting(instanceName + '_client_id', '') addon.setSetting(instanceName + '_client_secret', '') addon.setSetting(instanceName + '_url', '') addon.setSetting(instanceName + '_password', '') addon.setSetting(instanceName + '_passcode', '') addon.setSetting(instanceName + '_auth_access_token', '') addon.setSetting(instanceName + '_auth_refresh_token', '') # *** xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30158)) except: #error: instance doesn't exist pass xbmc.executebuiltin("XBMC.Container.Refresh") # enroll a new account elif mode == 'enroll': invokedUsername = settings.getParameter('username') code = settings.getParameter('code', '') if code == '': options = [] options.append('Google Apps') ret = xbmcgui.Dialog().select('select type', options) invokedUsername = '' password = '' if ret == 0: try: dialog = xbmcgui.Dialog() invokedUsername = dialog.input('username', type=xbmcgui.INPUT_ALPHANUM) passcode = dialog.input('passcode', type=xbmcgui.INPUT_ALPHANUM) except: pass count = 1 loop = True while loop: instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username') if username == invokedUsername: addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', str(invokedUsername)) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False elif username == '': addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', str(invokedUsername)) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False except: pass if count == numberOfAccounts: #fallback on first defined account addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', invokedUsername) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False count = count + 1 else: count = 1 loop = True while loop: instanceName = PLUGIN_NAME + str(count) try: username = settings.getSetting(instanceName + '_username') if username == invokedUsername: addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', str(code)) addon.setSetting(instanceName + '_username', str(invokedUsername)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False elif username == '': addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', str(code)) addon.setSetting(instanceName + '_username', str(invokedUsername)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False except: pass if count == numberOfAccounts: #fallback on first defined account addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', code) addon.setSetting(instanceName + '_username', invokedUsername) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False count = count + 1
plugin_queries = None try: plugin_handle = int(sys.argv[1]) plugin_queries = settings.parse_query(sys.argv[2][1:]) except: pass addon_dir = xbmc.translatePath(addon.getAddonInfo('path')) kodi_common.debugger() # cloudservice - create settings module settings = settings.settings(addon) # retrieve settings user_agent = settings.getSetting('user_agent') #obsolete, replace, revents audio from streaming #if user_agent == 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)': # addon.setSetting('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0') instanceName = addon_parameters.PLUGIN_NAME + str( settings.getSetting('account_default', 1)) service = cloudservice2(PLUGIN_URL, addon, instanceName, user_agent, settings) # must load after all other (becomes blocking) # streamer if service is not None and service.settings.streamer: from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from resources.lib import streamer import urllib, urllib2 from SocketServer import ThreadingMixIn
def advanced_camera_menu(camera_number): """ Third Level Advanced Menu for additional IP Camera Functions """ #EXTENDED MENU IDEAS #FPS Test #Force Show preview mjpeg / snapshot #Show snapshot if settings.getSetting('enabled_preview', camera_number) == 'true': #Show Preview addDirectoryItem(name = utils.translation(32210), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'show_preview', 'camera_number': camera_number}) #Disable Preview addDirectoryItem(name = utils.translation(32212), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'disable_preview', 'camera_number': camera_number}) else: #Enable Preview addDirectoryItem(name = utils.translation(32211), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'enable_preview', 'camera_number': camera_number}) if settings.getSetting_int('fanart') == 1: #Update Fanart addDirectoryItem(name = utils.translation(32213), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'update_fanart', 'camera_number': camera_number}) camera_type = settings.getCameraType(camera_number) if camera_type < 3: #Play Stream no Controls addDirectoryItem(name = utils.translation(32214), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'single_camera_no_controls', 'camera_number': camera_number}) #Camera Settings addDirectoryItem(name = utils.translation(32215), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'camera_settings', 'camera_number': camera_number}) #Reboot Camera addDirectoryItem(name = utils.translation(32216), icon = utils.get_icon('settings'), fanart = utils.get_fanart(camera_number), parameters = {'action': 'reboot', 'camera_number': camera_number}) xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
def main_menu(): """ First Level Menu to access main functions """ if settings.atLeastOneCamera(): # All Camera Player addDirectoryItem(name=utils.translation(32027), icon=utils.get_icon('default'), fanart=utils.get_fanart('default'), parameters={'action': 'all_cameras'}) for camera_number in "123456": if settings.enabled_camera(camera_number): camera = Camera(camera_number) list_label = settings.getCameraName(camera_number) # Build Context Menu li = li = xbmcgui.ListItem(list_label) context_items = [] if settings.getSetting('enabled_preview', camera_number) == 'true': #Show Preview context_items.append((utils.translation( 32210 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=show_preview&camera_number=%s)' % camera_number)) #Disable Preview context_items.append((utils.translation( 32212 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=disable_preview&camera_number=%s)' % camera_number)) else: #Enable Preview context_items.append((utils.translation( 32211 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=enable_preview&camera_number=%s)' % camera_number)) camera_type = settings.getCameraType(camera_number) if camera_type < 3: #Play Stream no Controls context_items.append((utils.translation( 32214 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=single_camera_no_controls&camera_number=%s)' % camera_number)) #Camera Settings context_items.append((utils.translation( 32215 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=camera_settings&camera_number=%s)' % camera_number)) # Update Fanart if settings.getSetting_int('fanart') == 1: context_items.append((utils.translation( 32213 ), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=update_fanart&camera_number=%s)' % camera_number)) li.addContextMenuItems(context_items, replaceItems=True) # Fanart URL new_art_url = None if camera.Connected(monitor): new_art_url = camera.getSnapShotUrl() else: if camera.Connected(monitor, False): new_art_url = camera.getSnapShotUrl() # Single Camera Player for enabled cameras addDirectoryItem(name=list_label, icon=utils.get_icon(camera_number), fanart=utils.get_fanart( camera_number, new_art_url), li=li, parameters={ 'action': 'single_camera', 'camera_number': camera_number }) # Link to Second Level Advanced Menu addDirectoryItem(name=utils.translation(32029), isFolder=True, icon=utils.get_icon('advanced'), fanart=utils.get_fanart('default'), parameters={'action': 'advanced'}) else: # Add-on Settings if no cameras are configured addDirectoryItem(name=utils.translation(32028), icon=utils.get_icon('settings'), fanart=utils.get_fanart('default'), parameters={'action': 'settings'}) xbmcplugin.endOfDirectory(handle=handle, succeeded=True) utils.cleanup_images()
def getContentType(contextType,encfs): #contentType #video context # 0 video # 1 video and music # 2 everything # 9 encrypted video # #music context # 3 music # 4 everything # 10 encrypted video # #photo context # 5 photo # 6 music and photos # 7 everything # 11 encrypted photo contentType = 0 if contextType == 'video': if encfs: contentTypeDecider = int(settings.getSetting('context_evideo',0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 9 else: contentTypeDecider = int(settings.getSetting('context_video',0)) if contentTypeDecider == 2: contentType = 2 elif contentTypeDecider == 1: contentType = 1 else: contentType = 0 # cloudservice - sorting options xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_EPISODE) xbmcplugin.setContent(int(sys.argv[1]), 'movies') elif contextType == 'audio': if encfs: contentTypeDecider = int(settings.getSetting('context_emusic',0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 10 else: contentTypeDecider = int(settings.getSetting('context_music', 0)) if contentTypeDecider == 1: contentType = 4 else: contentType = 3 # cloudservice - sorting options xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_TRACKNUM) elif contextType == 'image': if encfs: contentTypeDecider = int(settings.getSetting('context_ephoto',0)) if contentTypeDecider == 1: contentType = 8 else: contentType = 11 else: contentTypeDecider = int(settings.getSetting('context_photo', 0)) if contentTypeDecider == 2: contentType = 7 elif contentTypeDecider == 1: contentType = 6 else: contentType = 5 # show all (for encfs) elif contextType == 'all': contentType = 8 return contentType
PLUGIN_URL = sys.argv[0] plugin_handle = int(sys.argv[1]) plugin_queries = settings.parse_query(sys.argv[2][1:]) addon_dir = xbmc.translatePath( addon.getAddonInfo('path') ) kodi_common.debugger() # cloudservice - create settings module settings = settings.settings(addon) # retrieve settings user_agent = settings.getSetting('user_agent') #obsolete, replace, revents audio from streaming #if user_agent == 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)': # addon.setSetting('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0') mode = settings.getParameter('mode','main') # make mode case-insensitive mode = mode.lower() #*** old - acd # allow for playback of public videos without authentication #if (mode == 'shared'):
plugin_handle = int(sys.argv[1]) plugin_queries = settings.parse_query(sys.argv[2][1:]) except: plugin_handle = None plugin_queries = None addon_dir = xbmc.translatePath( addon.getAddonInfo('path') ) # cloudservice - create settings module settings = settings.settings(addon) # retrieve settings user_agent = settings.getSetting('user_agent') #obsolete, replace, revents audio from streaming #if user_agent == 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)': # addon.setSetting('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0') #instanceName = PLUGIN_NAME + str(settings.getSetting('account_default', 1)) #service = cloudservice2(plugin_handle,PLUGIN_URL,addon,instanceName, user_agent, settings) if 0: from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer from resources.lib import enroll_proxy import threading try: server = enroll_proxy.MyHTTPServer(('', 9978), enroll_proxy.enrollBrowser)
def advanced_camera_menu(camera_number): """ Third Level Advanced Menu for additional IP Camera Functions """ #EXTENDED MENU IDEAS #FPS Test #Force Show preview mjpeg / snapshot #Show snapshot if settings.getSetting('enabled_preview', camera_number) == 'true': #Show Preview addDirectoryItem(name=utils.translation(32210), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'show_preview', 'camera_number': camera_number }) #Disable Preview addDirectoryItem(name=utils.translation(32212), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'disable_preview', 'camera_number': camera_number }) else: #Enable Preview addDirectoryItem(name=utils.translation(32211), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'enable_preview', 'camera_number': camera_number }) if settings.getSetting_int('fanart') == 1: #Update Fanart addDirectoryItem(name=utils.translation(32213), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'update_fanart', 'camera_number': camera_number }) camera_type = settings.getCameraType(camera_number) if camera_type < 3: #Play Stream no Controls addDirectoryItem(name=utils.translation(32214), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'single_camera_no_controls', 'camera_number': camera_number }) #Camera Settings addDirectoryItem(name=utils.translation(32215), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'camera_settings', 'camera_number': camera_number }) #Reboot Camera addDirectoryItem(name=utils.translation(32216), icon=utils.get_icon('settings'), fanart=utils.get_fanart(camera_number), parameters={ 'action': 'reboot', 'camera_number': camera_number }) xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
def main_menu(): """ First Level Menu to access main functions """ if settings.atLeastOneCamera(): # All Camera Player addDirectoryItem(name = utils.translation(32027), icon = utils.get_icon('default'), fanart = utils.get_fanart('default'), parameters = {'action': 'all_cameras'}) for camera_number in "123456": if settings.enabled_camera(camera_number): camera = Camera(camera_number) list_label = settings.getCameraName(camera_number) # Build Context Menu li = li = xbmcgui.ListItem(list_label) context_items = [] if settings.getSetting('enabled_preview', camera_number) == 'true': #Show Preview context_items.append((utils.translation(32210), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=show_preview&camera_number=%s)' %camera_number)) #Disable Preview context_items.append((utils.translation(32212), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=disable_preview&camera_number=%s)' %camera_number)) else: #Enable Preview context_items.append((utils.translation(32211), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=enable_preview&camera_number=%s)' %camera_number)) camera_type = settings.getCameraType(camera_number) if camera_type < 3: #Play Stream no Controls context_items.append((utils.translation(32214), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=single_camera_no_controls&camera_number=%s)' %camera_number)) #Camera Settings context_items.append((utils.translation(32215), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=camera_settings&camera_number=%s)' %camera_number)) # Update Fanart if settings.getSetting_int('fanart') == 1: context_items.append((utils.translation(32213), 'RunPlugin(plugin://plugin.video.surveillanceroom?action=update_fanart&camera_number=%s)' %camera_number)) li.addContextMenuItems(context_items, replaceItems=True) # Fanart URL new_art_url = None if camera.Connected(monitor): new_art_url = camera.getSnapShotUrl() else: if camera.Connected(monitor, False): new_art_url = camera.getSnapShotUrl() # Single Camera Player for enabled cameras addDirectoryItem(name = list_label, icon = utils.get_icon(camera_number), fanart = utils.get_fanart(camera_number, new_art_url), li = li, parameters = {'action': 'single_camera', 'camera_number': camera_number}) # Link to Second Level Advanced Menu addDirectoryItem(name = utils.translation(32029), isFolder = True, icon = utils.get_icon('advanced'), fanart = utils.get_fanart('default'), parameters={'action': 'advanced'}) else: # Add-on Settings if no cameras are configured addDirectoryItem(name = utils.translation(32028), icon = utils.get_icon('settings'), fanart = utils.get_fanart('default'), parameters = {'action': 'settings'}) xbmcplugin.endOfDirectory(handle=handle, succeeded=True) utils.cleanup_images()
def accountActions(addon, PLUGIN_NAME, mode, instanceName, numberOfAccounts): if mode == 'dummy': xbmc.executebuiltin("XBMC.Container.Refresh") # delete the configuration for the specified account elif mode == 'delete': #*** old - needs to be re-written if instanceName != '': try: # gdrive specific *** addon.setSetting(instanceName + '_username', '') addon.setSetting(instanceName + '_code', '') addon.setSetting(instanceName + '_client_id', '') addon.setSetting(instanceName + '_client_secret', '') addon.setSetting(instanceName + '_url', '') addon.setSetting(instanceName + '_password', '') addon.setSetting(instanceName + '_passcode', '') addon.setSetting(instanceName + '_auth_access_token', '') addon.setSetting(instanceName + '_auth_refresh_token', '') # *** xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30158)) except: #error: instance doesn't exist pass xbmc.executebuiltin("XBMC.Container.Refresh") # enroll a new account elif mode == 'enroll': invokedUsername = settings.getParameter('username') code = settings.getParameter('code', '') if code == '': options = [] options.append('Google Apps') ret = xbmcgui.Dialog().select('select type', options) invokedUsername = '' password = '' if ret == 0: try: dialog = xbmcgui.Dialog() invokedUsername = dialog.input('username', type=xbmcgui.INPUT_ALPHANUM) passcode = dialog.input('passcode', type=xbmcgui.INPUT_ALPHANUM) except: pass count = 1 loop = True while loop: instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username') if username == invokedUsername: addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', str(invokedUsername)) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False elif username == '': addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', str(invokedUsername)) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False except: pass if count == numberOfAccounts: #fallback on first defined account addon.setSetting(instanceName + '_type', str(4)) addon.setSetting(instanceName + '_username', invokedUsername) addon.setSetting(instanceName + '_passcode', str(passcode)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False count = count + 1 else: count = 1 loop = True while loop: instanceName = PLUGIN_NAME+str(count) try: username = settings.getSetting(instanceName+'_username') if username == invokedUsername: addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', str(code)) addon.setSetting(instanceName + '_username', str(invokedUsername)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False elif username == '': addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', str(code)) addon.setSetting(instanceName + '_username', str(invokedUsername)) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False except: pass if count == numberOfAccounts: #fallback on first defined account addon.setSetting(instanceName + '_type', str(1)) addon.setSetting(instanceName + '_code', code) addon.setSetting(instanceName + '_username', invokedUsername) xbmcgui.Dialog().ok(addon.getLocalizedString(30000), addon.getLocalizedString(30118), invokedUsername) loop = False count = count + 1
plugin_handle = None plugin_queries = None try: plugin_handle = int(sys.argv[1]) plugin_queries = settings.parse_query(sys.argv[2][1:]) except: plugin_handle = None plugin_queries = None addon_dir = xbmc.translatePath(addon.getAddonInfo('path')) # cloudservice - create settings module settings = settings.settings(addon) # retrieve settings user_agent = settings.getSetting('user_agent') #obsolete, replace, revents audio from streaming #if user_agent == 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)': # addon.setSetting('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0') #instanceName = PLUGIN_NAME + str(settings.getSetting('account_default', 1)) #service = cloudservice2(plugin_handle,PLUGIN_URL,addon,instanceName, user_agent, settings) if 0: from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from resources.lib import enroll_proxy import threading try: server = enroll_proxy.MyHTTPServer(('', 9978),