def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_r' or params.next == 'download_video': file_path = utils.get_webcontent(params.video_url) video_soup = bs(file_path, 'html.parser') video_iframe = video_soup.find('iframe') url_video_resolver = video_iframe.get('src') # Case Youtube if 'youtube' in url_video_resolver: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile('player.vimeo.com/video/(.*?)[\?\"]' ).findall(url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_vimeo(video_id, True) else: return resolver.get_stream_vimeo(video_id, False) else: # TODO return ''
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return resolver.get_stream_youtube(params.video_id, False) elif params.next == 'play_r_news': return resolver.get_stream_youtube(params.video_id, False) elif params.next == 'play_r_sports': data_embed_token = utils.get_webcontent(URL_PCODE_EMBED_TOKEN) pcode = re.compile('sas/embed_token/(.*?)/all').findall( data_embed_token)[0] data_embed_token = urllib.quote_plus(data_embed_token.replace('"', '')) video_vod = utils.get_webcontent( URL_OOYALA_VOD % (pcode, params.video_id, data_embed_token)) json_parser = json.loads(video_vod) # Get Value url encodebase64 if 'streams' in json_parser["authorization_data"][params.video_id]: for stream in json_parser["authorization_data"][ params.video_id]["streams"]: url_base64 = stream["url"]["data"] return base64.standard_b64decode(url_base64) else: # No stream (TO DO Authentication) return None elif params.next == 'download_video': return resolver.get_stream_youtube(params.video_id, True)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return resolver.get_stream_youtube(params.video_id, False) elif params.next == 'play_r_news': return resolver.get_stream_youtube(params.video_id, False) elif params.next == 'play_r_sports': data_embed_token = utils.get_webcontent( URL_PCODE_EMBED_TOKEN) pcode = re.compile( 'sas/embed_token/(.*?)/all').findall(data_embed_token)[0] data_embed_token = urllib.quote_plus( data_embed_token.replace('"','')) video_vod = utils.get_webcontent( URL_OOYALA_VOD % (pcode, params.video_id, data_embed_token)) json_parser = json.loads(video_vod) # Get Value url encodebase64 if 'streams' in json_parser["authorization_data"][params.video_id]: for stream in json_parser["authorization_data"][params.video_id]["streams"]: url_base64 = stream["url"]["data"] return base64.standard_b64decode(url_base64) else: return None elif params.next == 'download_video': return resolver.get_stream_youtube(params.video_id, True)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return params.url_live elif params.next == 'play_r' or params.next == 'download_video': # Case Youtube if 'youtube' in params.video_url: video_id = re.compile( 'www.youtube.com/embed/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_youtube( video_id, True) else: return resolver.get_stream_youtube( video_id, False) # Case Vimeo elif 'vimeo' in params.video_url: video_id = re.compile('player.vimeo.com/video/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_vimeo( video_id, True) else: return resolver.get_stream_vimeo( video_id, False)
def get_video_url(params): """Get video URL and start video player""" video_html = utils.get_webcontent(params.video_url) video_id = re.compile( r'www.youtube.com/embed/(.*?)[\?\"]').findall(video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False)
def get_video_url(params): """Get video URL and start video player""" video_html = utils.get_webcontent(params.video_url) video_id = re.compile( r'www.youtube.com/embed/(.*?)\?').findall(video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_r' or params.next == 'download_video': video_html = utils.get_webcontent(params.video_url) video_id = re.compile(r'videoId: \'(.*?)\'').findall(video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) elif params.next == 'play_l': return params.url_live
def get_video_url(params): """Get video URL and start video player""" video_html = utils.get_webcontent(params.video_url) if re.compile('AtedraVideo.video_id = "(.*?)"').findall(video_html): video_id = re.compile( 'AtedraVideo.video_id = "(.*?)"').findall(video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) else: return ''
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_r' or params.next == 'download_video': if params.next == 'download_video': return resolver.get_stream_youtube(params.video_id, True) else: return resolver.get_stream_youtube(params.video_id, False) elif params.next == 'play_l': live_html = utils.get_webcontent(URL_LIVE) video_id = re.compile(r'dailymotion.com/embed/video/(.*?)\"').findall( live_html)[0] return resolver.get_stream_dailymotion(video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_r' or params.next == 'download_video': video_html = utils.get_webcontent(params.video_url) video_id = re.compile( r'videoId: \'(.*?)\'').findall(video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) elif params.next == 'play_l': return params.url_live
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_r' or params.next == 'download_video': if params.isyoutube == 'True': if params.next == 'download_video': return resolver.get_stream_youtube(params.video_id, True) else: return resolver.get_stream_youtube(params.video_id, False) else: if params.next == 'download_video': return resolver.get_stream_vimeo(params.video_id, True) else: return resolver.get_stream_vimeo(params.video_id, False)
def get_video_url(params): """Get video URL and start video player""" url_selected = '' all_datas_videos_quality = [] all_datas_videos_path = [] videos_html = utils.get_webcontent(params.video_url) videos_soup = bs(videos_html, 'html.parser') list_videos = videos_soup.find( 'ul', class_='nav nav-tabs').find_all('a') for video in list_videos: if '#video-' in video.get('href'): # Find a better solution to strip all_datas_videos_quality.append(video.get_text().strip()) # Get link value_jwplayer_id = video.get('data-jwplayer-id') # Case mp4 if value_jwplayer_id != '': list_streams = videos_soup.find_all( 'div', class_='jwplayer') for stream in list_streams: if stream.get('id') == value_jwplayer_id: url = stream.get('data-source') # Cas Yt else: video_id = re.compile( 'youtube.com/embed/(.*?)\?').findall(videos_html)[0] url = resolver.get_stream_youtube(video_id, False) all_datas_videos_path.append(url) # Get link from FranceTV elif '#ftv-player-' in video.get('href'): # Find a better solution to strip all_datas_videos_quality.append(video.get_text().strip()) # Get link value_ftvlayer_id = video.get('data-ftvplayer-id') list_streams = videos_soup.find_all( 'iframe', class_='embed-responsive-item') for stream in list_streams: if stream.get('id') == value_ftvlayer_id: url_id = stream.get('src') ydl = YoutubeDL() ydl.add_default_info_extractors() with ydl: result = ydl.extract_info( url_id, download=False) for format_video in result['formats']: url = format_video['url'] all_datas_videos_path.append(url) if len(all_datas_videos_quality) > 1: seleted_item = common.sp.xbmcgui.Dialog().select( common.GETTEXT('Choose video quality'), all_datas_videos_quality) if seleted_item == -1: return '' url_selected = all_datas_videos_path[seleted_item] return url_selected else: return all_datas_videos_path[0]
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': desired_language = common.PLUGIN.get_setting( params.channel_name + '.language') url_live = URL_LIVE_SITE % desired_language.lower() file_path = utils.download_catalog( url_live, '%s_%s_live.html' % (params.channel_name, desired_language.lower()) ) html_live = open(file_path).read() root_soup = bs(html_live, 'html.parser') url_stream = '' json_parser = json.loads( root_soup.select_one("script[type=application/json]").text) media_datas_list = json_parser['medias']['media'] media_datas_list = media_datas_list['media_sources']['media_source'] for datas in media_datas_list: if datas['source']: url_stream = datas['source'] return url_stream elif params.next == 'play_r' or params.next == 'download_video': return params.url elif params.next == 'play_r_youtube': return resolver.get_stream_youtube(params.video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return params.url elif params.next == 'play_r' or params.next == 'download_video': return params.url elif params.next == 'play_r_youtube': return resolver.get_stream_youtube(params.video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return params.url elif params.next == 'play_r' or params.next == 'download_video': return params.url elif params.next == 'play_r_youtube': return resolver.get_stream_youtube(params.video_id, False)
def get_video_url(params): """Get video URL and start video player""" url_selected = '' all_datas_videos_quality = [] all_datas_videos_path = [] videos_html = utils.get_webcontent(params.video_url) videos_soup = bs(videos_html, 'html.parser') list_videos = videos_soup.find('ul', class_='nav nav-tabs').find_all('a') for video in list_videos: if '#video-' in video.get('href'): # Find a better solution to strip all_datas_videos_quality.append(video.get_text().strip()) # Get link value_jwplayer_id = video.get('data-jwplayer-id') # Case mp4 if value_jwplayer_id != '': list_streams = videos_soup.find_all('div', class_='jwplayer') for stream in list_streams: if stream.get('id') == value_jwplayer_id: url = stream.get('data-source') # Cas Yt else: video_id = re.compile('youtube.com/embed/(.*?)\?').findall( videos_html)[0] url = resolver.get_stream_youtube(video_id, False) all_datas_videos_path.append(url) # Get link from FranceTV elif '#ftv-player-' in video.get('href'): # Find a better solution to strip all_datas_videos_quality.append(video.get_text().strip()) # Get link value_ftvlayer_id = video.get('data-ftvplayer-id') list_streams = videos_soup.find_all('iframe', class_='embed-responsive-item') for stream in list_streams: if stream.get('id') == value_ftvlayer_id: url_id = stream.get('src') ydl = YoutubeDL() ydl.add_default_info_extractors() with ydl: result = ydl.extract_info(url_id, download=False) for format_video in result['formats']: url = format_video['url'] all_datas_videos_path.append(url) if len(all_datas_videos_quality) > 1: seleted_item = common.sp.xbmcgui.Dialog().select( common.GETTEXT('Choose video quality'), all_datas_videos_quality) if seleted_item == -1: return '' url_selected = all_datas_videos_path[seleted_item] return url_selected else: return all_datas_videos_path[0]
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': live_html = utils.get_webcontent(URL_ROOT) list_url_stream = re.compile(r'videoUrl = \'(.*?)\'').findall( live_html) url_live = '' for url_stream_data in list_url_stream: if 'm3u8' in url_stream_data: url_live = url_stream_data return url_live elif params.next == 'play_r' or params.next == 'download': video_html = utils.get_webcontent(params.url) video_id = re.compile(r'www.youtube.com/embed/(.*?)[\?\"]').findall( video_html)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': return params.url_live elif params.next == 'play_r' or params.next == 'download_video': # Case Youtube if 'youtube' in params.video_url: video_id = re.compile( 'www.youtube.com/embed/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # Case Vimeo elif 'vimeo' in params.video_url: video_id = re.compile( 'player.vimeo.com/video/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_vimeo(video_id, True) else: return resolver.get_stream_vimeo(video_id, False)
def get_video_url(params): """Get video URL and start video player""" if params.next == 'play_l': live_html = utils.get_webcontent(URL_LIVE) return re.compile('source src=\"(.*?)\"').findall(live_html)[0] elif params.next == 'play_r' or params.next == 'download_video': # Case Youtube if 'youtube' in params.video_url: video_id = re.compile( 'www.youtube.com/embed/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # Case Vimeo elif 'vimeo' in params.video_url: video_id = re.compile( 'player.vimeo.com/video/(.*?)[\?\"\&]').findall( params.video_url)[0] if params.next == 'download_video': return resolver.get_stream_vimeo(video_id, True) else: return resolver.get_stream_vimeo(video_id, False)
def get_video_url(params): """Get video URL and start video player""" video_json = utils.get_webcontent(URL_API_MEDIA % (params.video_id, PARTNER)) video_json_parser = json.loads(video_json) desired_quality = common.PLUGIN.get_setting('quality') url = '' if 'rendition' in video_json_parser["media"]: # (Video Hosted By Allocine) if desired_quality == "DIALOG": all_datas_videos_quality = [] all_datas_videos_path = [] for media in video_json_parser["media"]["rendition"]: all_datas_videos_quality.append(media["bandwidth"]["$"]) all_datas_videos_path.append(media["href"]) seleted_item = common.sp.xbmcgui.Dialog().select( _('Choose video quality'), all_datas_videos_quality) if seleted_item == -1: return None url = all_datas_videos_path[seleted_item] elif desired_quality == "BEST": for media in video_json_parser["media"]["rendition"]: url = media["href"] else: for media in video_json_parser["media"]["rendition"][0]: url = media["href"] if requests.get(url, stream=True).status_code == 404: utils.send_notification(common.ADDON.get_localized_string(30111)) return '' return url else: # (Video Not Hosted By Allocine) url_video_embeded = re.compile('src=\'(.*?)\'').findall( video_json_parser["media"]["trailerEmbed"])[0] if 'allocine' in url_video_embeded: url_video_embeded_html = utils.get_webcontent(url_video_embeded) url_video_resolver = re.compile('data-model="(.*?)"').findall( url_video_embeded_html)[0] url_video_resolver = url_video_resolver.replace('"', '"') url_video_resolver = url_video_resolver.replace('\\', '') url_video_resolver = url_video_resolver.replace('&', '&') url_video_resolver = url_video_resolver.replace('%2F', '/') # Case Youtube if 'youtube' in url_video_resolver: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile(r'embed/video/(.*?)[\"\?]').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_dailymotion(video_id, True) else: return resolver.get_stream_dailymotion(video_id, False) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile('www.facebook.com/allocine/videos/(.*?)/' ).findall(url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_facebook(video_id, True) else: return resolver.get_stream_facebook(video_id, False) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile('player.vimeo.com/video/(.*?)"').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_vimeo(video_id, True) else: return resolver.get_stream_vimeo(video_id, False) # TO DO ? (return an error) else: return '' else: # Case Youtube if 'youtube' in url_video_embeded: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_embeded)[0] if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # TO DO ? (return an error) else: return ''
def get_video_url(params): """Get video URL and start video player""" video_json = utils.get_webcontent( URL_API_MEDIA % (params.video_id, PARTNER)) video_json_parser = json.loads(video_json) desired_quality = common.PLUGIN.get_setting('quality') url = '' if 'rendition' in video_json_parser["media"]: # (Video Hosted By Allocine) if desired_quality == "DIALOG": all_datas_videos_quality = [] all_datas_videos_path = [] for media in video_json_parser["media"]["rendition"]: all_datas_videos_quality.append( media["bandwidth"]["$"]) all_datas_videos_path.append(media["href"]) seleted_item = common.sp.xbmcgui.Dialog().select( common.GETTEXT('Choose video quality'), all_datas_videos_quality) if seleted_item == -1: return None url = all_datas_videos_path[seleted_item] elif desired_quality == "BEST": for media in video_json_parser["media"]["rendition"]: url = media["href"] else: for media in video_json_parser["media"]["rendition"][0]: url = media["href"] if requests.get(url, stream=True).status_code == 404: utils.send_notification( common.ADDON.get_localized_string(30710)) return '' return url else: # (Video Not Hosted By Allocine) url_video_embeded = re.compile( 'src=\'(.*?)\'' ).findall(video_json_parser["media"]["trailerEmbed"])[0] if 'allocine' in url_video_embeded: url_video_embeded_html = utils.get_webcontent(url_video_embeded) url_video_resolver = re.compile( 'data-model="(.*?)"' ).findall(url_video_embeded_html)[0] url_video_resolver = url_video_resolver.replace('"', '"') url_video_resolver = url_video_resolver.replace('\\','') url_video_resolver = url_video_resolver.replace('&','&') url_video_resolver = url_video_resolver.replace('%2F','/') # Case Youtube if 'youtube' in url_video_resolver: video_id = re.compile( 'www.youtube.com/embed/(.*?)[\?\"\&]').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_youtube( video_id, True) else: return resolver.get_stream_youtube( video_id, False) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile( r'embed/video/(.*?)[\"\?]').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_dailymotion( video_id, True) else: return resolver.get_stream_dailymotion( video_id, False) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile( 'www.facebook.com/allocine/videos/(.*?)/').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_facebook( video_id, True) else: return resolver.get_stream_facebook( video_id, False) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile('player.vimeo.com/video/(.*?)"').findall( url_video_resolver)[0] if params.next == 'download_video': return resolver.get_stream_vimeo( video_id, True) else: return resolver.get_stream_vimeo( video_id, False) else: return '' else: # Case Youtube if 'youtube' in url_video_embeded: video_id = re.compile( 'www.youtube.com/embed/(.*?)[\?\"\&]').findall( url_video_embeded)[0] if params.next == 'download_video': return resolver.get_stream_youtube( video_id, True) else: return resolver.get_stream_youtube( video_id, False) else: return ''
def get_video_url(params): """Get video URL and start video player""" desired_quality = common.PLUGIN.get_setting('quality') if params.next == 'play_r' or params.next == 'download_video': video_html = utils.get_webcontent(params.video_url) video_soup = bs(video_html, 'html.parser') video_data = video_soup.find('div', class_='player-wrapper') if video_data.find('a', class_='video_link'): id_diffusion = video_data.find('a', class_='video_link').get( 'href').split('video/')[1].split('@')[0] file_prgm = utils.get_webcontent(SHOW_INFO % id_diffusion) json_parser = json.loads(file_prgm) url_selected = '' if desired_quality == "DIALOG": all_datas_videos_quality = [] all_datas_videos_path = [] for video in json_parser['videos']: if video['format'] == 'hls_v5_os' or \ video['format'] == 'm3u8-download': if video['format'] == 'hls_v5_os': all_datas_videos_quality.append("HD") else: all_datas_videos_quality.append("SD") all_datas_videos_path.append(video['url']) seleted_item = common.sp.xbmcgui.Dialog().select( common.GETTEXT('Choose video quality'), all_datas_videos_quality) if seleted_item == -1: return None url_selected = all_datas_videos_path[seleted_item] elif desired_quality == "BEST": for video in json_parser['videos']: if video['format'] == 'hls_v5_os': url_selected = video['url'] else: for video in json_parser['videos']: if video['format'] == 'm3u8-download': url_selected = video['url'] return url_selected else: url_video_resolver = video_data.find('iframe').get('src') # Case Youtube if 'youtube' in url_video_resolver: video_id = url_video_resolver.split('youtube.com/embed/')[1] # print 'video_id youtube: ' + video_id if params.next == 'download_video': return resolver.get_stream_youtube(video_id, True) else: return resolver.get_stream_youtube(video_id, False) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = url_video_resolver.split( 'dailymotion.com/embed/video/')[1] # print 'video_id dailymotion: ' + video_id if params.next == 'download_video': return resolver.get_stream_dailymotion(video_id, True) else: return resolver.get_stream_dailymotion(video_id, False) else: # TO DO add new video hosting ? return None