def episodes_movies(url = common.args.url): episodes = [] root_dict = {} root_url = url root_data = connection.getURL(root_url) root_menu = simplejson.loads(root_data)['Entries'] for root_item in root_menu: if not root_item.get('ClipsOnly', False): movie_name = root_item['Title'] movie_url = FULLEPISODES % root_item['ID'] movie_thumb = root_item['ChannelArtTileWide'] movie_plot = root_item['Description'] movie_year = root_item['ReleaseYear'] movie_rating = root_item['UserRating'] movie_duration = root_item['DurationInSeconds'] movie_expires = root_item['RightsExpirationDate'] movie_genre = root_item['Genre'] movie_mpaa = root_item['Rating'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(movie_url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : movie_name, 'rating' : movie_rating, 'durationinseconds' : movie_duration, 'genre' : movie_genre, 'plot' : movie_plot, 'year' : movie_year, 'mpaa' : movie_mpaa} infoLabels = common.enrich_infolabels(infoLabels, movie_expires, '%m/%d/%Y %I:%M:%S %p') if movie_duration: episodes.append((u, movie_name, movie_thumb, infoLabels, 'list_qualities', False, 'Movie' )) return episodes
def episodes(episode_url = common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_json = simplejson.loads(episode_data)['result'] episode_menu = episode_json['data'] title = episode_json['title'] valid_login = None for episode_item in episode_menu: url = BASE + episode_item['url'] if episode_item['status'] == 'PREMIUM' and valid_login is None: valid_login = login(url) print "login", valid_login if episode_item['status'] == 'AVAILABLE' or (valid_login and episode_item['status'] == 'PREMIUM'): videourl = episode_item['streaming_url'] HD = False episode_duration = int(common.format_seconds(episode_item['duration'])) episode_airdate = common.format_date(episode_item['airdate'], '%m/%d/%y') if len(episode_item['label']) < len(episode_item['title']) and episode_item['label']: episode_name = episode_item['label'] else: episode_name = episode_item['title'] try: season_number = int(episode_item['season_number']) except: season_number = -1 try: episode_number = int(episode_item['episode_number']) except: episode_number = -1 try: episode_thumb = episode_item['thumb']['large'] except: episode_thumb = None episode_plot = episode_item['description'] try: episode_mpaa = re.compile('\((.*)\)$').findall(episode_plot)[0] except: episode_mpaa = None show_title = episode_item['series_title'] episode_expires = episode_item['expiry_date'] episode_type = episode_item['type'] if url is not None: u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'mpaa' : episode_mpaa, 'TVShowTitle': show_title} infoLabels = common.enrich_infolabels(infoLabels, episode_expires) episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', HD, episode_type)) else: pass return episodes
def episodes(url = MOVIES): episodes = [] if '#' in url: url = url.split('#')[1] episode_data = connection.getURL(url) episode_list = simplejson.loads(episode_data) episode_menu = episode_list['tcm']['titles'] for episode_item in episode_menu: url = episode_item['vod']['contentId'] try: episode_duration = str(int(episode_item['runtimeMinutes'])*60) except: episode_duration = -1 episode_year = episode_item['releaseYear'] try: episode_plot = episode_item['description'] except: episode_plot = "" episode_name = episode_item['name'] try: episode_genre = episode_item['tvGenres'] except: episode_genre = '' try: episode_rating = 'Rated: %s' % episode_item['tvRating'] except: episode_rating = '' try: episode_director = episode_item['tvDirectors'] except: episode_director = '' season_number = -1 episode_number = -1 try: episode_thumb = episode_item['imageProfiles'][1]['url'] except: episode_thumb = None episode_expires = episode_item['vod']['expiryDate'] try: episode_actors = episode_item['tvParticipants'].split(',') except: episode_actors = [] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'year' : episode_year, 'genre' : episode_genre, 'mpaa' : episode_rating, 'director' : episode_director, 'cast' : episode_actors} infoLabels = common.enrich_infolabels(infoLabels, episode_expires, '%Y-%b-%d %I:%M %p') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, 'Movie')) return episodes
def episodes(episode_url=common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data.replace('}{', '},{'))['results'] for episode_item in episode_menu: episode_airdate = common.format_date(episode_item['airdate'], '%Y-%m-%d', '%d.%m.%Y') if (episode_item['authEndDate'] is None or time.time() >= long(episode_item['authEndDate']) / 1000 ) or (episode_item['fullepisode'] == 'false'): show_name = episode_item['series'].split('/')[-1] url = episode_item['videoURL'] episode_duration = int(episode_item['length']) episode_plot = episode_item['shortDescription'] episode_name = episode_item['name'] try: season_number = episode_item['season'] except: season_number = -1 try: episode_number = episode_item['episode'] except: episode_number = -1 try: episode_thumb = episode_item['videoStillURL'] except: episode_thumb = None try: episode_expires = int(episode_item['endDate']) / 1000 except: episode_expires = False episode_mpaa = episode_item['rating'] try: if episode_item['fullepisode'] == 'true': episode_type = 'Full Episode' else: episode_type = 'Clip' except: episode_type = 'Clip' u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'TVShowTitle': show_name, 'mpaa': episode_mpaa } infoLabels = common.enrich_infolabels(infoLabels, epoch=episode_expires) episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes
def episodes(episode_url=common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data.replace("}{", "},{"))["results"] for episode_item in episode_menu: episode_airdate = common.format_date(episode_item["airdate"], "%Y-%m-%d", "%d.%m.%Y") if (episode_item["authEndDate"] is None or time.time() >= long(episode_item["authEndDate"]) / 1000) or ( episode_item["fullepisode"] == "false" ): show_name = episode_item["series"].split("/")[-1] url = episode_item["videoURL"] episode_duration = int(episode_item["length"]) episode_plot = episode_item["shortDescription"] episode_name = episode_item["name"] try: season_number = episode_item["season"] except: season_number = -1 try: episode_number = episode_item["episode"] except: episode_number = -1 try: episode_thumb = episode_item["videoStillURL"] except: episode_thumb = None try: episode_expires = int(episode_item["endDate"]) / 1000 except: episode_expires = False episode_mpaa = episode_item["rating"] try: if episode_item["fullepisode"] == "true": episode_type = "Full Episode" else: episode_type = "Clip" except: episode_type = "Clip" u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { "title": episode_name, "durationinseconds": episode_duration, "season": season_number, "episode": episode_number, "plot": episode_plot, "premiered": episode_airdate, "TVShowTitle": show_name, "mpaa": episode_mpaa, } infoLabels = common.enrich_infolabels(infoLabels, epoch=episode_expires) episodes.append((u, episode_name, episode_thumb, infoLabels, "list_qualities", False, episode_type)) return episodes
def episodes(episode_url = common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data.replace('}{', '},{'))['results'] for episode_item in episode_menu: episode_airdate = common.format_date(episode_item['airdate'],'%Y-%m-%d', '%d.%m.%Y') if (episode_item['authEndDate'] is None or time.time() >= long(episode_item['authEndDate'])/1000) or (episode_item['fullepisode'] == 'false'): show_name = episode_item['series'].split('/')[-1] url = episode_item['videoURL'] episode_duration = int(episode_item['length']) episode_plot = episode_item['shortDescription'] episode_name = episode_item['name'] try: season_number = episode_item['season'] except: season_number = -1 try: episode_number = episode_item['episode'] except: episode_number = -1 try: episode_thumb = episode_item['videoStillURL'] except: episode_thumb = None try: episode_expires = int(episode_item['endDate']) / 1000 except: episode_expires = False episode_mpaa = episode_item['rating'] try: if episode_item['fullepisode'] == 'true': episode_type = 'Full Episode' else: episode_type = 'Clip' except: episode_type = 'Clip' u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'TVShowTitle' : show_name, 'mpaa' : episode_mpaa } infoLabels = common.enrich_infolabels(infoLabels, epoch = episode_expires) episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes
def episodes_movies(url=common.args.url): episodes = [] root_dict = {} root_url = url root_data = connection.getURL(root_url) root_menu = simplejson.loads(root_data)['Entries'] for root_item in root_menu: if not root_item.get('ClipsOnly', False): movie_name = root_item['Title'] movie_url = FULLEPISODES % root_item['ID'] movie_thumb = root_item['ChannelArtTileWide'] movie_plot = root_item['Description'] movie_year = root_item['ReleaseYear'] movie_rating = root_item['UserRating'] movie_duration = root_item['DurationInSeconds'] movie_expires = root_item['RightsExpirationDate'] movie_genre = root_item['Genre'] movie_mpaa = root_item['Rating'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(movie_url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': movie_name, 'rating': movie_rating, 'durationinseconds': movie_duration, 'genre': movie_genre, 'plot': movie_plot, 'year': movie_year, 'mpaa': movie_mpaa } infoLabels = common.enrich_infolabels(infoLabels, movie_expires, '%m/%d/%Y %I:%M:%S %p') if movie_duration: episodes.append((u, movie_name, movie_thumb, infoLabels, 'list_qualities', False, 'Movie')) return episodes
def episodes(episode_url=common.args.url): episodes = [] try: shutil.rmtree(os.path.join(ustvpaths.DATAPATH, 'thumbs')) except: pass episode_data = connection.getURL(VIDEOLIST % episode_url.split('#')[0]) episode_menu = simplejson.loads(episode_data)['videos'] try: os.mkdir(os.path.join(ustvpaths.DATAPATH, 'thumbs')) except: pass for episode_item in episode_menu: if int(episode_item['fullep']) == int(episode_url.split('#')[1]): show_name = episode_item['series_name'] url = episode_item['guid'] episode_duration = int(episode_item['duration_secs']) episode_plot = episode_item['description_long'] episode_name = episode_item['title'] season_number = int(episode_item['season']) episode_thumb = episode_item['large_thumbnail'] thumb_file = episode_thumb.split('/')[-1] thumb_path = os.path.join(ustvpaths.DATAPATH, 'thumbs', thumb_file) dbpath = xbmc.translatePath(ustvpaths.DBPATH) thumbcount = 0 for name in glob.glob(os.path.join(dbpath, 'textures[0-9]*.db')): thumbcount = thumbcount + database.execute_command( 'select count(1) from texture where url = ?', [ thumb_path, ], fetchone=True, dbfile=name)[0] if thumbcount == 0: thumb_data = connection.getURL(episode_thumb) file = open(thumb_path, 'wb') file.write(thumb_data) file.close() try: episode_number = int( episode_item['episode'][len(str(season_number)):]) except: episode_number = -1 try: episode_airdate = common.format_date(episode_item['airdate'], '%Y-%b-%d', '%d.%m.%Y') except: episode_airdate = -1 if episode_item['fullep'] == 1: episode_type = 'Full Episode' else: episode_type = 'Clip' episode_expires = episode_item['expire_time'] episode_mpaa = episode_item['rating'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'tvshowtitle': show_name, 'TVShowTitle': show_name, 'mpaa': episode_mpaa } infoLabels = common.enrich_infolabels( infoLabels, episode_expires.split('+')[0], '%Y-%m-%dT%H:%M:%S') episodes.append((u, episode_name, thumb_path, infoLabels, None, False, episode_type)) return episodes
def episodes(episode_url=common.args.url): episodes = [] try: shutil.rmtree(os.path.join(ustvpaths.DATAPATH, "thumbs")) except: pass episode_data = connection.getURL(VIDEOLIST % episode_url.split("#")[0]) episode_menu = simplejson.loads(episode_data)["videos"] try: os.mkdir(os.path.join(ustvpaths.DATAPATH, "thumbs")) except: pass for episode_item in episode_menu: if int(episode_item["fullep"]) == int(episode_url.split("#")[1]): show_name = episode_item["series_name"] url = episode_item["guid"] episode_duration = int(episode_item["duration_secs"]) episode_plot = episode_item["description_long"] episode_name = episode_item["title"] season_number = int(episode_item["season"]) episode_thumb = episode_item["large_thumbnail"] thumb_file = episode_thumb.split("/")[-1] thumb_path = os.path.join(ustvpaths.DATAPATH, "thumbs", thumb_file) dbpath = xbmc.translatePath(ustvpaths.DBPATH) thumbcount = 0 for name in glob.glob(os.path.join(dbpath, "textures[0-9]*.db")): thumbcount = ( thumbcount + database.execute_command( "select count(1) from texture where url = ?", [thumb_path], fetchone=True, dbfile=name )[0] ) if thumbcount == 0: thumb_data = connection.getURL(episode_thumb) file = open(thumb_path, "wb") file.write(thumb_data) file.close() try: episode_number = int(episode_item["episode"][len(str(season_number)) :]) except: episode_number = -1 try: episode_airdate = common.format_date(episode_item["airdate"], "%Y-%b-%d", "%d.%m.%Y") except: episode_airdate = -1 if episode_item["fullep"] == 1: episode_type = "Full Episode" else: episode_type = "Clip" episode_expires = episode_item["expire_time"] episode_mpaa = episode_item["rating"] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { "title": episode_name, "durationinseconds": episode_duration, "season": season_number, "episode": episode_number, "plot": episode_plot, "premiered": episode_airdate, "tvshowtitle": show_name, "TVShowTitle": show_name, "mpaa": episode_mpaa, } infoLabels = common.enrich_infolabels(infoLabels, episode_expires.split("+")[0], "%Y-%m-%dT%H:%M:%S") episodes.append((u, episode_name, thumb_path, infoLabels, None, False, episode_type)) return episodes
def add_video_from_manifestfile(manifest_feed): """ Add videos based on a manifest feed """ try: episodes = [] shows = [] items = manifest_feed['result'] if 'episodes' in items: items = items['episodes'] elif 'videos' in items: items = items['videos'] elif 'playlist' in items: items = items['playlist']['videos'] elif 'episodeVideos' in items: items = items['episodeVideos'] elif 'playlists' in items: t_items = [] k = 0 for i in items['playlists']: l = 0 for j in items['playlists'][k]['videos']: t_items.append(items['playlists'][k]['videos'][l]) l = l + 1 k = k + 1 items = t_items try: episode_type = manifest_feed['result']['promo'][ 'promoType'].replace('_', ' ').title() except: episode_type = 'Clip' for item in items: try: episode_name = item['title'] except: episode_name = item['shortTitle'] epoch = float(item['airDate']) epoch = common.convert_to_timezone(epoch, '', -5, epoch) episode_airdate = common.format_date(epoch, '', '%d.%m.%Y', epoch) episode_plot = item['shortDescription'] episode_thumb = item['images'][0]['url'] try: episode_duration = item['duration'] except: episode_duration = -1 url = item['url'] if not url: url = item['canonicalURL'] try: season_number = item['season']['seasonNumber'] episode_number = str( int( str(item['season']['episodeNumber']) [len(str(season_number)):])) except: season_number = -1 episode_number = -1 show_name = item['show']['title'] episode_expires = item['distPolicy']['endDate'] try: episode_mpaa = RATINGS[item['contentRating']] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'durationinseconds': episode_duration, 'TVShowTitle': show_name, 'mpaa': episode_mpaa } try: infoLabels = common.enrich_infolabels(infoLabels, epoch=episode_expires) except Exception as e: print "Can't enrich", e show = { 'u': u, 'episode_name': episode_name, 'episode_thumb': episode_thumb, 'infoLabels': infoLabels, 'epoch': epoch } shows.append(show) if len(shows): shows = sorted(shows, key=lambda show: show['epoch'], reverse=True) for show in shows: episodes.append((show['u'], show['episode_name'], show['episode_thumb'], show['infoLabels'], 'list_qualities', False, episode_type)) return episodes except: pass
def add_video_from_manifestfile(manifest_feed): """ Add videos based on a manifest feed """ try: episodes = [] shows = [] items = manifest_feed['result'] if 'episodes' in items: items = items['episodes'] elif 'videos' in items: items = items['videos'] elif 'playlist' in items: items = items['playlist']['videos'] elif 'episodeVideos' in items: items = items['episodeVideos'] elif 'playlists' in items: t_items = [] k = 0 for i in items['playlists']: l = 0 for j in items['playlists'][k]['videos']: t_items.append(items['playlists'][k]['videos'][l]) l = l + 1 k = k + 1 items = t_items try: episode_type = manifest_feed['result']['promo']['promoType'].replace('_', ' ').title() except: episode_type = 'Clip' for item in items: try: episode_name = item['title'] except: episode_name = item['shortTitle'] epoch = float(item['airDate']) epoch = common.convert_to_timezone(epoch, '', -5, epoch) episode_airdate = common.format_date(epoch , '', '%d.%m.%Y', epoch) episode_plot = item['shortDescription'] episode_thumb = item['images'][0]['url'] try: episode_duration = item['duration'] except: episode_duration = -1 url = item['url'] if not url: url = item['canonicalURL'] try: season_number = item['season']['seasonNumber'] episode_number = str(int(str(item['season']['episodeNumber'])[len(str(season_number)):])) except: season_number = -1 episode_number = -1 show_name = item['show']['title'] episode_expires = item['distPolicy']['endDate'] try: episode_mpaa = RATINGS[item['contentRating']] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'durationinseconds' : episode_duration, 'TVShowTitle' : show_name, 'mpaa' : episode_mpaa } try: infoLabels = common.enrich_infolabels(infoLabels, epoch = episode_expires) except Exception as e: print "Can't enrich", e show = {'u': u, 'episode_name': episode_name, 'episode_thumb': episode_thumb, 'infoLabels': infoLabels, 'epoch': epoch} shows.append(show) if len(shows): shows = sorted(shows, key=lambda show: show['epoch'], reverse=True) for show in shows: episodes.append((show['u'], show['episode_name'], show['episode_thumb'], show['infoLabels'], 'list_qualities', False, episode_type)) return episodes except: pass
def episodes(episode_url=common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_json = simplejson.loads(episode_data)["result"] episode_menu = episode_json["data"] title = episode_json["title"] valid_login = None for episode_item in episode_menu: url = BASE + episode_item["url"] if episode_item["status"] == "PREMIUM" and valid_login is None: valid_login = login(url) print "login", valid_login if episode_item["status"] == "AVAILABLE" or (valid_login and episode_item["status"] == "PREMIUM"): videourl = episode_item["streaming_url"] HD = False episode_duration = int(common.format_seconds(episode_item["duration"])) episode_airdate = common.format_date(episode_item["airdate"], "%m/%d/%y") if len(episode_item["label"]) < len(episode_item["title"]) and episode_item["label"]: episode_name = episode_item["label"] else: episode_name = episode_item["title"] try: season_number = int(episode_item["season_number"]) except: season_number = -1 try: episode_number = int(episode_item["episode_number"]) except: episode_number = -1 try: episode_thumb = episode_item["thumb"]["large"] except: episode_thumb = None episode_plot = episode_item["description"] try: episode_mpaa = re.compile("\((.*)\)$").findall(episode_plot)[0] except: episode_mpaa = None show_title = episode_item["series_title"] episode_expires = episode_item["expiry_date"] episode_type = episode_item["type"] if url is not None: u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { "title": episode_name, "durationinseconds": episode_duration, "season": season_number, "episode": episode_number, "plot": episode_plot, "premiered": episode_airdate, "mpaa": episode_mpaa, "TVShowTitle": show_title, } infoLabels = common.enrich_infolabels(infoLabels, episode_expires) episodes.append((u, episode_name, episode_thumb, infoLabels, "list_qualities", HD, episode_type)) else: pass return episodes
def episodes(url=MOVIES): episodes = [] if '#' in url: url = url.split('#')[1] episode_data = connection.getURL(url) episode_list = simplejson.loads(episode_data) episode_menu = episode_list['tcm']['titles'] for episode_item in episode_menu: url = episode_item['vod']['contentId'] try: episode_duration = str(int(episode_item['runtimeMinutes']) * 60) except: episode_duration = -1 episode_year = episode_item['releaseYear'] try: episode_plot = episode_item['description'] except: episode_plot = "" episode_name = episode_item['name'] try: episode_genre = episode_item['tvGenres'] except: episode_genre = '' try: episode_rating = 'Rated: %s' % episode_item['tvRating'] except: episode_rating = '' try: episode_director = episode_item['tvDirectors'] except: episode_director = '' season_number = -1 episode_number = -1 try: episode_thumb = episode_item['imageProfiles'][1]['url'] except: episode_thumb = None episode_expires = episode_item['vod']['expiryDate'] try: episode_actors = episode_item['tvParticipants'].split(',') except: episode_actors = [] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'year': episode_year, 'genre': episode_genre, 'mpaa': episode_rating, 'director': episode_director, 'cast': episode_actors } infoLabels = common.enrich_infolabels(infoLabels, episode_expires, '%Y-%b-%d %I:%M %p') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, 'Movie')) return episodes
def episodes(SITE, episode_url=common.args.url): episodes = [] episode_menu = [] episode_data = connection.getURL(episode_url) episode_data2 = simplejson.loads(episode_data)['videos'] episode_count = int(episode_data2['@count']) if episode_count > 1: episode_menu = episode_data2['video'] elif episode_count == 1: episode_menu.append(dict(episode_data2['video'])) for episode_item in episode_menu: if int(episode_item['@accesslevel']) == 0: highest_height = -1 episode_name = episode_item['title'] episode_duration = int(episode_item['duration']['$']) / 1000 episode_id = episode_item['@id'] episode_type = episode_item['@type'] try: episode_description = common.replace_signs( episode_item['longdescription']) except: try: episode_description = common.replace_signs( episode_item['description']) except: episode_description = None try: episode_expires = episode_item['availabilities']['free']['end'] except: episode_expires = None try: episode_genre = episode_item['show']['trackcode']['generic'][ 'cgenre'].title() except: episode_genre = None try: episode_airdate = episode_item['airdates']['airdate'].rsplit( ' ', 1)[0] episode_airdate = common.format_date(episode_airdate, '%a, %d %b %Y %H:%M:%S', '%d.%m.%Y') except: try: episode_airdate = episode_item['airdates']['airdate'][ 0].rsplit(' ', 1)[0] episode_airdate = common.format_date( episode_airdate, '%a, %d %b %Y %H:%M:%S', '%d.%m.%Y') except: episode_airdate = -1 if episode_genre != 'Movies': season_number = episode_item['season']['@id'] try: episode_number = episode_item['number'] except: episode_number = -1 try: episode_number = re.compile('Episode (\d+)').findall( episode_name)[0] except: pass else: episode_number = -1 season_number = -1 try: for episode_picture in episode_item['thumbnails']['thumbnail']: try: picture_height = int(episode_picture['@width']) except: if episode_picture['@type'] == 'source-16x9': picture_height = 720 else: picture_height = 0 if picture_height > highest_height: highest_height = picture_height episode_thumb = episode_picture['$'] except: episode_thumb = episode_item['thumbnails']['thumbnail']['$'] if episode_genre == 'Movies': type = 'Movie' elif episode_type == 'lf': type = 'Full Episode' else: type = 'Clip' show_name = episode_item['show']['title'] try: episode_mpaa = episode_item['tvrating'][ 'rating'] + ' ' + episode_item['tvrating']['descriptors'] except: try: episode_mpaa = episode_item['tvrating']['rating'] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus( episode_id) + '#' + urllib.quote_plus(episode_type) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'plot': episode_description, 'premiered': episode_airdate, 'durationinseconds': episode_duration, 'episode': episode_number, 'season': season_number, 'TVShowTitle': show_name, 'mpaa': episode_mpaa, 'genre': episode_genre } infoLabels = common.enrich_infolabels( infoLabels, episode_expires.rsplit(' ', 1)[0], '%a, %d %b %Y %H:%M:%S') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, type)) return episodes
def episodes(SITE, episode_url=common.args.url): episodes = [] try: season_number = int(episode_url.split('filterBySeasonNumber=')[1]) except: season_number = 0 episode_data = connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html.parser') episode_menu = episode_tree.find_all('episode') for episode_item in episode_menu: try: episode_season_number = int(episode_item['episeasonnumber']) except: episode_season_number = 0 try: type = episode_item['episodeType'] except: type = episode_item['episodetype'] if episode_season_number == season_number or 'filterBySeasonNumber' not in episode_url: segments = episode_item.find_all('segment') if len(segments) == 0: if type == 'EPI': continue else: url = episode_item['id'] else: url = '' for segment in segments: url = url + ',' + segment['id'] url = url[1:] try: episode_duration = episode_item['duration'] episode_duration = int(common.format_seconds(episode_duration)) except: episode_duration = 0 for segment_duration in segments: episode_duration += float(segment_duration['duration']) try: episode_airdate = common.format_date( episode_item['originalpremieredate'].split(' ')[0], '%m/%d/%Y') except: try: episode_airdate = common.format_date( episode_item['launchdate'].split(' ')[0], '%m/%d/%Y') except: episode_airdate = -1 episode_expires = episode_item['expirationdate'] episode_name = episode_item['title'] try: season_number = int(episode_item['episeasonnumber']) except: season_number = -1 try: episode_number = int(episode_item['episodenumber'][:2]) if episode_number == 0: try: episode_number = int( re.compile('Ep (\d)').findall(episode_name)[0]) except: episode_number = int(episode_item['subepisodenumber']) except: try: try: episode_number = int( re.compile('Ep (\d)').find_all(episode_name)) except: episode_number = int( episode_item['subepisodenumber']) - 1 except: episode_number = -1 try: episode_thumb = episode_item['thumbnailurl'] except: episode_thumb = None episode_plot = episode_item.description.text.strip() try: show_title = common.replace_signs( episode_item['collectiontitle']) except: show_title = None episode_rating = episode_item['ranking'] episode_mpaa = episode_item['rating'].upper() if type == 'EPI' or 'TVE': episode_type = 'Full Episode' else: episode_type = 'Clip' url = urllib.quote_plus(url) u = sys.argv[0] u += '?url="' + url + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'TVShowTitle': show_title, 'rating': episode_rating, 'mpaa': episode_mpaa } infoLabels = common.enrich_infolabels(infoLabels, episode_expires, '%m/%d/%Y %I:%M %p') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes
def episodes(SITE, episode_url = common.args.url): episodes = [] episode_menu = [] episode_data = connection.getURL(episode_url) episode_data2 = simplejson.loads(episode_data)['videos'] episode_count = int(episode_data2['@count']) if episode_count > 1: episode_menu = episode_data2['video'] elif episode_count == 1: episode_menu.append(dict(episode_data2['video'])) for episode_item in episode_menu: if int(episode_item['@accesslevel']) == 0: highest_height = -1 episode_name = episode_item['title'] episode_duration = int(episode_item['duration']['$']) / 1000 episode_id = episode_item['@id'] episode_type = episode_item['@type'] try: episode_description = common.replace_signs(episode_item['longdescription']) except: try: episode_description = common.replace_signs(episode_item['description']) except: episode_description = None try: episode_expires = episode_item['availabilities']['free']['end'] except: episode_expires = None try: episode_genre = episode_item['show']['trackcode']['generic']['cgenre'].title() except: episode_genre = None try: episode_airdate = episode_item['airdates']['airdate'].rsplit(' ',1)[0] episode_airdate = common.format_date(episode_airdate,'%a, %d %b %Y %H:%M:%S', '%d.%m.%Y') except: try: episode_airdate = episode_item['airdates']['airdate'][0].rsplit(' ',1)[0] episode_airdate = common.format_date(episode_airdate,'%a, %d %b %Y %H:%M:%S', '%d.%m.%Y') except: episode_airdate = -1 if episode_genre != 'Movies': season_number = episode_item['season']['@id'] try: episode_number = episode_item['number'] except: episode_number = -1 try: episode_number = re.compile('Episode (\d+)').findall(episode_name)[0] except: pass else: episode_number = -1 season_number = -1 try: for episode_picture in episode_item['thumbnails']['thumbnail']: try: picture_height = int(episode_picture['@width']) except: if episode_picture['@type'] == 'source-16x9': picture_height = 720 else: picture_height = 0 if picture_height > highest_height: highest_height = picture_height episode_thumb = episode_picture['$'] except: episode_thumb = episode_item['thumbnails']['thumbnail']['$'] if episode_genre == 'Movies': type = 'Movie' elif episode_type == 'lf': type = 'Full Episode' else: type = 'Clip' show_name = episode_item['show']['title'] try: episode_mpaa = episode_item['tvrating']['rating'] + ' ' + episode_item['tvrating']['descriptors'] except: try: episode_mpaa = episode_item['tvrating']['rating'] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(episode_id) + '#' + urllib.quote_plus(episode_type) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={'title' : episode_name, 'plot' : episode_description, 'premiered' : episode_airdate, 'durationinseconds' : episode_duration, 'episode' : episode_number, 'season' : season_number, 'TVShowTitle' : show_name, 'mpaa' : episode_mpaa, 'genre' : episode_genre} infoLabels = common.enrich_infolabels(infoLabels, episode_expires.rsplit(' ',1)[0], '%a, %d %b %Y %H:%M:%S') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities',False, type)) return episodes
def episodes(SITE, episode_url = common.args.url): episodes = [] try: season_number = int(episode_url.split('filterBySeasonNumber=')[1]) except: season_number = 0 episode_data = connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html.parser') episode_menu = episode_tree.find_all('episode') for episode_item in episode_menu: try: episode_season_number = int(episode_item['episeasonnumber']) except: episode_season_number = 0 try: type = episode_item['episodeType'] except: type = episode_item['episodetype'] if episode_season_number == season_number or 'filterBySeasonNumber' not in episode_url: segments = episode_item.find_all('segment') if len(segments) == 0: if type == 'EPI': continue else: url = episode_item['id'] else: url = '' for segment in segments: url = url + ',' + segment['id'] url = url[1:] try: episode_duration = episode_item['duration'] episode_duration = int(common.format_seconds(episode_duration)) except: episode_duration = 0 for segment_duration in segments: episode_duration += float(segment_duration['duration']) try: episode_airdate = common.format_date(episode_item['originalpremieredate'].split(' ')[0],'%m/%d/%Y') except: try: episode_airdate = common.format_date(episode_item['launchdate'].split(' ')[0],'%m/%d/%Y') except: episode_airdate = -1 episode_expires = episode_item['expirationdate'] episode_name = episode_item['title'] try: season_number = int(episode_item['episeasonnumber']) except: season_number = -1 try: episode_number = int(episode_item['episodenumber'][:2]) if episode_number == 0: try: episode_number = int(re.compile('Ep (\d)').findall(episode_name)[0]) except: episode_number = int(episode_item['subepisodenumber']) except: try: try: episode_number = int(re.compile('Ep (\d)').find_all(episode_name)) except: episode_number = int(episode_item['subepisodenumber']) - 1 except: episode_number = -1 try: episode_thumb = episode_item['thumbnailurl'] except: episode_thumb = None episode_plot = episode_item.description.text.strip() try: show_title = common.replace_signs(episode_item['collectiontitle']) except: show_title = None episode_rating = episode_item['ranking'] episode_mpaa = episode_item['rating'].upper() if type == 'EPI' or 'TVE': episode_type = 'Full Episode' else: episode_type = 'Clip' url = urllib.quote_plus(url) u = sys.argv[0] u += '?url="' + url + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'TVShowTitle' : show_title, 'rating' : episode_rating, 'mpaa' : episode_mpaa} infoLabels = common.enrich_infolabels(infoLabels, episode_expires, '%m/%d/%Y %I:%M %p') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes
def add_video_from_manifestfile(manifest_feed, full_episodes = False): """ Add videos based on a manifest feed """ try: episodes = [] shows = [] items = manifest_feed['result'] if 'videos' in items: items = items['videos'] elif 'playlist' in items: items = items['playlist']['videos'] elif 'episode' in items: items = [items['episode']] elif 'playlists' in items: t_items = [] k = 0 for i in items['playlists']: l = 0 for j in items['playlists'][k]['videos']: t_items.append(items['playlists'][k]['videos'][l]) l = l + 1 k = k + 1 items = t_items elif 'items' in items: items = items['items'] for item in items: try: episode_type = item['episodeType'] if episode_type == 'fullEpisode': episode_type = 'Full Episode' else: episode_type = 'Clip' except: episode_type = 'Clip' if item['distPolicy']['authTve'] == False: if (full_episodes == True and episode_type == 'Full Episode') or (full_episodes == False and episode_type != 'Full Episode'): try: episode_name = item['title'] except: episode_name = item['shortTitle'] try: epoch = float(item['airDate']) epoch = common.convert_to_timezone(epoch, '', -5, epoch) episode_airdate = common.format_date(epoch , '', '%d.%m.%Y', epoch) except: episode_airdate = -1 episode_plot = item['shortDescription'] episode_thumb = item['images'][0]['url'] try: episode_duration = item['duration'] except: episode_duration = -1 url = item['url'] if not url: url = item['canonicalURL'] try: season_number = item['season']['seasonNumber'] episode_number = str(int(str(item['season']['episodeNumber'])[len(str(season_number)):])) except: season_number = -1 episode_number = -1 try: show_name = item['show']['title'] except: show_name = '' episode_expires = item['distPolicy']['endDate'] try: episode_mpaa = RATINGS[item['contentRating']] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'durationinseconds' : episode_duration, 'TVShowTitle' : show_name, 'mpaa' : episode_mpaa } try: infoLabels = common.enrich_infolabels(infoLabels, epoch = episode_expires) except Exception as e: print "Can't enrich", e episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes except Exception,e: print "Exception: ", e
def add_video_from_manifestfile(manifest_feed, full_episodes=False): """ Add videos based on a manifest feed """ try: episodes = [] shows = [] items = manifest_feed['result'] if 'videos' in items: items = items['videos'] elif 'playlist' in items: items = items['playlist']['videos'] elif 'episode' in items: items = [items['episode']] elif 'playlists' in items: t_items = [] k = 0 for i in items['playlists']: l = 0 for j in items['playlists'][k]['videos']: t_items.append(items['playlists'][k]['videos'][l]) l = l + 1 k = k + 1 items = t_items elif 'items' in items: items = items['items'] for item in items: try: episode_type = item['episodeType'] if episode_type == 'fullEpisode': episode_type = 'Full Episode' else: episode_type = 'Clip' except: episode_type = 'Clip' if item['distPolicy']['authTve'] == False: if (full_episodes == True and episode_type == 'Full Episode') or (full_episodes == False and episode_type != 'Full Episode'): try: episode_name = item['title'] except: episode_name = item['shortTitle'] try: epoch = float(item['airDate']) epoch = common.convert_to_timezone( epoch, '', -5, epoch) episode_airdate = common.format_date( epoch, '', '%d.%m.%Y', epoch) except: episode_airdate = -1 episode_plot = item['shortDescription'] episode_thumb = item['images'][0]['url'] try: episode_duration = item['duration'] except: episode_duration = -1 url = item['url'] if not url: url = item['canonicalURL'] try: season_number = item['season']['seasonNumber'] episode_number = str( int( str(item['season']['episodeNumber']) [len(str(season_number)):])) except: season_number = -1 episode_number = -1 try: show_name = item['show']['title'] except: show_name = '' episode_expires = item['distPolicy']['endDate'] try: episode_mpaa = RATINGS[item['contentRating']] except: episode_mpaa = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'durationinseconds': episode_duration, 'TVShowTitle': show_name, 'mpaa': episode_mpaa } try: infoLabels = common.enrich_infolabels( infoLabels, epoch=episode_expires) except Exception as e: print "Can't enrich", e episodes.append( (u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, episode_type)) return episodes except Exception, e: print "Exception: ", e
def episodes(episode_url = common.args.url): episodes = [] episode_data = connection.getURL(episode_url) episode_json = simplejson.loads(episode_data) if 'entries' in episode_json: # will break lib ex episode_menu = episode_json['entries'] for i, episode_item in enumerate(episode_menu): default_mediacontent = None for mediacontent in episode_item['media$content']: if (mediacontent['plfile$isDefault'] == True) and (mediacontent['plfile$format'] == 'MPEG4'): default_mediacontent = mediacontent elif (mediacontent['plfile$format'] == 'MPEG4'): mpeg4_mediacontent = mediacontent if default_mediacontent is None: default_mediacontent=mpeg4_mediacontent url = default_mediacontent['plfile$url'] episode_duration = int(episode_item['media$content'][0]['plfile$duration']) episode_plot = episode_item['description'] episode_airdate = common.format_date(epoch = episode_item['pubDate']/1000) episode_name = episode_item['title'] try: season_number = int(episode_item['pl' + str(i + 1) + '$season'][0]) except: season_number = -1 try: episode_number = int(episode_item['pl' + str(i + 1) + '$episode'][0]) except: episode_number = -1 try: episode_thumb = episode_item['plmedia$defaultThumbnailUrl'] except: episode_thumb = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate } episodes.append((u, episode_name, episode_thumb, infoLabels, None, False, 'Clip')) else: episode_menu = episode_json['episodes'] for episode_item in episode_menu['episode']: url = str(episode_item['id']) episode_duration = common.format_seconds(episode_item['duration']) episode_plot = episode_item['description'] episode_airdate = common.format_date(episode_item['publishDate'].replace(' EDT', '').replace(' EST', ''), '%a %b %d %H:%M:%S %Y') episode_name = episode_item['title'] try: season_number = int(episode_item['seasonNumber']) except: season_number = -1 try: episode_number = int(str(episode_item['episodeNumber'])[1:]) except: episode_number = -1 try: episode_thumb = episode_item['Thumbs']['Thumb'][-1]['content'] except: episode_thumb = None episode_expires = episode_item['expirationDate'] show_title = episode_item['showTitle'] episode_mpaa = episode_item['tvRatingCode'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'TVShowTitle' : show_title, 'mpaa' : episode_mpaa} infoLabels = common.enrich_infolabels(infoLabels, episode_expires, '%m/%d/%Y') episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, 'Full Episode')) return episodes