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)
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
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
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)
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
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
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
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_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
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
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(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)
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)