def add_videos(episode_tree, SITE): episode_menu = episode_tree.find_all('div', class_='media-module') show_name = episode_tree.find('h1').text for episode_item in episode_menu: episode_name = episode_item.a['data-title'] episode_thumb = urllib.unquote_plus( episode_item.a.img['data-src'].split('url=')[1]) try: episode_duration = _common.format_seconds( episode_item.find('div', class_='timestamp').text.strip()) except: episode_duration = -1 url = episode_item.a['href'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'TVShowTitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities')
def episodes(): episode_values = { 'video_browser_action': 'filter', 'params[type]': 'all', 'params[filter]': _common.args.url, 'params[page]': '1', 'params[post_id]': '71306', 'module_id_base': 'rb-video-browser' } episode_data = _connection.getURL(VIDEOURL, episode_values) episode_tree = simplejson.loads(episode_data)['html']['date'] episode_menu = BeautifulSoup(episode_tree).find_all('li') for episode_item in episode_menu: episode_name = episode_item.a.img['title'] episode_plot = episode_item.a.img['alt'].replace('/n', ' ') episode_thumb = episode_item.a.img['src'] url = episode_item.a['href'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = {'title': episode_name, 'plot': episode_plot} _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def add_clips(episode_tree): try: episode_menu = episode_tree.find_all('div', class_ = 'block') for episode_item in episode_menu: episode_name = _common.replace_signs(episode_item.find('h3').a.text) episode_plot = _common.replace_signs(episode_item.find('p', class_ = False).text) episode_thumb = episode_item.find('img')['src'].split('?')[0] url = episode_item.find('div', class_ = 'thumb_area').a['href'] try: episode_airdate = episode_item.find('div', class_ = 'details').contents[0].split(' ', 1)[1].strip() episode_airdate = _common.format_date(episode_airdate, '%B %d, %Y', '%d.%m.%Y') except: episode_airdate = -1 try: episode_duration = _common.format_seconds(episode_item.find('h3').small.text.replace(')', '').replace('(', '')) except: episode_duration = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title' : episode_name, 'durationinseconds' : episode_duration, 'plot' : episode_plot, 'premiered' : episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data)['entries'] for i, episode_item in enumerate(episode_menu): url = episode_item['media$content'][0]['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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def add_videos(episode_tree, SITE): episode_menu = episode_tree.find_all('div', class_='vidthumb') show_name = episode_tree.find('h3', id='natgeov-section-title').text show_name = show_name.split('(')[0].strip() for episode_item in episode_menu: if episode_item.find(class_='video-locked') is None: episode_name = episode_item.a['title'] episode_thumb = episode_item.img['src'].split('url=')[1] try: episode_duration = _common.format_seconds( episode_item.span.text.strip()) except: episode_duration = -1 url = BASE + episode_item.a['href'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'TVShowTitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities')
def episodes(episode_url = _common.args.url): episode_id, type = episode_url.split('#') episode_start = 0 episode_count = 200 while episode_start < episode_count: episode_data = cove.videos.filter(fields = 'associated_images,mediafiles', filter_program = episode_id, order_by = '-airdate', filter_availability_status = 'Available', limit_start = episode_start, filter_type = type) episode_menu = episode_data['results'] episode_count = episode_data['count'] episode_stop = episode_data['stop'] del episode_data for episode_item in episode_menu: infoLabels={} if episode_item['mediafiles']: url = str(episode_item['tp_media_object_id']) episode_name = episode_item['title'] episode_plot = episode_item['long_description'] episode_airdate = _common.format_date(episode_item['airdate'], '%Y-%m-%d %H:%M:%S', '%d.%m.%Y') episode_duration = int(episode_item['mediafiles'][0]['length_mseconds'] / 1000) episode_thumb = episode_item['associated_images'][0]['url'] for episode_thumbs in episode_item['associated_images']: if episode_thumbs['type']['eeid'] == 'iPad-Large': episode_thumb = episode_thumbs['url'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'plot' : episode_plot, 'premiered' : episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) episode_start = episode_stop _common.set_view('episodes')
def add_clips_southpark(episode_tree): try: episode_menu = episode_tree.find_all('li', class_ = 'clips_thumb') clip_titles = [] for episode_item in episode_menu: episode_name = episode_item.find('a', class_ = 'clips_thumb_link', text = True).string if episode_name not in clip_titles: clip_titles.append(episode_name) episode_plot = episode_item.find('h6').string.replace('"', '') url = episode_item.find('a')['href'] episode_thumb = episode_item.find('img')['src'].split('?')[0] try: episode_duration_seconds = _common.format_seconds(episode_item.find('span', class_ = 'clips_duration').string) except: episode_duration_seconds = -1 try: episode_season = int(episode_item.find('h5', class_ = 'clips_thumb_season').string.replace('Season ', '')) except: episode_season = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'duration' : episode_duration_seconds, 'season' : episode_season, 'plot' : episode_plot, 'tvshowtitle' : 'South Park'} _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def add_video(episode_tree, episode = False): try: episode_menu = episode_tree.find_all(itemtype = 'http://schema.org/TVEpisode') if not episode_menu: episode_menu = episode_tree.find_all(itemtype = 'http://schema.org/VideoObject') for episode_item in episode_menu: if episode == False or episode_item.find(class_ = 'episode'): episode_name = episode_item.find('meta', itemprop = 'name')['content'] episode_plot = episode_item.find('meta', itemprop = 'description')['content'] url = episode_item.find('meta', itemprop = 'url')['content'] try: episode_thumb = episode_item.find('meta', itemprop = 'image')['content'].split('?')[0] print episode_thumb except: try: episode_thumb = episode_item.find('meta', itemprop = 'thumbnailUrl')['content'].split('?')[0] except: episode_thumb = episode_item.find('img')['src'].split('?')[0] try: episode_airdate = episode_item.find('meta', itemprop = 'uploadDate')['content'] except: try: episode_airdate = episode_item.find('meta', itemprop = 'datePublished')['content'] print episode_airdate try: episode_airdate = _common.format_date(episode_airdate, '%B %d, %Y') except: episode_airdate = _common.format_date(episode_airdate, '%b %d, %Y') print episode_airdate except: episode_airdate = -1 try: episode_duration = episode_item.find('meta', itemprop = 'duration')['content'] try: duration_mins, duration_seconds = re.compile('([0-9]*)M([0-9]*)S').findall(episode_duration)[0] episode_duration_seconds = int(duration_mins) * 60 + int(duration_seconds) except: episode_duration_seconds = int(episode_duration.replace('S', '').replace('T','')) except: episode_duration_seconds = -1 try: episode_meta = episode_item.find('div', class_ = 'video_meta').text.split('|')[0] season_number = int(episode_meta.split('-')[0].replace('Season', '').strip()) episode_number = int(episode_meta.split('-')[1].replace('Episode', '').strip()[1:]) except: season_number = -1 episode_number = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration_seconds, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def add_videos(url=_common.args.url): episode_data = _connection.getURL(url) episode_tree = BeautifulSoup(episode_data) episode_subs = episode_tree.find(class_='group-b') try: try: finalsubs = episode_subs.find(class_='video-list').find_all( 'tr', class_=True) except: try: finalsubs = episode_subs.find(id='vid_mod_1').find_all( itemscope=True) except: finalsubs = tree.find(id='vid_mod_1').find_all(itemscope=True) for sub in finalsubs: sub = sub.find('a') name = sub.text url = sub['href'] if BASE not in url: url = BASE + url u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_url"' _common.add_video(u, name, '', infoLabels={'title': name}) _common.set_view('episodes') except: pass
def add_videos(url=_common.args.url): episode_data = _connection.getURL(url) episode_tree = BeautifulSoup(episode_data) episode_subs = episode_tree.find(class_ = 'group-b') try: try: finalsubs = episode_subs.find(class_ = 'video-list').find_all('tr', class_ = True) except: try: finalsubs = episode_subs.find(id = 'vid_mod_1').find_all(itemscope = True) except: finalsubs = tree.find(id = 'vid_mod_1').find_all(itemscope = True) for sub in finalsubs: sub = sub.find('a') name = sub.text url = sub['href'] if BASE not in url: url = BASE + url u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_url"' _common.add_video(u, name, '', infoLabels = {'title' : name}, quality_mode = 'list_qualities') _common.set_view('episodes') except: pass
def add_fullepisodes_southpark(episode_tree): try: episode_menu = episode_tree.find('div', class_ = 'content_carouselwrap').ol.find_all('li', recursive = False) for episode_item in episode_menu: if not episode_item.find('a',class_ = 'unavailable'): episode_name = episode_item.h5.string episode_airdate = episode_item.h6.string.replace('Original Air Date: ', '') episode_airdate = _common.format_date(episode_airdate , '%m.%d.%Y', '%d.%m.%Y') episode_plot = episode_item.p.string episode_thumb = episode_item.img['src'].split('?')[0] url = episode_item.a['href'] try: season_number, episode_number = re.compile('s([0-9]{2})e([0-9]{2})').findall(url)[0] except: episode_number = -1 season_number = -1 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html5lib') episode_menu = episode_tree.find_all('div', id = re.compile('video_*')) for episode_item in episode_menu: show_name = episode_item.strong.string episode_name = _common.replace_signs(episode_item.a.img['title'].replace(show_name,'')) episode_thumb = episode_item.a.img['src'].rsplit('_',1)[0] + '_640x360.jpg' episode_plot = _common.replace_signs(episode_item.find_all('p')[1].text) url = BASE + episode_item.a['href'] try: seasonEpisode = episode_item.find('span', class_ = 'type').string seasonSplit = seasonEpisode.split(': Ep. ') season_number = int(seasonSplit[0].replace('Season', '').strip()) episodeSplit = seasonSplit[1].split(' ') episode_number = int(episodeSplit[0]) episode_duration = episodeSplit[1].replace('(', '').replace(')', '').strip() except: season_number = None episode_number = None episode_duration = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'duration' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'tvshowtitle' : show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def add_fullepisodes_colbertnation(episode_tree): try: episode_menu = episode_tree.find('div', class_ = 'more_episode_listening').find_all('div', class_ = 'full_episode') tooltip_menu = episode_tree.find_all('div', class_ = 'carousel_view_tooltip') for episode_item, tooltip_item in izip(episode_menu, tooltip_menu): try: episode_name = episode_item.find('span', class_ = 'air_date').text + ' - ' + episode_item.find('span', class_ = 'guest').text except: episode_name = episode_item.find('span', class_ = 'title').text meta = tooltip_item.find('p', class_ = 'meta').string episode_airdate = re.compile('([0-9]+/[0-9]+/[0-9]+)').findall(meta)[0] episode_airdate = _common.format_date(episode_airdate , '%m/%d/%Y', '%d.%m.%Y') episode_plot = tooltip_item.find('p', class_ = 'description').string episode_thumb = episode_item.img['src'].split('?')[0] url = episode_item.a['href'] try: season_number, episode_number = re.compile('([0-9]{2})([0-9]{3})').findall(meta)[0] except: episode_number = -1 season_number = -1 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data.replace('}{', '},{'))['results'] for episode_item in episode_menu: show_name = _common.args.name url = episode_item['videoURL'] episode_duration = int(episode_item['length']/60) episode_plot = episode_item['shortDescription'] episode_airdate = _common.format_date(episode_item['airdate'],'%Y-%m-%d', '%d.%m.%Y') episode_name = episode_item['name'] try: season_number = episode_item['season'] except: season_number = None try: episode_number = episode_item['episode'] except: episode_number = None try: episode_thumb = episode_item['videoStillURL'] 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, 'duration' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html5lib') episode_menu = episode_tree.find('ul', id = 'browse_results').find_all('li', recursive = False) for episode_item in episode_menu: episode_name = episode_item.a['title'] episode_thumb = episode_item.img['src'] episode_plot = episode_item.find('div', class_ = 'browse_result_description').string.strip() show_name = _common.args.name url = BASE + episode_item.a['href'] try: episode_duration = episode_item.find('span', class_ = 'duration').string.strip('()') except: episode_duration = 0 try: episode_airdate = episode_item.find('p', class_ = 'browse_result_sale grid-visible').string.replace('Available: ','') episode_airdate = _common.format_date(episode_airdate, inputFormat = '%b %d, %Y') except: episode_airdate = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'duration' : episode_duration, 'plot' : episode_plot, 'premiered' : episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data) episode_carousel = episode_tree.find_all('div', class_='tab-wrap') for episode in episode_carousel: if _common.args.name == episode.h2.text: episode_menu = episode.find_all('li', class_='result-item') for episode_item in episode_menu: episode_name = episode_item.img['title'] episode_thumb = episode_item.img['src'] episode_exp_id = episode_item.a['data-video'] episode_plot = episode_item.find( 'p', class_='description').text.strip() url = episode_url u = sys.argv[0] u += '?url="' + urllib.quote_plus( url) + '#' + urllib.quote_plus(episode_exp_id) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = {'title': episode_name, 'plot': episode_plot} _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def add_fullepisodes(episode_tree, season_number = -1): try: episode_menu = episode_tree.find_all('div', class_ = 'episodeContainer') for episode_item in episode_menu: episode_name = episode_item.find('div', class_ = 'episodeTitle').a.text episode_airdate = _common.format_date(episode_item.find('div', class_ = 'episodeAirDate').contents[1].strip(), '%b %d, %Y', '%d.%m.%Y') episode_plot = episode_item.find('div', class_ = 'episodeDescription').contents[0].strip() episode_thumb = episode_item.find('div', class_ = 'episodeImage').img['src'].split('?')[0] url = episode_item.find('div', class_ = 'episodeTitle').a['href'] try: episode_duration = _common.format_seconds(episode_item.find('span', class_ = 'episodeDuration').text.replace(')', '').replace('(', '')) except: episode_duration = -1 try: episode_number = int(episode_item.find('div', class_ = 'episodeIdentifier').text.split('#' + season_number)[1]) except: episode_number = -1 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def add_fullepisodes(episode_tree, season_number = -1): try: episode_menu = episode_tree.find_all('div', class_ = 'episode_guide') for episode_item in episode_menu: episode_name = _common.replace_signs(episode_item.find('img')['title']) episode_airdate = _common.format_date(episode_item.find('p', class_ = 'aired_available').contents[1].strip(), '%m/%d/%Y', '%d.%m.%Y') episode_plot = _common.replace_signs(episode_item.find('p', class_ = False).text) episode_thumb = episode_item.find('img')['src'].split('?')[0] url = episode_item.find('div', class_ = 'thumb_image').a['href'] try: episode_number = int(episode_item.find('a', class_ = 'title').contents[1].split('Episode ' + season_number)[1]) except: try: episode_number = int(url.split('-0')[1]) except: episode_number = -1 if season_number == -1: season_number = int(url.split('-')[-3]) 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(VIDEOLIST % episode_url.split('#')[0]) episode_menu = simplejson.loads(episode_data)['videos'] 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'])/60 episode_plot = episode_item['description_long'] episode_name = episode_item['title'] season_number = int(episode_item['season']) episode_thumb = episode_item['large_thumbnail'].replace('media.cwtv.com', 'pdl.warnerbros.com') try: episode_number = int(episode_item['episode'][len(str(season_number)):]) except: episode_number = None try: episode_airdate = _common.format_date(episode_item['airdate'],'%Y-%b-%d', '%d.%m.%Y') except: episode_airdate = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'duration' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def add_fullepisodes_southpark(episode_tree): try: season = urllib.unquote(sys.argv[2].split('&')[2].split('=')[1].replace('%22','')).split(' ')[1] episode_menu = episode_tree.find_all('article', class_ = 'thumb') for episode_item in episode_menu: episode_name = episode_item.find(class_ = 'title') if episode_name is None: continue url = episode_item.a['href'] try: season_number, episode_number = re.compile('s([0-9]{2})e([0-9]{2})').findall(url)[0] except: episode_number = -1 season_number = -1 if int(season) != int(season_number): continue episode_name = episode_name.string.strip() episode_plot = episode_item.find('p', class_ = 'episode').string.strip() episode_airdate = episode_item.find(class_ = 'air-date').string.strip() episode_airdate = _common.format_date(episode_airdate , '%m.%d.%Y', '%d.%m.%Y') episode_thumb = re.match('(.*?)url\(\'(.*?)\'\)', episode_item.find('a', class_ = 'fill')['style']).group(2) 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url, header = {'X-Forwarded-For' : '12.13.14.15'}) episode_tree = BeautifulSoup(episode_data) episode_menu = episode_tree.find_all('article') for episode_item in episode_menu: try: show_name = episode_item.find('p', class_ = 'show-name').text except: show_name = '' episode_name = episode_item.find('p', class_ = 'short-title').text url = BASE + episode_item.find('a')['href'] episode_plot = _common.replace_signs(episode_item.find('p', class_ = 'description').text) try: episode_thumb = episode_item.find('img', class_ = 'thumbnail')['src'] except: episode_thumb = None try: episode_duration = _common.format_seconds(episode_item.find('span', class_ = 'duration').text.replace('Duration:', '')) except: episode_duration = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title' : episode_name, 'plot' : episode_plot, 'durationinseconds' : episode_duration, 'tvshowtitle' : show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(EPISODES + episode_url) episode_data2 = simplejson.loads(episode_data)['list_html'] episode_tree = BeautifulSoup(episode_data2, 'html.parser').find('ul', id='videoList_ul') if episode_tree: episode_menu = episode_tree.find_all('li', recursive=False) for episode_item in episode_menu: infoLabels = {} url = episode_item['id'][6:] episode_thumb = episode_item.img['src'] episode_name = episode_item.span.string episode_plot = episode_item.find(id='viddesc_' + url).string show_name = episode_item.find(id='vidtitle_' + url).string u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'plot': episode_plot, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url, forwardheader='12.13.14.15') episode_tree = BeautifulSoup(episode_data) episode_menu = episode_tree.find_all('article') for episode_item in episode_menu: show_name = episode_item.find('p', class_='show-name').text episode_name = episode_item.find('p', class_='short-title').text url = BASE + episode_item.find('a')['href'] episode_plot = _common.replace_signs( episode_item.find('p', class_='description').text) try: episode_thumb = episode_item.find('img', class_='thumbnail')['src'] except: episode_thumb = None try: duration = episode_item.find('span', class_='duration').text.replace( 'Duration:', '') except: duration = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'plot': episode_plot, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data) for episode_item in episode_menu['items']: if episode_item['videos']: url = episode_item['guid'] episode_name = episode_item['title'] episode_plot = episode_item['description'] episode_airdate = _common.format_date(episode_item['airdate'], '%Y-%m-%d %H:%M:%S', '%d.%m.%Y') episode_duration = int(episode_item['videos'].itervalues().next()['length']) / 1000 try: episode_thumb = episode_item['images']['kids-mezzannine-16x9']['url'] except: try: episode_thumb = episode_item['images']['kids-mezzannine-4x3']['url'] except: episode_thumb = episode_item['images']['mezzanine']['url'] u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'plot' : episode_plot, 'premiered' : episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(SITE): episode_menu = [] episode_data = _connection.getURL(_common.args.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 season_number = episode_item['season']['@id'] episode_id = episode_item['@id'] episode_type = episode_item['@type'] try: episode_description = _common.replace_signs(episode_item['longdescription']) except: episode_description = _common.replace_signs(episode_item['description']) 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 try: episode_number = episode_item['number'] except: episode_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']['$'] 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): 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']['$'])/60000 season_number = episode_item['season']['@id'] episode_id = episode_item['@id'] episode_type = episode_item['@type'] try: episode_description = _common.replace_signs(episode_item['longdescription']) except: episode_description = _common.replace_signs(episode_item['description']) 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 = None try: episode_number = episode_item['number'] except: episode_number = None 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']['$'] 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, 'duration' : episode_duration, 'episode' : episode_number, 'season' : season_number } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url, header = {'X-Forwarded-For' : '12.13.14.15'}) episode_menu = simplejson.loads(episode_data)['results'] for episode_item in episode_menu: try: show_name = episode_item['seriesTitle'] except: show_name = '' episode_name = episode_item['title'] url = 'http://legacy.nick.com/videos/clip/%s.html' url = url % episode_item['urlKey'] episode_plot = episode_item['description'] image = episode_item['images'][0]['assets'][0]['path'] episode_thumb = 'http://nick.com'+image try: episode_duration = _common.format_seconds(episode_item['duration']) except: episode_duration = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title' : episode_name, 'plot' : episode_plot, 'durationinseconds' : episode_duration, 'tvshowtitle' : show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_json = simplejson.loads(episode_data)['result'] episode_menu = episode_json['data'] title = episode_json['title'] for episode_item in episode_menu: url_att = episode_item['url_att'] type = episode_item['type'] if (episode_item['url_in_window'] ) or url_att or title != 'Full Episodes' or not episode_item[ 'url_amazon']: videourl = episode_item['streaming_url'] url = BASE + episode_item['url'] episode_duration = int( _common.format_seconds(episode_item['duration'])) episode_airdate = _common.format_date(episode_item['airdate'], '%m/%d/%y') episode_name = episode_item['label'] if episode_name == '': 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 if url_att: episode_pid = url_att.split('c___')[1] episode_plot = '' else: episode_plot, episode_pid = lookup_meta(url) if episode_pid is not None: u = sys.argv[0] u += '?url="' + urllib.quote_plus(episode_pid) + '"' 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') else: pass _common.set_view('episodes')
def add_video_from_manifestfile(manifest_feed): """ Add videos based on a manifest feed """ try: 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 '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 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'] 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 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 } 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: _common.add_video(show['u'], show['episode_name'], show['episode_thumb'], infoLabels = show['infoLabels'], quality_mode = 'list_qualities') except: pass
def episodes(episode_url = _common.args.url): try: season_number = episode_url.split('#')[1] except: season_number = -1 episode_url = episode_url.split('#')[0] episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data)['FolderList'][0]['PlaylistList'][0] for episode_item in episode_menu['MediaList']: if episode_item['Season'] == season_number or season_number == -1: ''' THX to foreverguest ''' path_pattern = re.compile('http:\\/\\/.+?\/(.+?)_[a-zA-Z0-9]+') pattern_url = episode_item['Thumbnail_Wide'] path = path_pattern.findall(pattern_url) if not path and episode_item['ClosedCaptionFiles']: path = path_pattern.findall(episode_item['ClosedCaptionFiles'][0]['Path']) if not path: continue video_url = BASE + path[0] + '_' episode_duration = int(episode_item['DurationInSeconds']) episode_name = episode_item['Title'] episode_plot = episode_item['Description'] try: episode_airdate = _common.format_date(episode_item['ReleaseDate'], '%m/%d/%Y') except: episode_airdate = None try: episode_number = int(episode_item['Episode']) except: episode_number = -1 try: episode_thumb = episode_item['Thumbnail_854x480'] except: episode_thumb = None try: episode_caption = episode_item['ClosedCaptionFiles'][0]['Path'] except: episode_caption = '' episode_MPAA = episode_item['Rating'] episode_genre = episode_item['Genre'] episode_showtitle = episode_item['ParentChannelName'] video_url = video_url + '#' + episode_caption u = sys.argv[0] u += '?url="' + urllib.quote_plus(video_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, 'Genre' : episode_genre, 'TVShowTitle' : episode_showtitle} _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') _common.set_view('episodes')
def episodes(episode_url=_common.args.url): if 'the-tonight-show' in episode_url: if 'Clips' in _common.args.name: add_videos_thetonightshow(episode_url, 'segment') else: add_videos_thetonightshow(episode_url, 'episode') return episode_data = _connection.getURL(episode_url) episode_json = simplejson.loads(episode_data) episode_menu = episode_json['entries'] for episode_item in episode_menu: pid = episode_item['media$content'][0]['plfile$releases'][0][ 'plrelease$pid'] url = SMIL % pid try: episode_duration = int(episode_item['plfile$duration'].replace( ' min', '')) * 60 except: episode_duration = -1 episode_plot = HTMLParser.HTMLParser().unescape( episode_item['description']) epoch = int(episode_item['pubDate']) / 1000 episode_airdate = _common.format_date(epoch=epoch) episode_name = HTMLParser.HTMLParser().unescape(episode_item['title']) show_title = episode_item['showShortName'] try: season_number = int(episode_item['pl1$seasonNumber']) except: season_number = -1 try: episode_number = int(episode_item['pl1$episodeNumber']) except: episode_number = -1 try: episode_thumb = episode_item['plmedia$defaultThumbnailUrl']['big'] 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, 'TVShowTitle': show_title } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') _common.set_view('episodes')
def add_videos_thetonightshow(url, type_, page=1, added_episodes=[]): this_url = (TONIGHT_SHOW_FEED % url) + '&offset=' + str((page - 1) * 10) root_data = _connection.getURL(this_url) data = simplejson.loads(root_data) for video in data['content']: if video['type'] == type_: if type_ == 'episode': episode_name = video['name'] episode_id = video['episodeNumber'] else: episode_name = video['title'] episode_id = video['id'] if episode_id in added_episodes: continue added_episodes.append(episode_id) pid = video['videos'][0]['mpxPublicId'] episode_url = SMIL % pid episode_plot = BeautifulSoup( video['description']['value']).p.string try: episode_airdate = _common.format_date(video['airDate'][:-6], '%Y-%m-%dT%H:%M:%S', '%d.%m.%Y') except: episode_airdate = -1 try: season_number = int(video['season']) except: season_number = -1 try: episode_number = int(video['episodeNumber']) except: episode_number = -1 try: episode_thumb = video['images'][0]['bitImageSmall'] except: episode_thumb = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(episode_url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') if page < int(_addoncompat.get_setting('maxpages')): add_videos_thetonightshow(url, type_, page + 1, added_episodes) _common.set_view('episodes')
def episodesClassic(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_html = simplejson.loads(episode_data)['html'] tree = BeautifulSoup(episode_html, 'html5lib') episode_menu = tree.find_all('div', class_='video-content-wrapper') for episode_item in episode_menu: url = episode_item.find('a')['href'] episode_duration = episode_item.find( 'div', class_='video-content-duration').contents[1].replace( '(', '').replace(')', '').strip() episode_duration = int(_common.format_seconds(episode_duration)) episode_airdate = episode_item.find( 'div', class_='video-content-air-date').contents[0].split(':')[1].strip() episode_airdate = _common.format_date(episode_airdate, '%m.%d.%Y') show_name = url.split('/')[2] episode_name = url.split('/')[-1].replace(show_name.replace( '_', '-'), '').replace('-', ' ').title().replace(' T ', '\'t ') url = BASE + url episode_info = episode_item.find( 'div', class_='video-content-season-info').text try: season_number = int( episode_info.split(',')[0].split(' ')[1].strip()) except: season_number = -1 try: episode_number = int( episode_info.split(',')[1].strip().split(' ')[1]) except: episode_number = -1 try: episode_thumb = episode_item.find('img')['src'] except: episode_thumb = None episode_plot = episode_item.find( 'div', class_='video-content-description').string 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') _common.set_view('episodes')
def episodes_json(SITE): episode_url = _common.args.url master_name = episode_url.split('#')[0] episode_url = episode_url.split('#')[1] episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data) for episode_item in episode_menu: url = episode_item['episodeID'] try: episode_duration = episode_item['length'] except: episode_duration = -1 try: episode_airdate = _common.format_date(episode_item['airDate'].split('on ')[1],'%B %d, %Y') except: episode_airdate = -1 try: episode_plot = episode_item['summary'] except: episode_plot = episode_item['shortdescription'] episode_name = episode_item['title'] if episode_name == master_name: video_url = EPISODE % url video_data = _connection.getURL(video_url) video_tree = BeautifulSoup(video_data, 'html.parser') episode_name = video_tree.headline.string elif episode_name == "": episode_name = episode_plot try: season_number = int(episode_item['identifier'].split(',')[0].split(' ')[1]) except: season_number = -1 try: episode_number = int(episode_item['identifier'].split(', ')[1].split(' ')[1].replace(' Episode ', '')) except: try: episode_number = int(episode_item['identifier'].split(', ')[1].split(' ')[1]) except: episode_number = -1 try: episode_thumb = episode_item['640x360_jpg'] 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') _common.set_view('episodes')
def add_clips(episode_tree, season_number=None): try: episode_menu = episode_tree.find_all('div', class_='search_pad') for episode_item in episode_menu: show_name = episode_item.find('div', class_='search_show').text episode_name = episode_item.find( 'div', class_='search_text').a.text.strip() episode_plot = episode_item.find( 'div', class_='search_text').contents[4].strip() url = episode_item.find('div', class_='search_text').a['href'] episode_thumb = episode_item.find( 'div', class_='search_image').img['src'].split('?')[0] try: episode_airdate = episode_item.find( 'div', class_='episode_meta').contents[5].text.replace( 'Aired: ', '').strip() episode_airdate = _common.format_date(episode_airdate, '%B %d, %Y', '%d.%m.%Y') except: episode_airdate = None try: episode_duration = episode_item.find( 'span', class_='search_duration').text.replace(')', '').replace( '(', '') except: episode_duration = None try: episode_number = int( episode_item.find( 'div', class_='episode_meta').contents[1].text.split('#')[1]) except: episode_number = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) except: pass
def episodes(episode_url = _common.args.url): episode_data = _connection.getURL(episode_url) episode_json = simplejson.loads(episode_data)['result'] episode_menu = episode_json['data'] title = episode_json['title'] for episode_item in episode_menu: url_att = episode_item['url_att'] type = episode_item['type'] if (episode_item['url_in_window']) or url_att or title != 'Full Episodes' or not episode_item['url_amazon']: videourl = episode_item['streaming_url'] url = BASE + episode_item['url'] 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']): 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 if url_att: episode_pid = url_att.split('c___')[1] episode_plot = '' elif episode_item['description']: episode_plot = episode_item['description'] episode_pid = url else: episode_plot, episode_pid = lookup_meta(url) if episode_pid is not None: u = sys.argv[0] u += '?url="' + urllib.quote_plus(episode_pid) + '"' 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') else: pass _common.set_view('episodes')
def videos(SITE): episode_url = _common.args.url episode_data = _connection.getURL(episode_url) episode_tree = simplejson.loads(episode_data) for episode_item in episode_tree['series']['playlists']: show_name = episode_tree['series']['title'] episode_item = episode_item['playlist'] if '|' in episode_item['headline']: episode_name = episode_item['headline'].split('|')[-1].strip() elif '- ' in episode_item['headline']: episode_name = episode_item['headline'].split('- ')[-1].strip() else: episode_name = episode_item['headline'] try: episode_info = re.compile('[s|S]([0-9]).[e|E]?([0-9]{0,2}).*').findall(episode_item['title']) try: episode_season, episode_number = episode_info[0] except: episode_season = episode_info episode_number = -1 except: episode_season = -1 episode_number = -1 url = episode_item['id'] try: episode_plot = episode_item['subhead'] except: episode_plot = '' episode_thumb = episode_item['image'] try: episode_duration = _common.format_seconds(episode_item['duration']['timecode']) except: continue u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play"' infoLabels = { 'title' : episode_name, 'plot' : episode_plot, 'durationinseconds' : episode_duration, 'tvshowtitle' : show_name, 'season' : episode_season, 'episode' : episode_number } try: if (episode_item['distributionPolicies'][0]['distributionPolicy']['policyType'] == 'playable'): _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') except: if (episode_item['distributionPolicies'][0]['policyType'] == 'playable'): _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') else: pass _common.set_view('episodes')
def episodes(SITE, quality = True): episode_url = _common.args.url episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data)['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: try: season_number = int(episode_item['nbcu$seasonNumber']) except: season_number = -1 try: episode_number = int(episode_item['pl' + str(i + 1) + '$episode'][0]) except: try: episode_number = int(episode_item['nbcu$episodeNumber']) 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 } if quality: _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') else: _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def add_fullepisodes_southpark(episode_tree): try: season = urllib.unquote( sys.argv[2].split('&')[2].split('=')[1].replace('%22', '')).split(' ')[1] episode_menu = episode_tree.find_all('article', class_='thumb') for episode_item in episode_menu: episode_name = episode_item.find(class_='title') if episode_name is None: continue url = episode_item.a['href'] try: season_number, episode_number = re.compile( 's([0-9]{2})e([0-9]{2})').findall(url)[0] except: episode_number = -1 season_number = -1 if int(season) != int(season_number): continue episode_name = episode_name.string.strip() episode_plot = episode_item.find('p', class_='episode').string.strip() episode_airdate = episode_item.find( class_='air-date').string.strip() episode_airdate = _common.format_date(episode_airdate, '%m.%d.%Y', '%d.%m.%Y') episode_thumb = re.match( '(.*?)url\(\'(.*?)\'\)', episode_item.find('a', class_='fill')['style']).group(2) 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') except: pass
def add_videos_thetonightshow(url, type_, page = 1, added_episodes = []): this_url = (TONIGHT_SHOW_FEED % url) + '&offset=' + str((page-1) * 10) root_data = _connection.getURL(this_url) data = simplejson.loads(root_data) for video in data['content']: if video['type'] == type_: if type_ == 'episode': episode_name = video['name'] episode_id = video['episodeNumber'] else: episode_name = video['title'] episode_id = video['id'] if episode_id in added_episodes: continue added_episodes.append(episode_id) pid = video['videos'][0]['mpxPublicId'] episode_url = SMIL % pid try: episode_plot = BeautifulSoup(video['description']['value'], 'html.parser').p.string except: episode_plot = '' try: episode_airdate = _common.format_date(video['airDate'][:-6],'%Y-%m-%dT%H:%M:%S','%d.%m.%Y') except: episode_airdate = -1 try: season_number = int(video['season']) except: season_number = -1 try: episode_number = int(video['episodeNumber']) except: episode_number = -1 try: episode_thumb = video['images'][0]['bitImageSmall'] except: episode_thumb = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(episode_url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate} _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels, quality_mode = 'list_qualities') if page < int(_addoncompat.get_setting('maxpages')): add_videos_thetonightshow(url, type_, page + 1, added_episodes) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data)['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(default_mediacontent['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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): filter = episode_url.split('#')[1] season = episode_url.split('#')[2] episode_url = episode_url.split('#')[0] episode_data = _connection.getURL(episode_url) episode_tree = simplejson.loads(episode_data)[2]['data'] episode_menu = BeautifulSoup(episode_tree, 'html.parser', parse_only = SoupStrainer('ul', id= 'full-episode-ul')) for episode_item in episode_menu.find_all('li', {'data-field_primary_filter_value' : filter , 'data-field_season_value' : season}): if 'locked' not in episode_item['class']: url = episode_item['data-public-url'] episode_duration = episode_item['data-duration'] episode_duration = int(_common.format_seconds(episode_duration)) try: episode_airdate = _common.format_date(episode_item['data-date'].split(': ')[1],'%m/%d/%Y') except: episode_airdate = -1 episode_name = HTMLParser.HTMLParser().unescape(episode_item['data-title']) try: season_number = int(episode_item['data-season']) except: season_number = -1 try: episode_number = int(episode_item['data-episode']) except: episode_number = -1 try: episode_thumb = episode_item.find('img')['data-src'] except: try: episode_thumb = episode_item.find('img')['src'] except: episode_thumb = None episode_plot = HTMLParser.HTMLParser().unescape(episode_item['data-description']) episode_showtitle = episode_item['data-page-title'].split('-')[1].strip() episode_MPAA = episode_item['data-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' : episode_showtitle, 'MPAA' : episode_MPAA} _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels) _common.set_view('episodes')
def episodes(episode_url = _common.args.url): try: shutil.rmtree(os.path.join(_common.CACHEPATH,'thumbs')) except: pass episode_data = _connection.getURL(VIDEOLIST % episode_url.split('#')[0]) episode_menu = simplejson.loads(episode_data)['videos'] os.mkdir(os.path.join(_common.CACHEPATH,'thumbs')) 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(_common.CACHEPATH, 'thumbs', thumb_file) dbpath = xbmc.translatePath(_database.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 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 } _common.add_video(u, episode_name, thumb_path, infoLabels = infoLabels) _common.set_view('episodes')
def add_videos(episode_tree): episode_menu = episode_tree.find_all('div', class_ = 'vidthumb') show_name = episode_tree.find('h3', id = 'natgeov-section-title').text for episode_item in episode_menu: episode_name = episode_item.a['title'] episode_thumb = episode_item.img['src'].split('url=')[1] episode_duration = episode_item.span.text url = BASE + episode_item.a['href'] u = sys.argv[0] u += '?url="'+urllib.quote_plus(url)+'"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title' : episode_name, 'duration' : episode_duration, 'tvshowtitle' : show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels)
def add_videos_colbertnation(episode_tree, type, feeds): try: shows = [] scripts = episode_tree.find('script') for script in scripts: if ('triforceManifestFeed') in script: triforceManifestFeed = script.split(' = ')[1] triforceManifestFeed = triforceManifestFeed.strip()[:-1] # remove last ; from string triforceManifestFeed = simplejson.loads(triforceManifestFeed) break for feed in feeds: url = triforceManifestFeed['manifest']['zones'][feed]['feed'] data = _connection.getURL(url) menu = simplejson.loads(data) for item in menu['result'][type]: episode_name = item['title'] 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'] 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 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 } 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: _common.add_video(show['u'], show['episode_name'], show['episode_thumb'], infoLabels = show['infoLabels'], quality_mode = 'list_qualities') except: pass
def add_fullepisodes(episode_tree, season_number=None): try: episode_menu = episode_tree.find_all('div', class_='episodeContainer') for episode_item in episode_menu: episode_name = episode_item.find('div', class_='episodeTitle').a.text episode_airdate = _common.format_date( episode_item.find('div', class_='episodeAirDate').contents[1].strip(), '%b %d, %Y', '%d.%m.%Y') episode_plot = episode_item.find( 'div', class_='episodeDescription').contents[0].strip() episode_thumb = episode_item.find( 'div', class_='episodeImage').img['src'].split('?')[0] url = episode_item.find('div', class_='episodeTitle').a['href'] try: episode_duration = episode_item.find( 'span', class_='episodeDuration').text.replace(')', '').replace( '(', '') except: episode_duration = None try: episode_number = int( episode_item.find('div', class_='episodeIdentifier').text.split( '#' + season_number)[1]) except: episode_number = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) except: pass
def add_videos(episode_tree): episode_menu = episode_tree.find_all('li', recursive = False) for episode_item in episode_menu: show_name = _common.args.name episode_link = episode_item.h4.a episode_name = episode_link.text url = BASE + episode_link['href'] episode_thumb = episode_item.find('img')['src'].split('?')[0] episode_plot = episode_item.find('p', class_ = 'description').text u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title' : episode_name, 'plot' : episode_plot, 'tvshowtitle' : show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels = infoLabels)
def add_fullepisodes(episode_tree, season_number=-1): try: episode_menu = episode_tree.find_all('div', class_='episode_guide') for episode_item in episode_menu: episode_name = _common.replace_signs( episode_item.find('img')['title']) episode_airdate = _common.format_date( episode_item.find( 'p', class_='aired_available').contents[1].strip(), '%m/%d/%Y', '%d.%m.%Y') episode_plot = _common.replace_signs( episode_item.find('p', class_=False).text) episode_thumb = episode_item.find('img')['src'].split('?')[0] url = episode_item.find('div', class_='thumb_image').a['href'] try: episode_number = int( episode_item.find( 'a', class_='title').contents[1].split('Episode ' + season_number)[1]) except: try: episode_number = int(url.split('-0')[1]) except: episode_number = -1 if season_number == -1: season_number = int(url.split('-')[-3]) 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') except: pass
def add_clips_southpark(episode_tree): try: episode_menu = episode_tree.find_all('li', class_='clips_thumb') clip_titles = [] for episode_item in episode_menu: episode_name = episode_item.find('a', class_='clips_thumb_link', text=True).string if episode_name not in clip_titles: clip_titles.append(episode_name) episode_plot = episode_item.find('h6').string.replace('"', '') url = episode_item.find('a')['href'] episode_thumb = episode_item.find('img')['src'].split('?')[0] try: episode_duration_seconds = _common.format_seconds( episode_item.find('span', class_='clips_duration').string) except: episode_duration_seconds = -1 try: episode_season = int( episode_item.find( 'h5', class_='clips_thumb_season').string.replace( 'Season ', '')) except: episode_season = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration_seconds, 'season': episode_season, 'plot': episode_plot, 'tvshowtitle': 'South Park' } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels, quality_mode='list_qualities') except: pass
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html5lib') episode_menu = episode_tree.find_all('div', id=re.compile('video_*')) for episode_item in episode_menu: show_name = episode_item.strong.string episode_name = _common.replace_signs( episode_item.a.img['title'].replace(show_name, '')) episode_thumb = episode_item.a.img['src'].rsplit('_', 1)[0] + '_640x360.jpg' episode_plot = _common.replace_signs( episode_item.find_all('p')[1].text) url = BASE + episode_item.a['href'] try: seasonEpisode = episode_item.find('span', class_='type').string seasonSplit = seasonEpisode.split(': Ep. ') season_number = int(seasonSplit[0].replace('Season', '').strip()) episodeSplit = seasonSplit[1].split(' ') episode_number = int(episodeSplit[0]) episode_duration = episodeSplit[1].replace('(', '').replace(')', '').strip() except: season_number = None episode_number = None episode_duration = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data.replace('}{', '},{'))['results'] for episode_item in episode_menu: show_name = _common.args.name url = episode_item['videoURL'] episode_duration = int(episode_item['length'] / 60) episode_plot = episode_item['shortDescription'] episode_airdate = _common.format_date(episode_item['airdate'], '%Y-%m-%d', '%d.%m.%Y') episode_name = episode_item['name'] try: season_number = episode_item['season'] except: season_number = None try: episode_number = episode_item['episode'] except: episode_number = None try: episode_thumb = episode_item['videoStillURL'] 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, 'duration': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(episode_url) episode_tree = BeautifulSoup(episode_data, 'html5lib') episode_menu = episode_tree.find('ul', id='browse_results').find_all( 'li', recursive=False) for episode_item in episode_menu: episode_name = episode_item.a['title'] episode_thumb = episode_item.img['src'] episode_plot = episode_item.find( 'div', class_='browse_result_description').string.strip() show_name = _common.args.name url = BASE + episode_item.a['href'] try: episode_duration = episode_item.find( 'span', class_='duration').string.strip('()') except: episode_duration = 0 try: episode_airdate = episode_item.find( 'p', class_='browse_result_sale grid-visible').string.replace( 'Available: ', '') episode_airdate = _common.format_date(episode_airdate, inputFormat='%b %d, %Y') except: episode_airdate = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration, 'plot': episode_plot, 'premiered': episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(episode_url=_common.args.url): episode_data = _connection.getURL(VIDEOLIST % episode_url.split('#')[0]) episode_menu = simplejson.loads(episode_data)['videos'] 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']) / 60 episode_plot = episode_item['description_long'] episode_name = episode_item['title'] season_number = int(episode_item['season']) episode_thumb = episode_item['large_thumbnail'].replace( 'media.cwtv.com', 'pdl.warnerbros.com') try: episode_number = int( episode_item['episode'][len(str(season_number)):]) except: episode_number = None try: episode_airdate = _common.format_date(episode_item['airdate'], '%Y-%b-%d', '%d.%m.%Y') except: episode_airdate = None u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'duration': episode_duration, 'season': season_number, 'episode': episode_number, 'plot': episode_plot, 'premiered': episode_airdate, 'tvshowtitle': show_name } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def add_clips(episode_tree): try: episode_menu = episode_tree.find_all('div', class_='block') for episode_item in episode_menu: episode_name = _common.replace_signs( episode_item.find('h3').a.text) episode_plot = _common.replace_signs( episode_item.find('p', class_=False).text) episode_thumb = episode_item.find('img')['src'].split('?')[0] url = episode_item.find('div', class_='thumb_area').a['href'] try: episode_airdate = episode_item.find( 'div', class_='details').contents[0].split(' ', 1)[1].strip() episode_airdate = _common.format_date(episode_airdate, '%B %d, %Y', '%d.%m.%Y') except: episode_airdate = -1 try: episode_duration = _common.format_seconds( episode_item.find('h3').small.text.replace(')', '').replace( '(', '')) except: episode_duration = -1 u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels = { 'title': episode_name, 'durationinseconds': episode_duration, 'plot': episode_plot, 'premiered': episode_airdate } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) except: pass
def episodes_json(SITE): episode_url = _common.args.url master_name = episode_url.split('#')[0] episode_url = episode_url.split('#')[1] episode_data = _connection.getURL(episode_url) episode_menu = simplejson.loads(episode_data) for episode_item in episode_menu: url = episode_item['episodeID'] try: episode_duration = episode_item['length'] except: episode_duration = -1 try: episode_airdate = _common.format_date( episode_item['airDate'].split('on ')[1], '%B %d, %Y') except: episode_airdate = -1 try: episode_plot = episode_item['summary'] except: episode_plot = episode_item['shortdescription'] episode_name = episode_item['title'] if episode_name == master_name: video_url = EPISODE % url video_data = _connection.getURL(video_url) video_tree = BeautifulSoup(video_data, 'html.parser') episode_name = video_tree.headline.string elif episode_name == "": episode_name = episode_plot try: season_number = int( episode_item['identifier'].split(',')[0].split(' ')[1]) except: season_number = -1 try: episode_number = int( episode_item['identifier'].split(', ')[1].split(' ')[1][1:]) except: try: episode_number = int( episode_item['identifier'].split(', ')[1].split(' ')[1]) except: episode_number = -1 try: episode_thumb = episode_item['640x360_jpg'] 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')
def episodes(SITE): episode_url = _common.args.url 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 print "Es", episode_season_number if episode_season_number == season_number or 'filterBySeasonNumber' not in episode_url: print "HRE" segments = episode_item.find_all('segment') if len(segments) == 0: 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_name = episode_item['title'] try: season_number = int(episode_item['episeasonnumber']) except: season_number = -1 try: episode_number = int(episode_item['episodenumber'][:2]) except: episode_number = -1 try: episode_thumb = episode_item['thumbnailurl'] except: episode_thumb = None episode_plot = episode_item.description.text 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 } _common.add_video(u, episode_name, episode_thumb, infoLabels=infoLabels) _common.set_view('episodes')