def play_video(name, url, thumb, plot): url = "http://www.nba.com/video/" + url + ".xml" html = getPage(url) if html["error"] == "HTTP Error 404: Not Found": dialog = xbmcgui.Dialog() ok = dialog.ok(plugin, settings.getLocalizedString(30006)) return url = "http://nba.cdn.turner.com/nba/big" + common.parseDOM(html["content"], "file", attrs={"type": "large"})[0] infoLabels = {"Title": name, "Studio": plugin, "Plot": plot} playListItem(label=name, image=thumb, path=url, infoLabels=infoLabels, PlayPath=False)
def play_video(url, name, thumb, plot): infoLabels = { "Title": name, "Studio": plugin, "Plot": plot } result = getPage("http://vod.espn.go.com/motion/" + url + ".smil?FLVPlaybackVersion=2.1") if '404' in str(result["error"]): dialog = xbmcgui.Dialog() ok = dialog.ok(plugin, settings.getLocalizedString( 30004 )) return else: playpath = "mp4:" + url + "_" + settings.getSetting("quality") + ".mp4" url = 'rtmp://svod.espn.go.com/motion/' playListItem(label = name, image = thumb, path = url, infoLabels = infoLabels, PlayPath = playpath)
def play_video(url, name, thumb, plot): infoLabels = { "Title": name, "Studio": plugin, "Plot": plot } result = getPage("http://vod.espn.go.com/motion/" + url + ".smil?FLVPlaybackVersion=2.1") if '404' in str(result["error"]): dialog = xbmcgui.Dialog() ok = dialog.ok(plugin, settings.getLocalizedString( 30004 )) return else: playpath = "mp4:" + url + "_" + settings.getSetting("quality") + ".mp4" # Address a bug in early helix versions: try: version = xbmc_version = xbmc.getInfoLabel( "System.BuildVersion" ) version = float(version[:4]) if version >= 14.0 and version < 14.2: url = 'rtmp://svod.espn.go.com/motion/' + url + "_" + settings.getSetting("quality") + ".mp4" else: url = 'rtmp://svod.espn.go.com/motion/' except: url = 'rtmp://svod.espn.go.com/motion/' playListItem(label = name, image = thumb, path = url, infoLabels = infoLabels, PlayPath = playpath)
def build_search_directory(): page = 1 checking = True string = common.getUserInput(settings.getLocalizedString( 30007 ), "") if not string: build_main_directory() return if settings.getSetting('playall') == 'true': playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO) playlist.clear() u = { 'mode': '4' } infoLabels = { "Title": '* ' + settings.getLocalizedString( 30030 ) + ' *', "Plot": settings.getLocalizedString( 30031 ) } addListItem('* ' + settings.getLocalizedString( 30030 ) + ' *', icon, u, False, 0, infoLabels, fanart) while checking: url = 'http://www.tmz.com/search/json/videos/' + urllib.quote(string) + '/' + str(page) + '.json' data = getPage(url) if data['error'] == 'HTTP Error 404: Not Found': dialog = xbmcgui.Dialog() ok = dialog.ok( plugin , settings.getLocalizedString( 30009 ) + '\n' + settings.getLocalizedString( 30010 ) ) return elif data['error'] != None: text = getUrl( url, True ) else: text = data['content'] jdata = json.loads(text) total = int(jdata['total']) if ((total - page * 25) > 0): page = page + 1 else: checking = False for results in jdata['results']: title = results['title'].encode('ascii', 'ignore') videoUrl = results['URL'].replace("\\", "") thumb = results['thumbnailUrl'].replace("\\", "") + '/width/490/height/266/type/3' infoLabels = { "Title": title, "Plot": title } u = { 'mode': '3', 'name': title, 'url': videoUrl, 'thumb': thumb } addListItem(label = title, image = thumb, url = u, isFolder = False, totalItems = total, infoLabels = infoLabels, fanart = fanart) xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod = xbmcplugin.SORT_METHOD_NONE ) setViewMode("503") xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
def build_sub_directory(url, name, slug, offset, daily_info): if slug == None: dialog = xbmcgui.Dialog() ok = dialog.ok( plugin , settings.getLocalizedString( 30029 ) ) build_main_directory(BASE + 'getShows' + KEY) return saveurl = url data = json.loads(getUrl(url + '&offset=' + str(offset * 25))) if len(data['episodes']) == 0: dialog = xbmcgui.Dialog() ok = dialog.ok( plugin , settings.getLocalizedString( 30026 ) + ' ' + name + '.' ) return if slug != 'None': try: downloads = 'http://revision3.com/' + slug + '/' + slug + '_downloads' fresult = getPage(downloads)['content'] match = re.compile( '<a href="(.+?)" target="_blank">1920x1200</a>' ).findall(fresult) if len(match) > 1: fanart = match[1] else: fanart = match[0] settings.setSetting(slug, fanart) except: fanart = 'http://videos.revision3.com/revision3/images/shows/%s/%s_hero.jpg' % (slug, slug) if getPage(fanart)['error'] == 'HTTP Error 404: Not Found': fanart = fanart_bg settings.setSetting(slug, fanart) else: settings.setSetting(slug, fanart) else: fanart = fanart_bg if daily_info != 'None' and settings.getSetting('daily') == 'true': daily_info = ast.literal_eval(daily_info) u = { 'mode': '1', 'name': daily_info['name'], 'url': daily_info['url'], 'slug': slug, 'daily_info': 'None' } infoLabels = { "Title": daily_info['name'], "Plot": daily_info['plot'] } addListItem('[ ' + daily_info['name'] + ' ]', daily_info['thumb'], u, True, 0, infoLabels, fanart) if settings.getSetting('download') == '' or settings.getSetting('download') == 'false': if settings.getSetting('playall') == 'true': playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO) playlist.clear() u = { 'mode': '6' } infoLabels = { "Title": settings.getLocalizedString( 30030 ), "Plot": settings.getLocalizedString( 30031 ) } addListItem('* ' + settings.getLocalizedString( 30030 ) + ' *', play_thumb, u, True, 0, infoLabels, fanart) for episode in data['episodes']: studio = episode['show']['name'] thumb = episode['images']['medium'] url = episode['media'] plot = episode['summary'].encode('ascii', 'ignore') name = episode['name'].encode('ascii', 'ignore') episodenum = episode['number'] date = episode['published'].rsplit('T')[0] duration = int(episode['duration']) infoLabels = { "Title": name, "Studio": studio, "Plot": plot, "Episode": int(episodenum), "Aired": date } u = { 'mode': '2', 'name': name, 'url': url, 'plot': plot, 'studio': studio, 'episode': episodenum, 'thumb': thumb, 'date': date } addListItem(plot, thumb, u, False, len(data['episodes']), infoLabels, fanart, duration) if (int(data['total']) - ((offset + 1) * 25)) > 0: u = { 'mode': '1', 'name': studio, 'url': saveurl, 'slug': slug, 'offset': offset + 1, 'daily_info': 'None' } infoLabels = { "Title": settings.getLocalizedString( 30016 ), "Plot": settings.getLocalizedString( 30016 ) } addListItem(settings.getLocalizedString( 30016 ) + ' (' + str( offset + 2 ) + ')', next_thumb, u, True, 0, infoLabels, fanart) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_UNSORTED ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_EPISODE ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_STUDIO ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_VIDEO_RUNTIME ) setViewMode("503") xbmcplugin.endOfDirectory(int(sys.argv[1]))
def build_sub_directory(url, name, slug, offset, daily_info): if slug == None: dialog = xbmcgui.Dialog() ok = dialog.ok(plugin, settings.getLocalizedString(30029)) build_main_directory(BASE + 'getShows' + KEY) return saveurl = url data = json.loads(getUrl(url + '&offset=' + str(offset * 25))) if len(data['episodes']) == 0: dialog = xbmcgui.Dialog() ok = dialog.ok(plugin, settings.getLocalizedString(30026) + ' ' + name + '.') return if slug != 'None': try: downloads = 'http://testtube.com/' + slug + '/' + slug + '_downloads' fresult = getPage(downloads)['content'] match = re.compile('<a href="(.+?)" target="_blank">1920x1200</a>' ).findall(fresult) if len(match) > 1: fanart = match[1] else: fanart = match[0] settings.setSetting(slug, fanart) except: fanart = 'http://videos.testtube.com/revision3/images/shows/%s/%s_hero.jpg' % ( slug, slug) if getPage(fanart)['error'] == 'HTTP Error 404: Not Found': fanart = fanart_bg settings.setSetting(slug, fanart) else: settings.setSetting(slug, fanart) else: fanart = fanart_bg if daily_info != 'None' and settings.getSetting('daily') == 'true': daily_info = ast.literal_eval(daily_info) u = { 'mode': '1', 'name': daily_info['name'], 'url': daily_info['url'], 'slug': slug, 'daily_info': 'None' } infoLabels = {"Title": daily_info['name'], "Plot": daily_info['plot']} addListItem('[ ' + daily_info['name'] + ' ]', daily_info['thumb'], u, True, 0, infoLabels, fanart) if settings.getSetting('download') == '' or settings.getSetting( 'download') == 'false': if settings.getSetting('playall') == 'true': playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO) playlist.clear() u = {'mode': '6'} infoLabels = { "Title": settings.getLocalizedString(30030), "Plot": settings.getLocalizedString(30031) } addListItem('* ' + settings.getLocalizedString(30030) + ' *', play_thumb, u, True, 0, infoLabels, fanart) for episode in data['episodes']: studio = episode['show']['name'] thumb = episode['images']['medium'] url = episode['media'] plot = episode['summary'].encode('ascii', 'ignore') name = episode['name'].encode('ascii', 'ignore') episodenum = episode['number'] date = episode['published'].rsplit('T')[0] duration = int(episode['duration']) infoLabels = { "Title": name, "Studio": studio, "Plot": plot, "Episode": int(episodenum), "Aired": date } u = { 'mode': '2', 'name': name, 'url': url, 'plot': plot, 'studio': studio, 'episode': episodenum, 'thumb': thumb, 'date': date } addListItem(plot, thumb, u, False, len(data['episodes']), infoLabels, fanart, duration) if (int(data['total']) - ((offset + 1) * 25)) > 0: u = { 'mode': '1', 'name': studio, 'url': saveurl, 'slug': slug, 'offset': offset + 1, 'daily_info': 'None' } infoLabels = { "Title": settings.getLocalizedString(30016), "Plot": settings.getLocalizedString(30016) } addListItem( settings.getLocalizedString(30016) + ' (' + str(offset + 2) + ')', next_thumb, u, True, 0, infoLabels, fanart) xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_UNSORTED) xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_EPISODE) xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_STUDIO) xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_VIDEO_RUNTIME) setViewMode("503") xbmcplugin.endOfDirectory(int(sys.argv[1]))
def build_sub_directory(url, name): saveurl = url studio = name savestudio = name html = getUrl(url) ret = common.parseDOM(html, "div", attrs = { "id": "main-episodes" }) pageLoad = common.parseDOM(ret, "a", ret = "onclick") if len(ret) == 0: ret = common.parseDOM(html, "div", attrs = { "id": "all-episodes" }) pageLoad = common.parseDOM(ret, "a", ret = "onclick") if len(ret) == 0: ret = common.parseDOM(html, "ul", attrs = { "class": "episode-grid" }) pageLoad = common.parseDOM(html, "a", ret = "onclick") current = common.parseDOM(html, "span", attrs = { "class": "active" }) episodes = common.parseDOM(ret, "li", attrs = { "class": "episode item" }) img = common.parseDOM(episodes[0], "img", ret = "src")[0] if settings.getLocalizedString( 30013 ) != name: try: downloads = 'http://revision3.com/' + img.rsplit('/')[6] + '/' + img.rsplit('/')[6] + '_downloads' fresult = getPage(downloads)['content'] data = re.compile( '<a href="(.+?)" target="_blank">1920x1200</a>' ).findall(fresult) if len(data) > 1: fanart = data[1] else: fanart = data[0] settings.setSetting(img.rsplit('/')[6], fanart) except: fanart = 'http://statics.revision3.com/_/images/shows/' + img.rsplit('/')[6] + '/show_background.jpg' if getPage(fanart)['error'] == 'HTTP Error 404: Not Found': settings.setSetting(img.rsplit('/')[6], fanart_bg) else: settings.setSetting(img.rsplit('/')[6], fanart) try: child = common.parseDOM(html, "div", attrs = { "id": "child-episodes" }) label = common.parseDOM(html, "a", attrs = { "href": "#child-episodes" })[0] childshow = common.parseDOM(child, "a", attrs = { "class": "thumbnail" }, ret = "href" )[0].rsplit('/')[1] csaveurl = 'http://revision3.com/' + childshow + '/episodePage?type=recent&limit=15&hideShow=1&hideArrows=1&page=1' u = { 'mode': '1', 'name': urllib.quote_plus(studio), 'url': urllib.quote_plus(csaveurl) } infoLabels = { "Title": label, "Plot": label } addListItem('[ ' + label + ' ]', more_thumb, u, True, infoLabels, fanart) except: pass try: strs = 'http://revision3.com' + pageLoad[-1:][0].rsplit('\'')[1] params = getParameters(strs) saveurl = strs.rstrip('&page=' + params['page']) + '&page=' + str( int(current[0]) + 1 ) if int(params['page']) > int(current[0]): next = True else: next = False except: next = False for data in episodes: thumb = common.parseDOM(data, "img", ret = "src")[0].replace('small.thumb','medium.thumb') show_id = thumb.split('/')[6] if not settings.getSetting(show_id): fanart = fanart_bg else: fanart = settings.getSetting(show_id) plot = clean(common.parseDOM(data, "img", ret = "alt")[0]) name = clean(common.stripTags(common.parseDOM(data, "a")[1])) cut = common.parseDOM(data, "a")[1] try: studio = clean(common.parseDOM(cut, "strong")[0]) except: pass name = name.replace(studio + ' ','') url = 'http://revision3.com' + common.parseDOM(data, "a", attrs = { "class": "thumbnail" }, ret = "href")[0] try: episode = name.rsplit(' ')[1] date = name.rsplit(' ')[3].rsplit('/')[2] + '-' + name.rsplit(' ')[3].rsplit('/')[0] + '-' + name.rsplit(' ')[3].rsplit('/')[1] except: episode = '0' date = '0000-00-00' length = name[-6:].rstrip(')').replace('(','').split(':') duration = int(length[0]) * 60 + int(length[1]) infoLabels = { "Title": plot, "Studio": studio, "Plot": plot, "Episode": int(episode), "Aired": date } u = { 'mode': '2', 'name': urllib.quote_plus(plot), 'url': urllib.quote_plus(url), 'plot': urllib.quote_plus(infoLabels['Plot'].encode('ascii', 'ignore')), 'studio': urllib.quote_plus(infoLabels['Studio']), 'episode': urllib.quote_plus(str(infoLabels['Episode'])), 'thumb': urllib.quote_plus(thumb), 'date': urllib.quote_plus(infoLabels['Aired']) } addListItem(plot, thumb, u, False, infoLabels, fanart, duration) if next == True: u = { 'mode': '1', 'name': urllib.quote_plus(savestudio), 'url': urllib.quote_plus(saveurl) } infoLabels = { "Title": settings.getLocalizedString( 30016 ), "Plot": settings.getLocalizedString( 30016 ) } addListItem(settings.getLocalizedString( 30016 ) + ' (' + str( int(current[0]) + 1 ) + ')', next_thumb, u, True, infoLabels, fanart_bg) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_UNSORTED ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_EPISODE ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_STUDIO ) xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_VIDEO_RUNTIME ) setViewMode("503") xbmcplugin.endOfDirectory(int(sys.argv[1]))