def add_entry_video(entry):
    # Thumbnail...
    div_entry_image = entry.find("div", {"class": "entry-image"})
    if div_entry_image is None:
        return
    thumbnail = div_entry_image.find("img", {"class": "thumb"})["src"]
    if not re.match("^https?:", thumbnail):
        thumbnail = "%s%s" % (url_root, thumbnail)
    # Title
    div_entry_meta = entry.find("div", {"class": "entry-meta"})
    a_title = div_entry_meta.find("a", {"class": "title"})
    title = a_title.string

    # Video page
    video_page_url = a_title["href"]

    # Genre (date)...
    div_data = div_entry_meta.find("div", {"class": "data"})

    if div_data is None:
        genre = "none"
    else:
        span_class_date = div_data.find("span", {"class": "date"})
        genre = span_class_date.string

    # Plot
    div_description = div_entry_meta.find("div", {"class": "description"})
    plot = div_description.string

    list_item = control.item(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
    list_item.setInfo("video", {"Title": title, "Studio": "Microsoft Channel 9", "Plot": plot, "Genre": genre})
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    plugin_play_url = "%s?action=play&video_page_url=%s" % (sys.argv[0], urllib.quote_plus(video_page_url))
    control.addItem(handle=int(sys.argv[1]), url=plugin_play_url, listitem=list_item, isFolder=False)
    return
    def add_blog_directory(self, entry):
        # Thumbnail...
        div_entry_image = entry.find("div", {"class": "entry-image"})
        thumbnail = div_entry_image.find("img", {"class": "thumb"})["src"]

        if not re.match("^https?:", thumbnail):
            thumbnail = "%s%s" % (utils.url_root, thumbnail)

        # Title
        div_entry_meta = entry.find("div", {"class": "entry-meta"})
        a_title = div_entry_meta.find("a", {"class": "title"})
        title = a_title.string

        # Show page URL
        show_url = a_title["href"]

        # this is to ignore things that are not linked to channel9
        if re.match('^https?:', show_url):
            return

        div_description = div_entry_meta.find("div", {"class": "description"})
        plot = div_description.string

        # Show page URL
        show_url = a_title["href"]

        # Add to list...
        list_item = control.item(title, iconImage=utils.icon_folder, thumbnailImage=thumbnail)
        list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
        list_item.setInfo("video", {"plot": plot, "title": title})
        plugin_list_show = '%s?action=list-blog&blog-url=%s' % (sys.argv[0], urllib.quote_plus(show_url))
        control.addItem(handle=int(sys.argv[1]), url=plugin_list_show, listitem=list_item, isFolder=True)
        return
def add_video(title,
              thumbnail,
              plot,
              genre,
              video_url,
              dbid,
              video_duration=None):
    list_item = control.item(title,
                             iconImage="DefaultVideo.png",
                             thumbnailImage=thumbnail)
    list_item.setInfo(
        "video", {
            "Title": title,
            "Studio": "Microsoft Channel 9",
            "Plot": plot,
            "Genre": genre
        })
    list_item.setProperty("ListItem.IsResumable", "true")
    if video_duration is not None:
        seconds = convert_timespan(video_duration).total_seconds()
        list_item.setProperty("ListItem.TotalTime", str(seconds))
        list_item.setProperty("ListItem.EndTime", str(seconds))
    list_item.setProperty("ListItem.DBID", str(seconds))
    list_item.setArt({
        "thumb": thumbnail,
        "fanart": thumbnail,
        "landscape": thumbnail,
        "poster": thumbnail
    })
    plugin_play_url = '%s?action=play&video_url=%s' % (
        sys.argv[0], urllib.quote_plus(video_url))
    control.addItem(handle=int(sys.argv[1]),
                    url=plugin_play_url,
                    listitem=list_item,
                    isFolder=False)
Beispiel #4
0
 def addDirectoryItem(self,
                      name,
                      query,
                      thumb,
                      icon,
                      context=None,
                      queue=False,
                      isAction=True,
                      isFolder=True):
     try:
         name = control.lang(name).encode('utf-8')
     except:
         pass
     url = '%s?action=%s' % (sysaddon, query) if isAction == True else query
     thumb = os.path.join(artPath, thumb) if not artPath == None else icon
     cm = []
     cm.append(('Settings',
                'RunPlugin(%s?action=openSettings&query=(0,0))' % sysaddon))
     if queue == True:
         cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon))
     if not context == None:
         cm.append((control.lang(context[0]).encode('utf-8'),
                    'RunPlugin(%s?action=%s)' % (sysaddon, context[1])))
     item = control.item(label=name)
     item.addContextMenuItems(cm)
     item.setArt({'icon': thumb, 'thumb': thumb})
     if not addonFanart == None:
         item.setProperty('Fanart_Image', addonFanart)
     control.addItem(handle=syshandle,
                     url=url,
                     listitem=item,
                     isFolder=isFolder)
    def search(self):
        if self.search_query is None or self.search_query == '':
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.search_query = k.getText() if k.isConfirmed() else None

        if self.search_query is None or self.search_query == '':
            return

        base_url = "https://c9search.azurewebsites.net/content/search?text=%s&$top=100&$skip=0&$inlinecount=allpages" \
                   % (urllib.quote_plus(self.search_query))
        data = http_request.get(base_url)
        start_index = data.index('"documents":') + 12
        if start_index <= 12:
            return

        json_data = data[start_index:-3]
        json_media = json.loads(json_data)

        for media in json_media:
            title = media["title"]
            url = media["permalink"]
            genre = media["published"]
            thumbnail = media["previewImage"]
            plot = media["summaryBody"]

            list_item = control.item(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
            list_item.setInfo("video", {"Title": title, "Studio": "Microsoft Channel 9", "Plot": plot, "Genre": genre})
            plugin_play_url = '%s?action=play&video_page_url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.addItem(handle=int(sys.argv[1]), url=plugin_play_url, listitem=list_item, isFolder=False)

        # End of directory...
        control.directory_end()
        return
Beispiel #6
0
 def views(self):
     try:
         control.idle()
         items = [(control.lang(32001).encode('utf-8'), 'movies'),
                  (control.lang(32002).encode('utf-8'), 'tvshows'),
                  (control.lang(32054).encode('utf-8'), 'seasons'),
                  (control.lang(32038).encode('utf-8'), 'episodes')]
         select = control.selectDialog([i[0] for i in items],
                                       control.lang(32049).encode('utf-8'))
         if select == -1:
             return
         content = items[select][1]
         title = control.lang(32059).encode('utf-8')
         url = '%s?action=addView&content=%s' % (sys.argv[0], content)
         poster, banner, fanart = control.addonPoster(
         ), control.addonBanner(), control.addonFanart()
         item = control.item(label=title)
         item.setInfo(type='Video', infoLabels={'title': title})
         item.setArt({
             'icon': poster,
             'thumb': poster,
             'poster': poster,
             'banner': banner
         })
         item.setProperty('Fanart_Image', fanart)
         control.addItem(handle=int(sys.argv[1]),
                         url=url,
                         listitem=item,
                         isFolder=False)
         control.content(int(sys.argv[1]), content)
         control.directory(int(sys.argv[1]), cacheToDisc=True)
         from resources.lib.modules import views
         views.setView(content, {})
     except:
         return
def add_show_directory(entry, action_url):
    # Title
    header = entry.find("header")
    if header is None:
        return

    a_title = header.find("a")
    title = a_title.string

    # Thumbnail...
    thumb_image = entry.find("img", {"role": "img"})

    thumbnail = "/assets/images/nineguy-512-bw.png"
    if thumb_image is not None:
        thumbnail = thumb_image["src"]

    if not re.match("^https?:", thumbnail):
        thumbnail = "%s%s" % (url_root, thumbnail)

    # Show page URL
    show_url = a_title["href"]

    # Add to list...
    list_item = control.item(title, iconImage=icon_folder, thumbnailImage=thumbnail)
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    control.addItem(handle=int(sys.argv[1]), url=action_url % urllib.quote_plus(show_url), listitem=list_item,
                    isFolder=True)
    return
def add_next_page(bs, item_url, page):
    ul_paging = bs.find("ul", {"role": "navigation"})
    if ul_paging is not None:
        list_item = control.item("[B][UPPERCASE][COLOR green]%s[/COLOR][/UPPERCASE][/B]" % control.lang(30503) % page,
                                 iconImage=icon_next, thumbnailImage=icon_next)
        control.addItem(handle=int(sys.argv[1]), url=item_url, listitem=list_item, isFolder=True)
    return
Beispiel #9
0
def add_next_page(item_url, page):
    list_item = control.item(text_green % (control.lang(30500) % page),
                             iconImage=icon_next,
                             thumbnailImage=icon_next)
    control.addItem(handle=int(sys.argv[1]),
                    url=item_url,
                    listitem=list_item,
                    isFolder=True)
    return
def add_next_page(bs, item_url, page):
    ul_paging = bs.find("ul", {"class": "paging"})
    if ul_paging is not None:
        list_item = control.item(
            "[B][UPPERCASE][COLOR green]%s[/COLOR][/UPPERCASE][/B]" % control.lang(30503) % page,
            iconImage=icon_next,
            thumbnailImage=icon_next,
        )
        control.addItem(handle=int(sys.argv[1]), url=item_url, listitem=list_item, isFolder=True)
    return
def add_video(title, thumbnail, plot, genre, video_url, dbid,  video_duration=None):
    list_item = control.item(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
    list_item.setInfo("video", {"Title": title, "Studio": "Microsoft Channel 9", "Plot": plot, "Genre": genre})
    list_item.setProperty("ListItem.IsResumable", "true")
    if video_duration is not None:
        seconds = convert_timespan(video_duration).total_seconds()
        list_item.setProperty("ListItem.TotalTime", str(seconds))
        list_item.setProperty("ListItem.EndTime", str(seconds))
    list_item.setProperty("ListItem.DBID", str(seconds))
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    plugin_play_url = '%s?action=play&video_url=%s' % (sys.argv[0], urllib.quote_plus(video_url))
    control.addItem(handle=int(sys.argv[1]), url=plugin_play_url, listitem=list_item, isFolder=False)
Beispiel #12
0
    def add_blog_directory(self, entry):
        # Thumbnail...
        div_entry_image = entry.find("a", {"class": "tile"})
        if div_entry_image is None:
            return

        thumb_image = div_entry_image.find("img", {"role": "img"})

        thumbnail = "/assets/images/nineguy-512-bw.png"
        if thumb_image is not None:
            thumbnail = thumb_image["src"]

        if not re.match("^https?:", thumbnail):
            thumbnail = "%s%s" % (utils.url_root, thumbnail)

        # Title
        div_entry_meta = entry.find("h3")
        a_title = div_entry_meta.find("a")
        title = a_title.string

        # Show page URL
        show_url = a_title["href"]

        # this is to ignore things that are not linked to channel9
        if re.match('^https?:', show_url):
            return

        #div_description = div_entry_meta.find("div", {"class": "description"})
        #plot = div_description.string
        plot = ""

        # Add to list...
        list_item = control.item(title,
                                 iconImage=utils.icon_folder,
                                 thumbnailImage=thumbnail)
        list_item.setArt({
            "thumb": thumbnail,
            "fanart": thumbnail,
            "landscape": thumbnail,
            "poster": thumbnail
        })
        list_item.setInfo("video", {"plot": plot, "title": title})
        plugin_list_show = '%s?action=list-blog&blog-url=%s' % (
            sys.argv[0], urllib.quote_plus(show_url))
        control.addItem(handle=int(sys.argv[1]),
                        url=plugin_list_show,
                        listitem=list_item,
                        isFolder=True)
        return
Beispiel #13
0
def add_directory(text, icon, thumbnail, url):
    list_item = xbmcgui.ListItem(text,
                                 iconImage=icon,
                                 thumbnailImage=thumbnail)
    list_item.setArt({
        "thumb": thumbnail,
        "fanart": thumbnail,
        "landscape": thumbnail,
        "poster": thumbnail
    })
    control.addItem(handle=int(sys.argv[1]),
                    url=url,
                    listitem=list_item,
                    isFolder=True)
    return
Beispiel #14
0
    def search(self):
        if self.search_query is None or self.search_query == '':
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.search_query = k.getText() if k.isConfirmed() else None

        if self.search_query is None or self.search_query == '':
            return

        base_url = "https://c9search.azurewebsites.net/content/search?text=%s&$top=100&$skip=0&$inlinecount=allpages" \
                   % (urllib.quote_plus(self.search_query))
        data = http_request.get(base_url)
        start_index = data.index('"documents":') + 12
        if start_index <= 12:
            return

        json_data = data[start_index:-3]
        json_media = json.loads(json_data)

        for media in json_media:
            title = media["title"]
            url = media["permalink"]
            genre = media["published"]
            thumbnail = media["previewImage"]
            plot = media["summaryBody"]

            list_item = control.item(title,
                                     iconImage="DefaultVideo.png",
                                     thumbnailImage=thumbnail)
            list_item.setInfo(
                "video", {
                    "Title": title,
                    "Studio": "Microsoft Channel 9",
                    "Plot": plot,
                    "Genre": genre
                })
            plugin_play_url = '%s?action=play&video_page_url=%s' % (
                sys.argv[0], urllib.quote_plus(url))
            control.addItem(handle=int(sys.argv[1]),
                            url=plugin_play_url,
                            listitem=list_item,
                            isFolder=False)

        # End of directory...
        control.directory_end()
        return
Beispiel #15
0
def downloader():
    thumb = control.addonThumb() ; fanart = control.addonFanart()

    status = control.window.getProperty(property + '.status')

    if not downloadPath == '':
        item = control.item('[COLOR FF00b8ff]Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]), url=downloadPath, listitem=item, isFolder=True)

    if status == 'downloading':
        item = control.item('[COLOR red]Stop Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=stopDownload', listitem=item, isFolder=True)
    else:
        item = control.item('[COLOR FF00b8ff]Start Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=startDownload', listitem=item, isFolder=True)

    if status == 'downloading':
        item = control.item('[COLOR gold]Download Status[/COLOR]', iconImage=thumb, thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('Fanart_Image', fanart)
        control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=statusDownload', listitem=item, isFolder=True)

    def download(): return []
    result = cache.get(download, 600000000, table='rel_dl')

    for i in result:
        try:
            cm = []
            cm.append(('Remove from Queue', 'RunPlugin(%s?action=removeDownload&url=%s)' % (sys.argv[0], urllib.quote_plus(i['url']))))
            item = control.item(i['name'], iconImage=i['image'], thumbnailImage=i['image'])
            item.addContextMenuItems(cm, replaceItems=True)
            item.setProperty('fanart_image', fanart)
            item.setProperty('Video', 'true')
            item.setProperty('IsPlayable', 'true')
            control.addItem(handle=int(sys.argv[1]), url=i['url'], listitem=item)
        except:
            pass

    control.directory(int(sys.argv[1]), cacheToDisc=True)
Beispiel #16
0
def add_video(title, thumbnail, video_url):
    list_item = control.item(title,
                             iconImage="DefaultVideo.png",
                             thumbnailImage=thumbnail)
    list_item.setInfo("video", {"Title": title, "Studio": "4Chan"})
    list_item.setProperty("ListItem.IsResumable", "true")
    list_item.setArt({
        "thumb": thumbnail,
        "fanart": thumbnail,
        "landscape": thumbnail,
        "poster": thumbnail
    })
    plugin_play_url = '%s?action=play&video_url=%s' % (
        sys.argv[0], urllib.quote_plus(video_url))
    control.addItem(handle=int(sys.argv[1]),
                    url=plugin_play_url,
                    listitem=list_item,
                    isFolder=False)
def add_entry_video(entry):
    # Thumbnail...
    div_entry_image = entry.find("a", {"class": "tile"})
    if div_entry_image is None:
        return
    thumb_image = div_entry_image.find("img", {"role": "img"})

    thumbnail = "/assets/images/nineguy-512-bw.png"
    if thumb_image is not None:
        thumbnail = thumb_image["src"]

    if not re.match("^https?:", thumbnail):
        thumbnail = "%s%s" % (url_root, thumbnail)
    # Title
    heading = entry.find("h3")
    if heading is None:
        return

    a_title = heading.find("a")
    title = a_title.string

    # Video page
    video_page_url = a_title["href"]

    # Genre (date)...
    div_data = heading.find("div", {"class": "data"})

    if div_data is None:
        genre = "none"
    else:
        span_class_date = div_data.find("span", {"class": "date"})
        genre = span_class_date.string

    # Plot
    #div_description = div_entry_meta.find("div", {"class": "description"})
    #plot = div_description.string
    plot = ""

    list_item = control.item(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
    list_item.setInfo("video", {"Title": title, "Studio": "Microsoft Channel 9", "Plot": plot, "Genre": genre})
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    plugin_play_url = '%s?action=play&video_page_url=%s' % (sys.argv[0], urllib.quote_plus(video_page_url))
    control.addItem(handle=int(sys.argv[1]), url=plugin_play_url, listitem=list_item, isFolder=False)
    return
def add_show_directory(entry, action_url):
    # Thumbnail...
    div_entry_image = entry.find("div", {"class": "entry-image"})
    thumbnail = div_entry_image.find("img", {"class": "thumb"})["src"]
    if not re.match("^https?:", thumbnail):
        thumbnail = "%s%s" % (url_root, thumbnail)

    # Title
    div_entry_meta = entry.find("div", {"class": "entry-meta"})
    a_title = div_entry_meta.find("a", {"class": "title"})
    title = a_title.string

    # Show page URL
    show_url = a_title["href"]

    # Add to list...
    list_item = control.item(title, iconImage=icon_folder, thumbnailImage=thumbnail)
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    control.addItem(
        handle=int(sys.argv[1]), url=action_url % urllib.quote_plus(show_url), listitem=list_item, isFolder=True
    )
    return
Beispiel #19
0
def add_image(title, thumbnail, image_url, slideshow=False):
    list_item = control.item(title,
                             iconImage="DefaultPicture.png",
                             thumbnailImage=thumbnail,
                             path=image_url)
    list_item.setInfo(type="pictures",
                      infoLabels={
                          "title": title,
                          "exif:path": image_url,
                          "picturepath": image_url
                      })
    list_item.setArt({"thumb": thumbnail})
    list_item.setProperty(u'fanart_image', image_url)
    if slideshow:
        control.addItem(handle=int(sys.argv[1]),
                        url=image_url,
                        listitem=list_item)
    else:
        plugin_play_url = '%s?action=view&image_url=%s' % (
            sys.argv[0], urllib.quote_plus(image_url))
        control.addItem(handle=int(sys.argv[1]),
                        url=plugin_play_url,
                        listitem=list_item)
def add_directory(text, icon, thumbnail, url):
    list_item = xbmcgui.ListItem(text, iconImage=icon, thumbnailImage=thumbnail)
    list_item.setArt({"thumb": thumbnail, "fanart": thumbnail, "landscape": thumbnail, "poster": thumbnail})
    control.addItem(handle=int(sys.argv[1]), url=url, listitem=list_item, isFolder=True)
    return
Beispiel #21
0
def downloader():
    thumb = control.addonThumb()
    fanart = control.addonFanart()

    status = control.window.getProperty(property + '.status')

    if not downloadPath == '':
        item = control.item('[COLOR FF00b8ff]Downloads[/COLOR]',
                            iconImage=thumb,
                            thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]),
                        url=downloadPath,
                        listitem=item,
                        isFolder=True)

    if status == 'downloading':
        item = control.item('[COLOR red]Stop Downloads[/COLOR]',
                            iconImage=thumb,
                            thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]),
                        url=sys.argv[0] + '?action=stopDownload',
                        listitem=item,
                        isFolder=True)
    else:
        item = control.item('[COLOR FF00b8ff]Start Downloads[/COLOR]',
                            iconImage=thumb,
                            thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('fanart_image', fanart)
        control.addItem(handle=int(sys.argv[1]),
                        url=sys.argv[0] + '?action=startDownload',
                        listitem=item,
                        isFolder=True)

    if status == 'downloading':
        item = control.item('[COLOR gold]Download Status[/COLOR]',
                            iconImage=thumb,
                            thumbnailImage=thumb)
        item.addContextMenuItems([], replaceItems=True)
        item.setProperty('Fanart_Image', fanart)
        control.addItem(handle=int(sys.argv[1]),
                        url=sys.argv[0] + '?action=statusDownload',
                        listitem=item,
                        isFolder=True)

    def download():
        return []

    result = cache.get(download, 600000000, table='rel_dl')

    for i in result:
        try:
            cm = []
            cm.append(('Remove from Queue',
                       'RunPlugin(%s?action=removeDownload&url=%s)' %
                       (sys.argv[0], urllib.quote_plus(i['url']))))
            item = control.item(i['name'],
                                iconImage=i['image'],
                                thumbnailImage=i['image'])
            item.addContextMenuItems(cm, replaceItems=True)
            item.setProperty('fanart_image', fanart)
            item.setProperty('Video', 'true')
            item.setProperty('IsPlayable', 'true')
            control.addItem(handle=int(sys.argv[1]),
                            url=i['url'],
                            listitem=item)
        except:
            pass

    control.directory(int(sys.argv[1]), cacheToDisc=True)
def add_next_page(item_url, page):
    list_item = control.item(text_green % (control.lang(30500) % page),
                             iconImage=icon_next, thumbnailImage=icon_next)
    control.addItem(handle=int(sys.argv[1]), url=item_url, listitem=list_item, isFolder=True)
    return
Beispiel #23
0
def add(items,
        cacheToDisc=True,
        content=None,
        mediatype=None,
        infotype='video'):

    if items is None or len(items) == 0:
        return

    sysicon = control.join(control.addonInfo('path'), 'resources', 'media')
    sysimage = control.addonInfo('icon')
    sysfanart = control.addonInfo('fanart')

    for i in items:
        try:
            try:
                label = control.lang(i['title']).encode('utf-8')
            except:
                label = i['title']

            if 'label' in i and not i['label'] == '0':
                label = i['label']

            if 'image' in i and not i['image'] == '0':
                image = i['image']
            elif 'poster' in i and not i['poster'] == '0':
                image = i['poster']
            elif 'icon' in i and not i['icon'] == '0':
                image = control.join(sysicon, i['icon'])
            else:
                image = sysimage

            if 'banner' in i and not i['banner'] == '0':
                banner = i['banner']
            elif 'fanart' in i and not i['fanart'] == '0':
                banner = i['fanart']
            else:
                banner = image

            fanart = i['fanart'] if 'fanart' in i and not i[
                'fanart'] == '0' else sysfanart

            isFolder = False if 'isFolder' in i and not i[
                'isFolder'] == '0' else True

            url = '%s?action=%s' % (sysaddon, i['action'])

            try:
                url += '&url=%s' % urllib.quote_plus(i['url'])
            except:
                pass
            try:
                url += '&image=%s' % urllib.quote_plus(i['image'])
            except:
                pass

            cm = []
            menus = i['cm'] if 'cm' in i else []

            for menu in menus:
                try:
                    try:
                        tmenu = control.lang(menu['title']).encode('utf-8')
                    except:
                        tmenu = menu['title']
                    qmenu = urllib.urlencode(menu['query'])
                    cm.append((tmenu, 'RunPlugin(%s?%s)' % (sysaddon, qmenu)))
                except:
                    pass

            meta = dict((k, v) for k, v in i.iteritems()
                        if not k == 'cm' and not v == '0')
            if not mediatype == None:
                meta['mediatype'] = mediatype

            item = control.item(label=label,
                                iconImage=image,
                                thumbnailImage=image)

            item.setArt({
                'icon': image,
                'thumb': image,
                'poster': image,
                'tvshow.poster': image,
                'season.poster': image,
                'banner': banner,
                'tvshow.banner': banner,
                'season.banner': banner
            })

            item.setProperty('Fanart_Image', fanart)

            item.addContextMenuItems(cm)
            item.setInfo(type=infotype, infoLabels=meta)
            if isFolder is False:
                item.setProperty(
                    'IsPlayable', 'true'
                ) if not i['action'] == 'pvr_client' else item.setProperty(
                    'IsPlayable', 'false')
                if not i['action'] == 'pvr_client' and infotype == 'video':
                    item.addStreamInfo('video', {'codec': 'h264'})

            control.addItem(handle=syshandle,
                            url=url,
                            listitem=item,
                            isFolder=isFolder)
        except:
            pass

    try:
        i = items[0]
        if i['next'] == '':
            raise Exception()

        url = '%s?action=%s&url=%s' % (sysaddon, i['nextaction'],
                                       urllib.quote_plus(i['next']))
        icon = i['nexticon'] if 'nexticon' in i else control.join(
            sysicon, 'next.png')
        fanart = i['nextfanart'] if 'nextfanart' in i else sysfanart
        try:
            label = control.lang(i['nextlabel']).encode('utf-8')
        except:
            label = 'next'

        item = control.item(label=label, iconImage=icon, thumbnailImage=icon)
        item.setArt({
            'icon': icon,
            'thumb': icon,
            'poster': icon,
            'tvshow.poster': icon,
            'season.poster': icon,
            'banner': icon,
            'tvshow.banner': icon,
            'season.banner': icon
        })
        item.setProperty('Fanart_Image', fanart)
        control.addItem(handle=syshandle,
                        url=url,
                        listitem=item,
                        isFolder=True)
    except:
        pass

    if not content is None:
        control.content(syshandle, content)

    control.directory(syshandle, cacheToDisc=cacheToDisc)
Beispiel #24
0
def add(items, cacheToDisc=True, content=None, mediatype=None, infotype='video'):

    if items is None or len(items) == 0:
        return

    sysicon = control.join(control.addonInfo('path'), 'resources', 'media')
    sysimage = control.addonInfo('icon')
    sysfanart = control.addonInfo('fanart')

    for i in items:
        try:
            try:
                label = control.lang(i['title']).encode('utf-8')
            except:
                label = i['title']

            if 'label' in i and not i['label'] == '0':
                label = i['label']

            if 'image' in i and not i['image'] == '0':
                image = i['image']
            elif 'poster' in i and not i['poster'] == '0':
                image = i['poster']
            elif 'icon' in i and not i['icon'] == '0':
                image = control.join(sysicon, i['icon'])
            else:
                image = sysimage

            if 'banner' in i and not i['banner'] == '0':
                banner = i['banner']
            elif 'fanart' in i and not i['fanart'] == '0':
                banner = i['fanart']
            else:
                banner = image

            fanart = i['fanart'] if 'fanart' in i and not i['fanart'] == '0' else sysfanart

            isFolder = False if 'isFolder' in i and not i['isFolder'] == '0' else True

            url = '%s?action=%s' % (sysaddon, i['action'])

            try:
                url += '&url=%s' % urllib.quote_plus(i['url'])
            except:
                pass
            try:
                url += '&image=%s' % urllib.quote_plus(i['image'])
            except:
                pass

            cm = []
            menus = i['cm'] if 'cm' in i else []

            for menu in menus:
                try:
                    try:
                        tmenu = control.lang(menu['title']).encode('utf-8')
                    except:
                        tmenu = menu['title']
                    qmenu = urllib.urlencode(menu['query'])
                    cm.append((tmenu, 'RunPlugin(%s?%s)' % (sysaddon, qmenu)))
                except:
                    pass

            meta = dict((k, v) for k, v in i.iteritems() if not k == 'cm' and not v == '0')
            if not mediatype == None:
                meta['mediatype'] = mediatype

            item = control.item(label=label, iconImage=image, thumbnailImage=image)

            item.setArt({'icon': image, 'thumb': image, 'poster': image, 'tvshow.poster': image, 'season.poster': image, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner})

            item.setProperty('Fanart_Image', fanart)

            item.addContextMenuItems(cm)
            item.setInfo(type=infotype, infoLabels = meta)
            if isFolder == False:
                item.setProperty('IsPlayable', 'true') if not i['action'] == 'pvr_client' else item.setProperty('IsPlayable', 'false')

            control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder)
        except:
            pass

    try:
        i = items[0]
        if i['next'] == '':
            raise Exception()

        url = '%s?action=%s&url=%s' % (sysaddon, i['nextaction'], urllib.quote_plus(i['next']))
        icon = i['nexticon'] if 'nexticon' in i else control.join(sysicon, 'next.png')
        fanart = i['nextfanart'] if 'nextfanart' in i else sysfanart
        try:
            label = control.lang(i['nextlabel']).encode('utf-8')
        except:
            label = 'next'

        item = control.item(label=label, iconImage=icon, thumbnailImage=icon)
        item.setArt({'icon': icon, 'thumb': icon, 'poster': icon, 'tvshow.poster': icon, 'season.poster': icon, 'banner': icon, 'tvshow.banner': icon, 'season.banner': icon})
        item.setProperty('Fanart_Image', fanart)
        control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True)
    except:
        pass

    if not content is None:
        control.content(syshandle, content)

    control.directory(syshandle, cacheToDisc=cacheToDisc)