예제 #1
0
파일: crackle.py 프로젝트: MarkTV/MarkTV
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
파일: tcm.py 프로젝트: MarkTV/MarkTV
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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
예제 #12
0
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
예제 #13
0
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
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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
예제 #17
0
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
예제 #18
0
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
예제 #19
0
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
예제 #20
0
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
예제 #21
0
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