def addItem(self, title, mode, url=None, img='', args={}, video_info={}, isFolder=True, total_items=0):
        # Create action url
        args['mode'] = mode;
        if url:
            args['url'] = url
        if img:
            img = resizeImage(img)
            args['icon'] = img
        args = [k + '=' + urllib.quote_plus(v.encode('ascii', 'ignore')) for k, v in args.iteritems()]
        action_url = sys.argv[0] + '?' + "&".join(args)

        li = xbmcgui.ListItem(label=title, iconImage=img, thumbnailImage=img)
        video_info = dict((k, v) for k, v in video_info.iteritems() if k in ['date', 'plot'])
        if video_info:
            li.setInfo('video', video_info)
        if 'duration' in video_info:
            # To set with second granularity must do this rather than via setInfo
            li.addStreamInfo('video', { 'duration' : video_info['duration'] })
        if not isFolder:
            li.setProperty("IsPlayable", "true")  # let xbmc know this can be played, unlike a folder.
            context_menu = menu_util.create_context_menu(getLS=plugin.getLS)
            li.addContextMenuItems(context_menu, replaceItems=True)
        else:
            li.addContextMenuItems([], replaceItems=True)
        xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=action_url, listitem=li, isFolder=isFolder, totalItems=total_items)
 def test_create_context_menu_url(self):
     context_menu = menu_util.create_context_menu(getLS, 'invalid://nowhere/nothing.mp4')
     self.assertTrue(len(context_menu) == 2)
     self.assertEquals((30097, 'Action(queue)'), context_menu[0])
     self.assertEquals(30096, context_menu[1][0])
     download_re = re.compile('RunPlugin\(.+?mode=downloadVideo&url=invalid://nowhere/nothing\.mp4\)')
     self.assertTrue(download_re.match(context_menu[1][1]))
 def newTalksRss(self):
     newTalks = NewTalksRss(self.logger)
     for talk in newTalks.get_new_talks():
         li = xbmcgui.ListItem(label=talk['title'],
                               iconImage=talk['thumb'],
                               thumbnailImage=talk['thumb'])
         li.setProperty("IsPlayable", "true")
         li.setInfo(
             'video', {
                 'date': talk['date'],
                 'duration': talk['duration'],
                 'plot': talk['plot']
             })
         favorites_action = None
         if self.settings['username'] != None:
             favorites_action = "add"
         context_menu = menu_util.create_context_menu(
             getLS=getLS,
             url=talk['link'],
             favorites_action=favorites_action,
             talkID=talk['id'])
         li.addContextMenuItems(context_menu, replaceItems=True)
         xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                     url=talk['link'],
                                     listitem=li)
     self.endofdirectory(sortMethod='date')
 def addItem(self, info, isFolder = True):
     #Defaults in dict. Use 'None' instead of None so it is compatible for quote_plus in parseArgs
     #create params for xbmcplugin module
     args = {}
     for key1, key2 in {'url': 'url', 'mode': 'mode', 'Title': 'name', 'Thumb': 'icon'}.iteritems():
         if key1 in info:
             if info[key1] is None:
                 self.logger("'None' in item dict: " + info)
             else:
                 args[key2] = urllib.quote_plus(info[key1].encode('ascii', 'ignore'))
     
     u = sys.argv[0] + '?' + "&".join(key + '=' + value for key, value in args.iteritems())
                     
     info.setdefault('url', 'None')
     info.setdefault('Thumb', 'None')
     info.setdefault('Icon', info['Thumb'])
     #create list item
     if info['Title'].startswith(" "):
         title = info['Title'][1:]
     else:
         title = info['Title']  
     li = xbmcgui.ListItem(label = title, iconImage = info['Icon'], thumbnailImage = info['Thumb'])
     li.setInfo(type='Video', infoLabels = info)
     #for videos, replace context menu with queue and add to favorites
     if not isFolder:
         li.setProperty("IsPlayable", "true")#let xbmc know this can be played, unlike a folder.
         context_menu = menu_util.create_context_menu(getLS = getLS)
         li.addContextMenuItems(context_menu, replaceItems = True)
     else:
         #for folders, completely remove contextmenu, as it is totally useless.
         li.addContextMenuItems([], replaceItems = True)
     #add item to list
     xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=li, isFolder=isFolder)
예제 #5
0
    def addItem(self, title, mode, url=None, img='', args={}, video_info={}, isFolder=True, total_items=0):
        # Create action url
        args['mode'] = mode;
        if url:
            args['url'] = url
        if img:
            img = resizeImage(img)
            args['icon'] = img
        args = [k + '=' + urllib.quote_plus(v.encode('ascii', 'ignore')) for k, v in args.iteritems()]
        action_url = sys.argv[0] + '?' + "&".join(args)

        li = xbmcgui.ListItem(label=title, iconImage=img, thumbnailImage=img)
        video_info = dict((k, v) for k, v in video_info.iteritems() if k in ['date', 'plot'])
        if video_info:
            li.setInfo('video', video_info)
        if 'duration' in video_info:
            # To set with second granularity must do this rather than via setInfo
            li.addStreamInfo('video', { 'duration' : video_info['duration'] })
        if not isFolder:
            li.setProperty("IsPlayable", "true")  # let xbmc know this can be played, unlike a folder.
            context_menu = menu_util.create_context_menu(getLS=plugin.getLS)
            li.addContextMenuItems(context_menu, replaceItems=True)
        else:
            li.addContextMenuItems([], replaceItems=True)
        xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=action_url, listitem=li, isFolder=isFolder, totalItems=total_items)
    def test_create_context_menu_add_favorite(self):
        context_menu = menu_util.create_context_menu(getLS, favorites_action = "add", talkID = "42")
        self.assertTrue(len(context_menu) == 2)
        self.assertEquals((30097, 'Action(queue)'), context_menu[0])
        self.assertEquals(30090, context_menu[1][0])
        download_re = re.compile('RunPlugin\(.+?mode=addToFavorites&talkID=42\)')
        self.assertTrue(download_re.match(context_menu[1][1]))

        
 def test_create_context_menu_add_favorite(self):
     context_menu = menu_util.create_context_menu(getLS,
                                                  favorites_action="add",
                                                  talkID="42")
     self.assertTrue(len(context_menu) == 2)
     self.assertEquals((30097, 'Action(queue)'), context_menu[0])
     self.assertEquals(30090, context_menu[1][0])
     download_re = re.compile('RunPlugin\(.+?addToFavorites=42\)')
     self.assertTrue(download_re.match(context_menu[1][1]))
 def test_create_context_menu_url(self):
     context_menu = menu_util.create_context_menu(
         getLS, 'invalid://nowhere/nothing.mp4')
     self.assertTrue(len(context_menu) == 2)
     self.assertEquals((30097, 'Action(queue)'), context_menu[0])
     self.assertEquals(30096, context_menu[1][0])
     download_re = re.compile(
         'RunPlugin\(.+?downloadVideo=invalid://nowhere/nothing\.mp4\)')
     self.assertTrue(download_re.match(context_menu[1][1]))
 def newTalksRss(self):
     newTalks = NewTalksRss(self.logger)
     for talk in newTalks.get_new_talks():
         li = xbmcgui.ListItem(label = talk['title'], iconImage = talk['thumb'], thumbnailImage = talk['thumb'])
         li.setProperty("IsPlayable", "true")
         li.setInfo('video', {'date':talk['date'], 'duration':talk['duration'], 'plot':talk['plot']})
         favorites_action = None
         if self.settings['username'] != None:
             favorites_action = "add"
         context_menu = menu_util.create_context_menu(getLS = getLS, url = talk['link'], favorites_action = favorites_action, talkID = talk['id'])
         li.addContextMenuItems(context_menu, replaceItems = True)
         xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = talk['link'], listitem = li)
     self.endofdirectory(sortMethod = 'date')
    def addItem(self, info, isFolder=True):
        #Defaults in dict. Use 'None' instead of None so it is compatible for quote_plus in parseArgs
        #create params for xbmcplugin module
        args = {}
        for key1, key2 in {
                'url': 'url',
                'mode': 'mode',
                'Title': 'name',
                'Thumb': 'icon'
        }.iteritems():
            if key1 in info:
                if info[key1] is None:
                    self.logger("'None' in item dict: " + info)
                else:
                    args[key2] = urllib.quote_plus(info[key1].encode(
                        'ascii', 'ignore'))

        u = sys.argv[0] + '?' + "&".join(key + '=' + value
                                         for key, value in args.iteritems())

        info.setdefault('url', 'None')
        info.setdefault('Thumb', 'None')
        info.setdefault('Icon', info['Thumb'])
        #create list item
        if info['Title'].startswith(" "):
            title = info['Title'][1:]
        else:
            title = info['Title']
        li = xbmcgui.ListItem(label=title,
                              iconImage=info['Icon'],
                              thumbnailImage=info['Thumb'])
        li.setInfo(type='Video', infoLabels=info)
        #for videos, replace context menu with queue and add to favorites
        if not isFolder:
            li.setProperty(
                "IsPlayable",
                "true")  #let xbmc know this can be played, unlike a folder.
            context_menu = menu_util.create_context_menu(getLS=getLS)
            li.addContextMenuItems(context_menu, replaceItems=True)
        else:
            #for folders, completely remove contextmenu, as it is totally useless.
            li.addContextMenuItems([], replaceItems=True)
        #add item to list
        xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                    url=u,
                                    listitem=li,
                                    isFolder=isFolder)
 def test_create_context_menu(self):
     context_menu = menu_util.create_context_menu(getLS)
     self.assertEquals([(30097, 'Action(queue)')], context_menu)
예제 #12
0
 def test_create_context_menu(self):
     context_menu = menu_util.create_context_menu(getLS)
     self.assertEquals([(30097, 'Action(queue)')], context_menu)
예제 #13
0
 def test_create_context_menu(self):
     context_menu = menu_util.create_context_menu(getLS)
     self.assertEquals([
         (30097, 'Action(queue)'),
         ('Toggle watched', 'Action(ToggleWatched)'),
     ], context_menu)
예제 #14
0
 def test_create_context_menu(self):
     context_menu = menu_util.create_context_menu(getLS)
     self.assertEquals([
         (30097, 'Action(queue)'),
         ('Toggle watched', 'Action(ToggleWatched)'),
         ], context_menu)