def get_live_url(plugin, item_id, **kwargs): final_language = kwargs.get('language', DESIRED_LANGUAGE) if final_language == 'EN': url_live = URL_LIVE_EN resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False) elif final_language == 'AR': url_live = URL_LIVE_AR resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False) elif final_language == 'FR': url_live = URL_LIVE_FR resp = urlquick.get(url_live, max_age=-1) return re.compile(r'file\: \"(.*?)\"').findall(resp.text)[0] elif final_language == 'ES': url_live = URL_LIVE_ES resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_live_url(plugin, item_id, video_id, item_dict, **kwargs): final_language = DESIRED_LANGUAGE # If we come from the M3U file and the language # is set in the M3U URL, then we overwrite # Catch Up TV & More language setting if type(item_dict) is not dict: item_dict = eval(item_dict) if 'language' in item_dict: final_language = item_dict['language'] if final_language == 'EN': url_live = URL_LIVE_EN resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False) elif final_language == 'AR': url_live = URL_LIVE_AR resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False) elif final_language == 'FR': url_live = URL_LIVE_FR resp = urlquick.get(url_live, max_age=-1) return re.compile(r'file\: \"(.*?)\"').findall(resp.text)[0] elif final_language == 'ES': url_live = URL_LIVE_ES resp = urlquick.get(url_live, max_age=-1) live_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_video_url( plugin, item_id, video_url, item_dict=None, download_mode=False, video_label=None): resp = urlquick.get(video_url) root = resp.parse() player_datas = root.find( ".//div[@class='player-wrapper']") if player_datas.find(".//a[@class='video_link']") is not None: id_diffusion = player_datas.find( ".//a[@class='video_link']").get( 'href').split('video/')[1].split('@')[0] return resolver_proxy.get_francetv_video_stream( plugin, id_diffusion, item_dict, download_mode, video_label) else: url_video_resolver = player_datas.find('.//iframe').get('src') # Case Youtube if 'youtube' in url_video_resolver: video_id = url_video_resolver.split( 'youtube.com/embed/')[1] return resolver_proxy.get_stream_youtube( plugin, video_id, download_mode, video_label) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = url_video_resolver.split( 'dailymotion.com/embed/video/')[1] return resolver_proxy.get_stream_dailymotion( plugin, video_id, download_mode, video_label) else: plugin.notify('ERROR', plugin.localize(30716)) return False
def get_live_url(plugin, item_id, video_id, item_dict, **kwargs): resp = urlquick.get(URL_LIVE_JSON, headers={'User-Agent': web_utils.get_random_ua}, max_age=-1) json_parser = json.loads(resp.text) return resolver_proxy.get_stream_youtube(plugin, json_parser["code"])
def get_video_url(plugin, video_url, download_mode=False, **kwargs): resp = urlquick.get(video_url, headers={'User-Agent': web_utils.get_random_ua()}, max_age=-1) video_id = re.compile(r'videoId: \'(.*?)\'').findall(resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, video_id, download_mode=False, video_label=None): resp = urlquick.get(URL_VIDEO_BY_ID % video_id, max_age=-1) json_parser = json.loads( re.compile('data-media=\"(.*?)\"').findall(resp.text)[0].replace( '"', '"')) if json_parser["urlHls"] is None: if 'youtube.com' in json_parser["url"]: video_id = json_parser["url"].rsplit('/', 1)[1] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label) else: return json_parser["url"] else: stream_url = json_parser["urlHls"] if 'drm' in stream_url: stream_url = json_parser["urlHlsAes128"] if download_mode: return download.download_video(stream_url, video_label) return stream_url
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): """Get video URL and start video player""" video_html = urlquick.get(video_url).text video_id = re.compile(r'www.youtube.com/embed/(.*?)\?').findall( video_html)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, video_url, download_mode=False, video_label=None): resp = urlquick.get(video_url) root_soup = bs(resp.text, 'html.parser') stream_datas = root_soup.find('iframe').get('src') # Case Youtube if 'youtube' in stream_datas: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]').findall( stream_datas)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label) # Case Vimeo elif 'vimeo' in stream_datas: video_id = re.compile('player.vimeo.com/video/(.*?)[\?\"]').findall( stream_datas)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode, video_label) else: # Add Notification return False
def get_live_url(plugin, item_id, video_id, **kwargs): resp = urlquick.get(URL_ROOT, headers={"User-Agent": web_utils.get_random_ua()}, max_age=-1) live_id = re.compile("youtube.com/embed/(.*?)\"").findall(resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_video_yt_url(plugin, item_id, video_id, download_mode=False, **kwargs): return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, youtube_id, download_mode=False, video_label=None): return resolver_proxy.get_stream_youtube(plugin, youtube_id, download_mode, video_label)
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): resp = urlquick.get(video_url) video_id = re.compile(r'youtube\.com\/embed\/(.*.)\?').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_live_url(plugin, item_id, video_id, item_dict): resp = urlquick.get(URL_ROOT) root = resp.parse() live_datas = root.find('.//iframe') resp2 = urlquick.get(live_datas.get('src')) live_id = re.compile(r'www.youtube.com\/watch\?v=(.*?)\"').findall( resp2.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): """Get video URL and start video player""" resp = urlquick.get(video_url, max_age=-1) root = resp.parse() if root.find(".//figure[@class='player player-auto-play js-player']" ) is not None: stream_datas_json = root.find( ".//figure[@class='player player-auto-play js-player']").get( 'data-model') json_parser = json.loads(stream_datas_json) if 'high' in json_parser["videos"][0]["sources"]: return 'https:' + json_parser["videos"][0]["sources"]["high"] else: return json_parser["videos"][0]["sources"]["standard"] elif root.find(".//div[@class='more-overlay-item social-export light']" ) is not None: stream_datas_json = root.find( ".//div[@class='more-overlay-item social-export light']").get( 'data-model') print(repr(stream_datas_json)) json_parser = json.loads(stream_datas_json) if 'code' in json_parser["videos"][0]["sources"]: url_video_resolver = json_parser["videos"][0]["sources"]["code"] if 'youtube' in url_video_resolver: video_id = re.compile(r'www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_youtube( plugin, video_id, download_mode) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile(r'embed/video/(.*?)[\"\?]').findall( url_video_resolver)[0] return resolver_proxy.get_stream_dailymotion( plugin, video_id, download_mode) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile( r'www.facebook.com/allocine/videos/(.*?)/').findall( url_video_resolver)[0] return resolver_proxy.get_stream_facebook( plugin, video_id, download_mode) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile(r'player.vimeo.com/video/(.*?)[\?\"]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode) # TO DO ? (return an error) else: return False
def get_live_url(plugin, item_id, video_id, item_dict): resp = urlquick.get(URL_ROOT) root_soup = bs(resp.text, 'html.parser') live_datas = root_soup.find('iframe') live_html = urlquick.get(live_datas.get('src')) live_id = re.compile( r'www.youtube.com\/watch\?v=(.*?)\"').findall(live_html.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_video_url(plugin, video_url, download_mode=False, video_label=None): resp = urlquick.get(video_url, headers={'User-Agent': web_utils.get_random_ua}, max_age=-1) video_id = re.compile(r'www.youtube.com/embed/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label)
def get_video_url(plugin, item_id, video_id, is_youtube, download_mode=False, **kwargs): if is_youtube: return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode) return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode)
def get_video_url(plugin, video_url, item_id, download_mode=False, video_label=None, **kwargs): """Get video URL and start video player""" video_html = urlquick.get(video_url).text video_id = re.compile(r'videoID\=\"(.*?)\"').findall(video_html)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label)
def get_video_url(plugin, item_id, video_id, video_source, download_mode=False, **kwargs): if 'youtube' in video_source: return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode) elif 'dailymotion' in video_source: return resolver_proxy.get_stream_dailymotion(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, video_id, is_youtube, download_mode=False, video_label=None): if is_youtube: return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label) else: return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode, video_label)
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): """Get video URL and start video player""" video_html = urlquick.get(video_url).text if re.compile('AtedraVideo.video_id = "(.*?)"').findall(video_html): video_id = re.compile('AtedraVideo.video_id = "(.*?)"').findall( video_html)[0] else: # TO DO Espagnol Video / Return 404 (TO REMOVE) return False return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, video_url, video_id, is_drm, download_mode=False, **kwargs): if 'youtube.com' in video_url: video_id = video_url.rsplit('/', 1)[1] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode) if 'arte.tv' in video_url: video_id = re.compile("(?<=fr%2F)(.*)(?=&autostart)").findall( video_url)[0] return resolver_proxy.get_arte_video_stream(plugin, 'fr', video_id, download_mode) if is_drm: if get_kodi_version() < 18: xbmcgui.Dialog().ok('Info', plugin.localize(30602)) return False is_helper = inputstreamhelper.Helper('mpd', drm='widevine') if not is_helper.check_inputstream(): return False token_url = URL_TOKEN % ('media_id', video_id, PARTNER_KEY) token_value = urlquick.get(token_url, max_age=-1) json_parser_token = json.loads(token_value.text) item = Listitem() item.path = video_url item.property[INPUTSTREAM_PROP] = 'inputstream.adaptive' item.property['inputstream.adaptive.manifest_type'] = 'mpd' item.property[ 'inputstream.adaptive.license_type'] = 'com.widevine.alpha' headers2 = { 'customdata': json_parser_token["auth_encoded_xml"], } item.property[ 'inputstream.adaptive.license_key'] = URL_LICENCE_KEY % urlencode( headers2) item.property[ 'inputstream.adaptive.manifest_update_parameter'] = 'full' item.label = get_selected_item_label() item.art.update(get_selected_item_art()) item.info.update(get_selected_item_info()) return item return video_url
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): resp = urlquick.get(video_url) if len(re.compile(r'source src\=\"(.*?)\"').findall(resp.text)) > 0: stream_url = re.compile(r'source src\=\"(.*?)\"').findall(resp.text)[0] if download_mode: return download.download_video(stream_url) return stream_url video_id = re.compile(r'www.youtube.com\/embed\/(.*?)\"').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode)
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): resp = urlquick.get(video_url, max_age=-1) if 'youtube.com/embed' in resp.text: video_id = re.compile(r'youtube\.com\/embed\/(.*?)[\?\"]').findall( resp.text)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode) else: final_url = re.compile(r'file\: \"(.*?)\"').findall(resp.text) if download_mode: return download.download_video(final_url) return final_url
def get_live_url(plugin, item_id, **kwargs): final_language = kwargs.get('language', Script.setting['euronews.language']) if final_language == 'EN': url_live_json = URL_LIVE_API % 'www' elif final_language == 'AR': url_live_json = URL_LIVE_API % 'arabic' else: url_live_json = URL_LIVE_API % final_language.lower() resp = urlquick.get(url_live_json, headers={'User-Agent': web_utils.get_random_ua()}, max_age=-1) json_parser = json.loads(resp.text) return resolver_proxy.get_stream_youtube(plugin, json_parser['videoId'], False)
def get_video_url_news_videos(plugin, item_id, video_url, download_mode=False, video_label=None, **kwargs): resp = urlquick.get(video_url) root = resp.parse() url_video_resolver = root.find(".//iframe[@class='js-frame-lazed']").get( 'data-url') # print 'url_video_resolver value : ' + url_video_resolver # Case Youtube if 'youtube' in url_video_resolver: video_id = re.compile(r'www.youtube.com/embed/(.*?)$').findall( url_video_resolver)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode, video_label) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile(r'embed/video/(.*?)$').findall( url_video_resolver)[0] return resolver_proxy.get_stream_dailymotion(plugin, video_id, download_mode, video_label) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile('www.facebook.com/allocine/videos/(.*?)/' ).findall(url_video_resolver)[0] # print 'video_id facebook ' + video_id return resolver_proxy.get_stream_facebook(plugin, video_id, download_mode, video_label) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile(r'player.vimeo.com/video/(.*?)$').findall( url_video_resolver)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode, video_label) # TO DO ? (return an error) else: return False
def get_live_url(plugin, item_id, video_id, **kwargs): resp = urlquick.get(URL_ROOT % item_id) root = resp.parse() if root.find(".//section[@id='block-block-2']") is not None: live_url = root.find(".//section[@id='block-block-2']").findall( './/a')[0].get('href') else: live_url = root.find(".//section[@id='block-block-4']").findall( './/a')[0].get('href') live_html = urlquick.get(live_url) live_id_channel = re.compile('www.youtube.com/embed/(.*?)\"').findall( live_html.text)[1] live_youtube_html = urlquick.get('https://www.youtube.com/embed/' + live_id_channel) live_id = re.compile('\'VIDEO_ID\'\: \"(.*?)\"').findall( live_youtube_html.text)[0] return resolver_proxy.get_stream_youtube(plugin, live_id, False)
def get_video_url(plugin, item_id, video_url, download_mode=False, **kwargs): resp = urlquick.get(video_url) root = resp.parse() stream_datas = root.find('.//iframe').get('src') # Case Youtube if 'youtube' in stream_datas: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]').findall( stream_datas)[0] return resolver_proxy.get_stream_youtube(plugin, video_id, download_mode) # Case Vimeo elif 'vimeo' in stream_datas: video_id = re.compile('player.vimeo.com/video/(.*?)[\?\"]').findall( stream_datas)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode) else: # Add Notification return False
def get_video_url(plugin, item_id, video_id, download_mode=False, video_label=None): """Get video URL and start video player""" video_json = urlquick.get(URL_API_MEDIA % (video_id, PARTNER)).text video_json_parser = json.loads(video_json) # print(repr(video_json_parser)) desired_quality = Script.setting.get_string('quality') if 'media' not in video_json_parser: return False final_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 = xbmcgui.Dialog().select( plugin.localize(LABELS['choose_video_quality']), all_datas_videos_quality) if seleted_item == -1: return False final_url = all_datas_videos_path[seleted_item] elif desired_quality == "BEST": for media in video_json_parser["media"]["rendition"]: final_url = media["href"] else: for media in video_json_parser["media"]["rendition"][0]: final_url = media["href"] if requests.get(final_url, stream=True).status_code == 404: label = plugin.localize(LABELS['Video stream no longer exists']) Script.notify(label, label) return False if download_mode: return download.download_video(final_url, video_label) return final_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 = urlquick.get(url_video_embeded).text 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(r'www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_youtube( plugin, video_id, download_mode, video_label) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile(r'embed/video/(.*?)[\"\?]').findall( url_video_resolver)[0] return resolver_proxy.get_stream_dailymotion( plugin, video_id, download_mode, video_label) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile('www.facebook.com/allocine/videos/(.*?)/' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_facebook( plugin, video_id, download_mode, video_label) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile('player.vimeo.com/video/(.*?)[\?\"]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode, video_label) # TO DO ? (return an error) else: return False else: # Case Youtube if 'youtube' in url_video_embeded: video_id = re.compile('www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_embeded)[0] return resolver_proxy.get_stream_youtube( plugin, video_id, download_mode, video_label) # TO DO ? (return an error) else: return False
def get_video_url(plugin, item_id, video_url, download_mode=False, loop=1, **kwargs): """Get video URL and start video player""" resp = urlquick.get(video_url, max_age=-1) root = resp.parse() if root.find(".//figure[@class='player player-auto-play js-player']" ) is not None: stream_datas_json = root.find( ".//figure[@class='player player-auto-play js-player']").get( 'data-model') json_parser = json.loads(stream_datas_json) final_url = '' if 'high' in json_parser["videos"][0]["sources"]: final_url = 'https:' + json_parser["videos"][0]["sources"]["high"] elif 'medium' in json_parser["videos"][0]["sources"]: final_url = 'https:' + json_parser["videos"][0]["sources"]["medium"] else: final_url = json_parser["videos"][0]["sources"]["standard"] if download_mode: return download.download_video(final_url) return final_url elif root.find( ".//div[@class='card entity-card entity-card-overview entity-card-list cf']" ) is not None: if loop == 1: # prevent infinite recursion resp2 = urlquick.get(video_url) root2 = resp2.parse( "div", attrs={ "class": "card entity-card entity-card-overview entity-card-list cf" }) video_url2 = URL_ROOT + unobfuscated( root2.find('.//figure/span').get('class')) return get_video_url(plugin, item_id, video_url2, loop=2) elif root.find( ".//div[@class='card entity-card entity-card-overview entity-card-list cf ']" ) is not None: if loop == 1: # prevent infinite recursion resp2 = urlquick.get(video_url) root2 = resp2.parse( "div", attrs={ "class": "card entity-card entity-card-overview entity-card-list cf " }) video_url2 = URL_ROOT + unobfuscated( root2.find('.//figure/span').get('class')) return get_video_url(plugin, item_id, video_url2, loop=2) elif root.find(".//div[@class='more-overlay-item social-export light']" ) is not None: stream_datas_json = root.find( ".//div[@class='more-overlay-item social-export light']").get( 'data-model') print(repr(stream_datas_json)) json_parser = json.loads(stream_datas_json) if 'code' in json_parser["videos"][0]["sources"]: url_video_resolver = json_parser["videos"][0]["sources"]["code"] if 'youtube' in url_video_resolver: video_id = re.compile(r'www.youtube.com/embed/(.*?)[\?\"\&]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_youtube( plugin, video_id, download_mode) # Case DailyMotion elif 'dailymotion' in url_video_resolver: video_id = re.compile(r'embed/video/(.*?)[\"\?]').findall( url_video_resolver)[0] return resolver_proxy.get_stream_dailymotion( plugin, video_id, download_mode) # Case Facebook elif 'facebook' in url_video_resolver: video_id = re.compile( r'www.facebook.com/allocine/videos/(.*?)/').findall( url_video_resolver)[0] return resolver_proxy.get_stream_facebook( plugin, video_id, download_mode) # Case Vimeo elif 'vimeo' in url_video_resolver: video_id = re.compile(r'player.vimeo.com/video/(.*?)[\?\"]' ).findall(url_video_resolver)[0] return resolver_proxy.get_stream_vimeo(plugin, video_id, download_mode) plugin.notify(plugin.localize(30718), '') return False