Exemple #1
0
def blogs_following(offset=0):
    blogs = {}
    litems = []
    blogres = []
    listblogs = []
    litems = []
    name = ''
    updated = ''
    url = ''
    desc = ''
    strpage = str(((int(offset) + 20) / 20))
    nextitem = ListItem(label="Next Page -> #{0}".format(int(strpage) + 1),
                        label2="More",
                        icon=__imgnext__,
                        thumbnail=__imgnext__,
                        path=plugin.url_for(blogs_following,
                                            offset=int(20 + int(offset))))
    nextitem.set_art({
        'poster': __imgnext__,
        'thumbnail': __imgnext__,
        'fanart': __imgnext__
    })
    nextitem.is_folder = True
    litems = [nextitem]
    results = following_list(offset=offset,
                             max=20)  # max not working right now, max=50)
    for b in results:
        thumb = 'https://api.tumblr.com/v2/blog/{0}/avatar/64'.format(
            name)  #__imgtumblr__
        try:
            thumbd = {}
            name = b.get(u'name', '')
            title = b.get(u'title', '')
            desc = Strip(b.get(u'description', ''))
            url = b.get(u'url', "http://{0}.tumblr.com".format(name))
            updated = b.get(u'updated', 0)
            updatetext = datetime.datetime.fromtimestamp(
                updated)  #.isoformat()
            thumb = 'https://api.tumblr.com/v2/blog/{0}/avatar/64'.format(name)
            iurl = plugin.url_for(endpoint=blogposts, blogname=name, offset=0)
            lbl = "[COLOR yellow][B]{0}[/B][/COLOR] ({2}:{3} {4}/{5})\n[I]{1}[/I]".format(
                name, title.encode('latin-1', 'ignore'), updatetext.hour,
                updatetext.minute, updatetext.day, updatetext.month)
            lbl2 = title + "\n" + desc.encode('latin-1', 'ignore')
            litem = ListItem(label=lbl,
                             label2=lbl2,
                             icon=thumb,
                             thumbnail=thumb,
                             path=iurl)
            litem.set_art({
                'poster': thumb,
                'thumbnail': thumb,
                'fanart': thumb
            })
            litem.is_folder = True
            litem.playable = False
            litems.append(litem)
        except:
            pass
    return litems
Exemple #2
0
def following(offset=0):
    blogs = {}
    litems = []
    blogres = []
    listblogs = []
    litems = []
    name = ''
    updated = ''
    url = ''
    desc = ''
    strpage = str(((int(offset) + 20) / 20))
    nextitem = ListItem(label="Next Page -> #{0}".format(int(strpage) + 1),
                        label2="More",
                        icon=__imgnext__,
                        thumbnail=__imgnext__,
                        path=plugin.url_for(following,
                                            offset=int(20 + int(offset))))
    nextitem.set_art({
        'poster': __imgnext__,
        'thumbnail': __imgnext__,
        'fanart': __imgnext__
    })
    nextitem.is_folder = True
    litems = [nextitem]
    results = following_list(
        offset=offset)  # max not working right now, max=50)
    for b in results:
        thumb = __imgtumblr__
        try:
            thumbd = {}
            name = b.get(u'name', '')
            title = b.get(u'title', '')
            desc = b.get(u'description', '')
            url = b.get(u'url', "http://{0}.tumblr.com".format(name))
            updated = b.get(u'updated', '')
            thumb = b.get('thumb', __imgtumblr__)
            iurl = plugin.url_for(endpoint=blogposts, blogname=name, offset=0)
            lbl = "{0}\n{1}".format(name, title.encode('latin-1', 'ignore'))
            lbl2 = desc.encode('latin-1', 'ignore')
            litem = ListItem(label=lbl,
                             label2=lbl2,
                             icon=thumb,
                             thumbnail=thumb,
                             path=iurl)
            litem.set_art({
                'poster': thumb,
                'thumbnail': thumb,
                'fanart': thumb
            })
            litem.is_folder = True
            litem.playable = False
            litems.append(litem)
        except:
            pass
    return litems
Exemple #3
0
def index():
    # setview_list()
    litems = []
    itemdashvids = {}
    itemliked = {}
    itemfollowing = {}
    itemtagbrowse = {}
    itemtagged = {}
    itemsearch = {}
    tstamp = str(time.mktime(
        (datetime.datetime.now() - weekdelta).timetuple())).split('.', 1)[0]
    info = {"name": "Not logged in", "likes": 1, "following": 1}
    tinfo = namedtuple("tumblr_info", field_names=info.keys())(*info.values())
    try:
        userinforesp = tclient.info()
        if isinstance(userinforesp, dict):
            info = userinforesp.get("user", {})
            tinfo = namedtuple('tumblr_info', info.keys(),
                               rename=True)(*info.values())
    except:
        plugin.notify("ERROR: Tumblr needs this addon to be authorized.")
    try:
        lbldash = "[B]{0}[/B]'s Dashboard".format(tinfo.name)
        lblfol = "Following: {0}".format(str(tinfo.following))
        lbllike = "Liked: {0}".format(str(tinfo.likes))
        itemdash = ListItem(label=lbldash,
                            icon=__imgtumblr__,
                            path=plugin.url_for(dashboard, offset=0))
        itemfollowing = ListItem(label=lblfol,
                                 path=plugin.url_for(blogs_following,
                                                     offset=0))
        itemliked = ListItem(label=lbllike,
                             path=plugin.url_for(liked, offset=0))
        litems.append(itemdash)
        litems.append(itemfollowing)
        litems.append(itemliked)
        #itemargs = {'offset': 0, 'lastid':0}
        #itemdashvids = makeitem(name='Dashboard Videos', img=__imgtumblr__,  path='dashboard', kwargs=itemargs)
        #itemargs = {'offset':0}
        #itemliked = makeitem(name='Liked Videos', path='liked', kwargs=itemargs)
        #itemfollowing = makeitem(name='Following', path='blogs_following', kwargs=itemargs)
        #itemargs = {'timestamp': str(tstamp)}
        #itemtagbrowse = makeitem(name='Browse Tags', path='taglist', kwargs=itemargs) #dict(timestamp=str(tstamp)))
        #itemargs.update({'tagname': 0})
        #litems.append(itemdash)
        #litems.append(itemfollowing)
        #litems.append(itemliked)
        #litems.append(itemtagbrowse)
    except Exception as ex:
        outmsg = "{0}".format(str(ex))
        plugin.notify(msg=outmsg, delay=7000)
        print outmsg
    return litems
Exemple #4
0
 def test_label(self):
     item = ListItem('foo')
     self.assertEqual(item.label, 'foo')
     item.label = 'bar'
     self.assertEqual(item.label, 'bar')
     item.set_label('baz')
     self.assertEqual(item.get_label(), 'baz')
Exemple #5
0
 def test_label2(self):
     item = ListItem('foo')
     self.assertIsNone(item.label2)
     item.label2 = 'bar'
     self.assertEqual(item.label2, 'bar')
     item.set_label2('baz')
     self.assertEqual(item.get_label2(), 'baz')
def new_viditem(v={}, as_dict=False):
    pathdl = plugin.url_for(endpoint=download, vurl=v.get('contentUrl', v.get('hostPageUrl', '')))
    ctxlist = []
    citem = ('Download', 'RunPlugin({0})'.format(pathdl),)
    ctxlist.append(citem)
    pathdel = plugin.url_for(endpoint=fav_del, idvid=v.get('videoId', ''))
    citem = ('DELETE', 'RunPlugin({0})'.format(pathdel),)
    ctxlist.append(citem)
    img = v.get('thumbnail', v.get('thumbnailUrl', 'DefaultVideo.png'))
    lbl = v.get('label', v.get('name', ''))
    lbl2 = v.get('label2', v.get('videoId', ''))
    vidpath = v.get('path', None)
    if vidpath is None:
        vidpath = plugin.url_for(endpoint=play, vtitle=v.get('name', lbl), vurl=v.get('contentUrl', v.get('hostPageUrl', lbl2)))
    xitem = None
    if not as_dict:
        xitem = ListItem(label=lbl, label2=lbl2, icon=img, thumbnail=img, path=vidpath)
        xitem.add_context_menu_items(items=ctxlist, replace_items=False)
        xitem.playable = True
        xitem.is_folder = False
        xitem.set_info(info_type='video', info_labels={'Title': lbl, 'Plot': lbl2, 'Premiered': v.get('datePublished', '')})
        xitem.thumbnail = img
        xitem.icon = img
        idvid = v.get('videoId', 0)
        if idvid is not 0:
            xitem.set_property(key='videoId', value=idvid)
            xitem.set_info(info_type='video', info_labels={'VideoID': idvid})
    else:
        xitem = {'label': lbl, 'label2': lbl2, 'icon': img, 'thumbnail': img, 'is_playable': True, 'path': vidpath}
    return xitem
Exemple #7
0
 def test_set_info(self):
     # noinspection PyUnresolvedReferences
     with mock.patch.object(xbmcgui.ListItem,
                            'setInfo') as mock_setInfo:
         item = ListItem()
         item.set_info('video', {'title': '300'})
     mock_setInfo.assert_called_with('video', {'title': '300'})
Exemple #8
0
 def test_is_selected(self):
     # noinspection PyUnresolvedReferences
     with mock.patch.object(xbmcgui.ListItem, 'isSelected') as mock_selected:
         mock_selected.return_value = False
         item = ListItem()
         self.assertEqual(item.is_selected(), False)
     mock_selected.assert_called_with()
Exemple #9
0
def resolveurl():
    playable = None
    resolved = ""
    url = plugin.keyboard(default='', heading='Video Page URL')
    if url is not None:
        name = url
        if len(url) > 0:
            url = url.encode('utf-8', 'ignore')
            item = ListItem(label=name,
                            label2=url,
                            icon='DefaultVideo.png',
                            thumbnail='DefaultVideo.png',
                            path=plugin.url_for(endpoint=play, url=url))
            item.playable = True
            item.set_info(info_type='video',
                          info_labels={
                              'Title': url,
                              'Plot': url
                          })
            item.add_stream_info(stream_type='video', stream_values={})
            playable = play(url)

            try:
                resolved = urlresolver.resolve(url)
            except:
                resolved = ""
            plugin.notify(msg=resolved, title="Playing..")
            return plugin.play_video(playable)
    #plugin.redirect(plugin.url_for(index))
    #plugin.clear_added_items()
    #plugin.end_of_directory()
    #return None
    return None
def category(name='', url=''):
    html = ''
    if not str(url).startswith('http'):
        url = __BASEURL__ + '/' + url
    html = DL(url)
    banner = 'DefaultVideoFolder.png'
    epre = re.compile(
        ur'href="(https?://watchseries-online.[a-z]+/episode/.+?)" .+?<span.+?</span>(.+?)</a>'
    )
    matches = epre.findall(html)
    litems = []
    if len(matches) > 1000: matches = matches[0:1000]
    for eplink, epname in matches:
        itempath = plugin.url_for(endpoint=episode, name=epname, url=eplink)
        item = ListItem(label=epname,
                        label2=eplink,
                        icon='DefaultVideo.png',
                        thumbnail='DefaultVideo.png',
                        path=itempath)
        litems.append(item)
        plugin.log.info(msg="** {0}\t{1}".format(epname, eplink))
    plugin.notify(msg="Category {0}".format(name), title=str(len(litems)))
    if plugin.get_setting(key='sortalpha', converter=bool):
        litems.sort(key=lambda litems: litems.label, reverse=True)
    return litems
Exemple #11
0
 def test_select(self):
     # noinspection PyUnresolvedReferences
     with mock.patch.object(xbmcgui.ListItem, 'select') as mock_select:
         item = ListItem()
         item.selected = True
         mock_select.assert_called_with(True)
         item.select(False)
         mock_select.assert_called_with(False)
Exemple #12
0
    def test_poster(self):
        item = ListItem()
        self.assertIsNone(item.poster)

        item.poster = 'bar'
        self.assertEqual(item.poster, 'bar')
        item.poster = 'baz'
        self.assertEqual(item.poster, 'baz')
Exemple #13
0
    def test_played(self):
        item = ListItem()
        self.assertEqual(item.played, False)

        item.played = True
        self.assertEqual(item.played, True)
        item.played = False
        self.assertEqual(item.played, False)
Exemple #14
0
def makeitem(name=None, img=None, path='blogposts', playable=False, **kwargs):
    #if doDebug():
    xitem = None
    try:
        if not path.startswith('plugin://'):
            itempath = plugin.url_for(endpoint=path, items=kwargs)
        else:
            itempath = path
        lbl2 = kwargs.get("label2",
                          itempath.partition('plugin.video.tumblrv/')[-1])
        if img is None:
            img = "https://api.tumblr.com/v2/blog/{0}/avatar/64".format(name)
        xitem = ListItem(label=name,
                         label2=lbl2,
                         icon=img,
                         thumbnail=img,
                         path=itempath)
        xitem.playable = playable
        xitem.poster = img
        #litem = {'label': name, 'thumbnail': img, 'icon': img, 'is_playable': playable, 'path': itempath)}
        if path == 'blogposts':
            img = "https://api.tumblr.com/v2/blog/{0}/avatar/64".format(name)
        elif plugin.request.path.find(
                'following/') != -1 or plugin.request.path.find(
                    'liked/') != -1 or plugin.request.path.find(
                        'dashboard/') != -1:
            blogname = kwargs.get('blogname', name)
            ctxaction = "RunPlugin({0})".format(
                plugin.url_for(endpoint=blogposts, blogname=blogname))
            cname = "[COLOR green]GOTO:[/COLOR] {0}".format(blogname)
            citem = (
                cname,
                ctxaction,
            )
            ctxlist.append(citem)
            vidurl = kwargs.get("vidurl", None)
            if vidurl is not None:
                pathdl = plugin.url_for(endpoint=download, urlvideo=vidurl)
                citem = (
                    'Download',
                    'RunPlugin({0})'.format(pathdl),
                )
                ctxlist.append(citem)
            vidid = kwargs.get('id', None)
            if vidid is not None:
                pathaddlike = plugin.url_for(endpoint=addlike, id=vidid)
                citem = (
                    'Like',
                    'RunPlugin({0})'.format(pathaddlike),
                )
                ctxlist.append(citem)
        xitem.add_context_menu_items(items=ctxlist, replace_items=False)
    except Exception as ex:
        outmsg = "Error: {0}\n{1}\n{2}\n".format(str(ex), str(ex.message),
                                                 str(ex.args))
        plugin.notify(msg=outmsg, delay=10000)
        print outmsg
    return xitem
Exemple #15
0
 def test_stream_info(self):
     # noinspection PyUnresolvedReferences
     with mock.patch.object(xbmcgui.ListItem,
                            'addStreamInfo') as mock_stream_info:
         item = ListItem()
         item.add_stream_info('video', {'duration': 185})
         mock_stream_info.assert_called_with('video', {'duration': 185})
         item.add_stream_info('audio', {'language': 'en'})
         mock_stream_info.assert_called_with('audio', {'language': 'en'})
Exemple #16
0
def dashboard_old(listlikes, alltags, litems):
    for item in listlikes:
        if item.get('type', '') == 'video':
            b = item
            img = item.get("thumbnail_url", __imgtumblr__)
            img2 = item.get("image_permalink", __imgtumblr__)
            alltags.extend(item.get('tags', []))
            try:
                if len(b.get('slug', '')) > 0:
                    lbl = b.get('slug', '')
                elif len(b.get('title', '')) > 0:
                    lbl = b.get('title', '')
                elif len(b.get('caption', '')) > 0:
                    lbl = Strip(b.get('caption', ''))
                elif len(b.get('summary', '')) > 0:
                    lbl = b.get('summary', '')
                elif len(b.get('source_title', '')) > 0:
                    lbl = b.get('source_title', '')
                else:
                    lbl = b.get('short_url', '')
                if len(item.get('summary', '')) > 0:
                    lbl2 = item.get('summary', '')
                else:
                    lbl2 = item.get('blog_name', '') + " / " + item.get('source_title', '') + "(" + item.get(
                        'slug_name', '') + ")"
            except:
                lbl = b.get('blog_name', '')
                lbl2 = b.get('short_url', '')
            vidurl = item.get('video_url', '')
            img = item.get('thumbnail_url',
                           item.get('image_permalink', item.get('image_permalink', __imgtumblr__))).replace('https:',
                                                                                                            'http:')
            img2 = item.get('image_permalink',
                            item.get('thumbnail_url', item.get('thumbnail_url', __imgtumblr__))).replace('https:',
                                                                                                         'http:')
            if vidurl is not None and len(vidurl) > 10:
                if len(b.get('caption', '')) > 0:
                    lbl = Strip(b.get('caption', ''))
                litem = ListItem(label=lbl, label2=lbl2, icon=img2, thumbnail=img, path=vidurl)
                litem.playable = True
                litem.is_folder = False
                if item.get('date', '') is not None:
                    rdate = str(item.get('date', '')).split(' ', 1)[0].strip()
                litem.set_info(info_type='video', info_labels={'Date': rdate})
                litem.set_art({'poster': img2, 'thumbnail': img, 'fanart': img2})
                pathdl = plugin.url_for(endpoint=download, urlvideo=vidurl)
                pathaddlike = plugin.url_for(endpoint=addlike, id=item.get('id', ''))
                litem.add_context_menu_items(
                    [('Download', 'RunPlugin({0})'.format(pathdl)), ('Like', 'RunPlugin({0})'.format(pathaddlike)),
                     ('Show Image', 'ShowPicture({0})'.format(img)), ])
                litems.append(litem)
    item = listlikes[-1]
    plugin.set_setting('lastid', str(item.get('id', lastid)))
    savetags(alltags)
    # litems.append(nextitem)
    return litems
Exemple #17
0
def category_episodemake(episodename, episodelink, dateadded=None):
    '''
    Will return a ListItem for the given link to an episode and it's full linked name.
    Name will be sent to format show to attempt to parse out a date or season from the title.
    Infolabels are populated with any details that can be parsed from the title as well.
    Should be used anytime an item needs to be created that is an item for one specific episode of a show.
    Latest 350, Saved Show, Category (Show listing of all episodes for that series) would all use this.
    '''
    infolbl = {}
    spath = plugin.url_for(episode, name=episodename, url=episodelink)
    if plugin.get_setting('playold', converter=bool):
        spath = spath.replace("plugin.video.watchseries/",
                              "plugin.video.wsonline/")
    img = "DefaultVideoFolder.png"
    seasonstr = ''
    try:
        eptitle, epdate, epnum = ws.formatshow(episodename)
        eplbl = ws.formatlabel(eptitle, epdate, epnum)
        plotstr = "{0} ({1}): {2} {3}".format(epdate, epnum, eptitle,
                                              episodelink)
        infolbl = {'EpisodeName': epdate, 'Title': eptitle, 'Plot': plotstr}
        if len(epnum) > 0:
            showS, showE = ws.findepseason(epnum)
            snum = int(showS)
            epnum = int(showE)
            infolbl.update({'Episode': showE, 'Season': showS})
            if snum > 0 and epnum > 0:
                epdate = "S{0}e{1}".format(snum, epnum)
                infolbl.update({'PlotOutline': epdate})
        if dateadded is not None:
            dateout = str(dateadded.replace(' ', '-')).strip()
            infolbl.update({"Date": dateout})
        item = {
            'label': eplbl,
            'label2': epdate,
            'icon': img,
            'thumbnail': img,
            'path': spath
        }
        item.setdefault(item.keys()[0])
        li = ListItem.from_dict(**item)
        li.set_is_playable(is_playable=True)
        li.is_folder = True
        li.set_info(type='video', info_labels=infolbl)
        li.add_context_menu_items([(
            'Autoplay',
            'RunPlugin("{0}")'.format(
                plugin.url_for(endpoint=ws.func_autoplay, url=episodelink)),
        )])
    except:
        li = ListItem(label=episodename,
                      label2=episodelink,
                      icon=img,
                      thumbnail=img,
                      path=spath)
    return li
Exemple #18
0
    def test_context_menu(self):
        menu_items = [('label1', 'foo'), ('label2', 'bar')]
        item = ListItem()
        item.add_context_menu_items(menu_items)
        self.assertEqual(item.get_context_menu_items(), menu_items)

        extra_menu_item = ('label3', 'baz')
        menu_items.append(extra_menu_item)
        item.add_context_menu_items([extra_menu_item])
        self.assertEqual(item.get_context_menu_items(), menu_items)
Exemple #19
0
def dashboard(lastid=0, offset=0):
    # setview_thumb()
    likes = {}
    listlikes = []
    litems = []
    strpage = str(((int(offset) + 20) / 20))
    # results = tclient.dashboard(offset=offset, limit=100)
    results = tclient.dashboard(limit=20,
                                offset=offset,
                                type='video',
                                since_id=lastid)
    nextoff = int(20 + int(offset))
    nextitem = ListItem(label="Next Page -> #{0}".format(int(strpage) + 1),
                        label2="Liked Videos",
                        icon=__imgnext__,
                        thumbnail=__imgnext__,
                        path=plugin.url_for(dashboard,
                                            offset=nextoff,
                                            lastid=lastid))
    nextitem.set_art({
        'poster': __imgnext__,
        'thumbnail': __imgnext__,
        'fanart': __imgnext__
    })
    nextitem.is_folder = True
    # litems = [nextitem]
    litems = []
    alltags = []
    if results is not None:
        if results.get('posts', None) is not None:
            if results.get('posts', None):
                results = results.get('posts', '')
            try:
                if isinstance(results, list):
                    listlikes = results
                else:
                    listlikes = results.get(results.keys()[0])
            except:
                listlikes = []
        else:
            listlikes = results.get(results.keys()[-1])
    litems, alltags = dashboard_items(listlikes)
    item = listlikes[-1]
    nextid = item.get('id', )
    plugin.set_setting('lastid', nextid)
    if nextid >= lastid - 20:
        newid, nextid = get_postids(ForceUpdate=True)
        newoff = -1 * (newid - nextid)
        nextitem.path = plugin.url_for(dashboard, offset=newoff, lastid=newid)
        msgrefresh = "Current ID:{0} Starting Newest ID: {1} off: {2} Latest PostID: {3} new Offset: {4})".format(
            str(lastid), str(newid), str(nextid), str(offset), str(newoff))
        plugin.notify(msgrefresh)
    savetags(alltags)
    litems.append(nextitem)
    return litems
Exemple #20
0
def play(title, video, url):
    resolved = None
    mediaurl = None
    vidhtml = urllib2.urlopen(url).read()
    vidurl = ''
    try:        
        matches = re.compile('(http://[^"<]+?.mp4[^"<]+?)"', re.I + re.M + re.S + re.U).findall(vidhtml)[0]
        if matches is not None:
            vidurl = matches
            xbmc.log("MATCH MP4 = {0}".format(vidurl))            
            vli = ListItem(label=title, label2=url, icon=video, thumbnail=video, path=vidurl)
            vli.playable = True
            #plugin.set_resolved_url(plugin.url_for(play, title=title, video=video, url=url))
            #xbmc.Player().play(vidurl)
            #plugin.play_video(vli)
            #return plugin.play_video(vli)                        
            #return xbmc.Player().play(vidurl)
    except:
        pass
    try:
        if vidurl == '':
            matches2 = re.compile('(http://[^"<]+?.flv[^"<]+?)"', re.I + re.M + re.S + re.U).findall(vidhtml)[0]            
            if matches2 is not None:
                vidurl = matches2
                xbmc.log("MATCH MP4 = {0}".format(vidurl))            
                vli = ListItem(label=title, label2=url, icon=video, thumbnail=video, path=vidurl)
                vli.playable = True
                #plugin.set_resolved_url(plugin.url_for(play, title=title, video=video, url=url))
                #xbmc.Player().play(vidurl)
                #plugin.set_resolved_url(vli)
                #plugin.play_video(vli)
                #plugin.set_resolved_url(plugin.url_for(play, title=title, video=video, url=url))
            #return plugin.play_video(vli)
    except:
        pass
    #plugin.set_resolved_url(plugin.url_for(play, title=title, video=video, url=url))
    try:
        if vli is not None:
            plugin.set_resolved_url(vli)
            return plugin.play_video(vli)
    except:
        pass
Exemple #21
0
    def test_art(self):
        item = ListItem()
        art = {'thumb': None, 'icon': None}
        self.assertEqual(item.art, art)

        art2 = {'thumb': 'something', 'icon': 'else'}
        item.art = art2
        self.assertEqual(item.art, art2)

        item.set_art(art)
        self.assertEqual(item.art, art)
Exemple #22
0
    def test_path(self):
        item = ListItem()
        self.assertIsNone(item.path)

        item.path = 'bar'
        self.assertEqual(item.path, 'bar')
        self.assertEqual(item.get_path(), 'bar')

        item.set_path('baz')
        self.assertEqual(item.path, 'baz')
        self.assertEqual(item.get_path(), 'baz')
Exemple #23
0
    def test_thumbnail(self):
        item = ListItem()
        self.assertIsNone(item.thumbnail)

        item.thumbnail = 'bar'
        self.assertEqual(item.thumbnail, 'bar')
        self.assertEqual(item.get_thumbnail(), 'bar')

        item.set_thumbnail('baz')
        self.assertEqual(item.thumbnail, 'baz')
        self.assertEqual(item.get_thumbnail(), 'baz')
Exemple #24
0
    def test_icon(self):
        item = ListItem()
        self.assertIsNone(item.icon)

        item.icon = 'bar'
        self.assertEqual(item.icon, 'bar')
        self.assertEqual(item.get_icon(), 'bar')

        item.set_icon('baz')
        self.assertEqual(item.icon, 'baz')
        self.assertEqual(item.get_icon(), 'baz')
Exemple #25
0
def taglist(timestamp=0):
    # setview_list()
    if not os.path.exists(tagpath):
        json.dump([], fp=open(tagpath, mode='w'))
    litems = []
    alltags = json.load(open(tagpath))
    for tag in alltags:
        turl = plugin.url_for(tags, tagname=tag, timestamp=str(timestamp))
        li = ListItem(label=tag, label2=tag, icon=__imgtumblr__, thumbnail=__imgtumblr__, path=turl)
        li.is_folder = True
        litems.append(li)
    return litems
Exemple #26
0
def dashboard_items(results=[]):
    alltags = []
    litems = []
    for item in results:
        if item.get('type', '') == 'video':
            b = {}
            b.update(item)
            lbl = ""
            lbl2 = ""
            img = item.get('thumbnail_url',
                           item.get('image_permalink', __imgtumblr__))
            alltags.extend(item.get('tags', []))
            try:
                if len(b.get('slug', '')) > 0:
                    lbl = b.get('slug', '')
                elif len(b.get('title', '')) > 0:
                    lbl = b.get('title', '')
                elif len(b.get('caption', '')) > 0:
                    lbl = Strip(b.get('caption', ''))
                elif len(b.get('summary', '')) > 0:
                    lbl = b.get('summary', '')
                elif len(b.get('source_title', '')) > 0:
                    lbl = b.get('source_title', '')
                else:
                    lbl = b.get('short_url', '')
                if len(item.get('summary', '')) > 0:
                    lbl2 = item.get('summary', '')
                else:
                    lbl2 = item.get('blog_name', "") + " / " + item.get(
                        'source_title', '') + "(" + item.get('slug_name',
                                                             '') + ")"
            except:
                lbl = b.get(b.keys()[0], "")
                lbl2 = b.get(b.keys()[-1], "")
            vidurl = item.get('video_url', "")
            if vidurl is not None and len(vidurl) > 10:
                litem = ListItem(label=lbl,
                                 label2=lbl2,
                                 icon=img,
                                 thumbnail=img,
                                 path=vidurl)
                litem.playable = True
                litem.is_folder = False
                if item.get('date', '') is not None:
                    rdate = str(item.get('date', '')).split(' ', 1)[0].strip()
                litem.set_info(info_type='video', info_labels={'Date': rdate})
                litem.set_art({'poster': img, 'thumbnail': img, 'fanart': img})
                pathdl = plugin.url_for(endpoint=download, urlvideo=vidurl)
                litem.add_context_menu_items([
                    ('Download', 'RunPlugin({0})'.format(pathdl)),
                ])
                litems.append(litem)
    return litems, alltags
Exemple #27
0
    def test_selected(self):
        item = ListItem()
        self.assertEqual(item.selected, False)
        self.assertEqual(item.is_selected(), False)

        item.selected = True
        self.assertEqual(item.selected, True)
        self.assertEqual(item.is_selected(), True)

        item.select(False)
        self.assertEqual(item.selected, False)
        self.assertEqual(item.is_selected(), False)
Exemple #28
0
def play_film(identifier):
    mubi_resolved_info = mubi.get_play_url(identifier)
    mubi_film = ListItem(path=mubi_resolved_info['url'])
    if mubi_resolved_info['is_mpd']:
        mubi_film.set_property('inputstreamaddon', 'inputstream.adaptive')
        mubi_film.set_property('inputstream.adaptive.manifest_type', 'mpd')
        if mubi_resolved_info['is_drm']:
            xbmc.log("Playing DRM films is not currently supported", 4)
            return None
            # drm = mubi_resolved_info['drm_item']
            # mubi_film.set_property('inputstream.adaptive.license_key', drm['lurl']+'|'+drm['header']+
            # '|B{SSM}|'+drm['license_field'])
            # mubi_film.set_property('inputstream.adaptive.license_type', "com.widevine.alpha")
    return plugin.set_resolved_url(mubi_film)
Exemple #29
0
    def test_context_menu(self):
        menu_items = [('label1', 'foo'), ('label2', 'bar')]
        item = ListItem()
        item.add_context_menu_items(menu_items)
        self.assertEqual(item.get_context_menu_items(), menu_items)

        extra_menu_item = ('label3', 'baz')
        menu_items.append(extra_menu_item)
        item.add_context_menu_items([extra_menu_item])
        self.assertEqual(item.get_context_menu_items(), menu_items)

        # Verify replace_items branch gets executed and works.
        item.add_context_menu_items([extra_menu_item], True)
        self.assertEqual(item.get_context_menu_items(), [extra_menu_item])
Exemple #30
0
def resolveurl():
    url = plugin.keyboard(default='', heading='Video Page URL')
    if url is not None:
        name = url
        if len(url) > 0:
            item = ListItem(label=name, label2=url, icon='DefaultVideo.png', thumbnail='DefaultVideo.png', path=plugin.url_for(endpoint=play, url=url))
            item.set_is_playable(True)
            item.set_info(type='video', info_labels={'Title': url, 'Plot': url})
            item.add_stream_info(stream_type='video', stream_values={})
            playable = play(url)
            plugin.notify(msg=playable.path, title="Playing..")
            plugin.play_video(playable)
    #plugin.redirect(plugin.url_for(index))
    plugin.clear_added_items()
    plugin.end_of_directory()