コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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]
コード例 #6
0
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
コード例 #7
0
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]
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
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)
コード例 #11
0
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()
コード例 #12
0
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
コード例 #13
0
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'):
コード例 #14
0
ファイル: service.py プロジェクト: ddurdle/GDrive-for-KODI
    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)
コード例 #15
0
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)
コード例 #16
0
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()     
コード例 #17
0
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
コード例 #18
0
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),