def resolve(url): try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] url = url.replace(referer,'').replace('?referer=','').replace('&referer=','') except: referer = url id = re.findall('embed/(\d+)',url)[0] page = 'http://www.streamlive.to/embedplayer_new2.php?width=620&height=470&channel=%s&autoplay=true'%id result = client.request(page,headers={'referer':'http://www.streamlive.to', 'Content-type':'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host':'www.streamlive.to', 'User-agent':client.agent()}) log(result) token_url = re.compile('getJSON\("(.+?)"').findall(result)[0] if 'http' not in token_url: token_url = 'http:' + token_url r2 = client.request(token_url,referer=referer) token = json.loads(r2)["token"] file = re.compile('(?:[\"\'])?file(?:[\"\'])?\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace('.flv','') rtmp = re.compile('streamer\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace(r'\\','\\').replace(r'\/','/') app = re.compile('.*.*rtmp://[\.\w:]*/([^\s]+)').findall(rtmp)[0] url=rtmp + ' app=' + app + ' playpath=' + file + ' swfUrl=http://www.streamlive.to/ads/streamlive.swf flashver=' + constants.flash_ver() + ' live=1 timeout=15 token=' + token + ' swfVfy=1 pageUrl='+page return url except: return
def resolve(url): #try: s = requests.Session() ref = liveresolver_utils.remove_referer(url) result = s.get(url, headers={'User-agent': client.agent()}).text log(s.cookies)
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url id = urlparse.parse_qs(urlparse.urlparse(url).query)['id'][0] result = client.request('http://theactionlive.com/livegamecr.js', referer=referer) log(result) url = re.findall('.*\W(\w+.php).*', result)[0] page = 'http://theactionlive.com/' + url + '?id=' + id + '&width=620&height=490&stretching=' result = client.request(page, referer=referer) id = re.findall(".*id=['\"]([^\"']+).*", result)[0] result = client.request('http://biggestplayer.me/playercr.js', referer=page) url = re.findall('.*\W(\w+.php).*', result)[0] page2 = 'http://biggestplayer.me/' + url + '?id=' + id + '&width=620&height=490' result = client.request(page2, referer=page) url = re.findall('.*(http[^"\']+\.m3u8[^"\']*).*', result)[0] url += '|%s' % urllib.urlencode( { 'Referer': page2, 'User-agent': client.agent(), 'X-Requested-With': constants.get_shockwave() }) return url
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url try: channel = urlparse.parse_qs(urlparse.urlparse(url).query)['channel'][0] except: channel = re.compile('/embed/(\d+)&').findall(url)[0] page = 'http://www.iguide.to/embedplayer_new.php?width=700&height=410&channel=%s&autoplay=true' % channel log(page) headers = {'Host': 'www.iguide.to', 'Connection': 'keep-alive'} result = client.request(page, referer=referer, headers=headers) log(result) token_url = re.compile('\$.getJSON\("(.+?)", function\(json\){').findall( result)[0] token = json.loads(client.request(token_url, referer=referer))['token'] file = re.compile('(?:\'|\")?file(?:\'|\")?\s*:\s*(?:\'|\")(.+?)(?:\'|\")' ).findall(result)[0].replace('.flv', '') rtmp = re.compile( '(?:\'|\")?streamer(?:\'|\")?\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall( result)[0].replace(r'\\', '\\').replace(r'\/', '/') app = re.compile('.*.*rtmp://[\.\w:]*/([^\s]+)').findall(rtmp)[0] url = rtmp + ' playpath=' + file + ' swfUrl=http://www.iguide.to/player/secure_player_iguide_token.swf flashver=' + constants.flash_ver( ) + ' live=1 timeout=15 token=' + token + ' swfVfy=1 pageUrl=' + page return url
def resolve(url): #try: s = requests.Session() ref = liveresolver_utils.remove_referer(url) result = s.get(url, headers={'User-agent':client.agent()}).text log(s.cookies)
def resolve(url): #try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] headers = { 'Referer': referer, 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Content-Type' :'application/x-www-form-urlencoded', 'Connection' : 'keep-alive', 'Host' : 'www.zoomtv.me', 'Origin' : urlparse.urlparse(referer).netloc, 'User-Agent' : client.agent() } fid = urlparse.parse_qs(urlparse.urlparse(url).query)['v'][0] pid = urlparse.parse_qs(urlparse.urlparse(url).query)['pid'][0] url = 'http://www.zoomtv.me/embed.php?v=%s&vw=650&vh=450'%fid pageUrl = url #get desktop stream #headers.update({ 'User-Agent' : 'Apple-iPhone/701.341' }) post_data = urllib.urlencode({'uagent':'Apple-iPhone/701.341', 'pid':pid}) result = req(url,post_data,headers) log(result) rtmp = re.findall('.*[^\w](\w+)\s*=.{0,20}(rtmp[^\']*).*(?:streamer.{0,20}\1).*',result)[0] #for HQ links(no rtmp) if rtmp is None: return streamer + '|%s' % urllib.urlencode({'user-agent':client.agent(),'Referer':referer}) url = rtmp + ' playpath=' + file + ' swfUrl=http://static.zoomtv.me/player/jwplayer.6.7.4.swf flashver=' +constants.flash_ver() + ' conn=S:' + file + ' conn=S:'+ts+' conn=S:'+sg+' conn=S:'+auth+' live=1 timeout=15 token=H69d331eccdf347b swfVfy=1 pageUrl=' + pageUrl return url
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url try: channel = urlparse.parse_qs(urlparse.urlparse(url).query)['channel'][0] except: channel = re.compile('/embed/(\d+)&').findall(url)[0] page = 'http://www.iguide.to/embedplayer_new.php?width=700&height=410&channel=%s&autoplay=true' % channel log(page) headers = {'Host':'www.iguide.to','Connection':'keep-alive'} result = client.request(page, referer=referer,headers = headers) log(result) token_url =re.compile('\$.getJSON\("(.+?)", function\(json\){').findall(result)[0] token = json.loads(client.request(token_url, referer=referer))['token'] file = re.compile('(?:\'|\")?file(?:\'|\")?\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace('.flv','') rtmp = re.compile('(?:\'|\")?streamer(?:\'|\")?\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace(r'\\','\\').replace(r'\/','/') app = re.compile('.*.*rtmp://[\.\w:]*/([^\s]+)').findall(rtmp)[0] url=rtmp + ' playpath=' + file + ' swfUrl=http://www.iguide.to/player/secure_player_iguide_token.swf flashver=' + constants.flash_ver() + ' live=1 timeout=15 token=' + token + ' swfVfy=1 pageUrl='+page return url
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url result = client.request(url, referer=referer) log(result) return url
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url url = liveresolver_utils.remove_referer(url) result = client.request(url, referer=referer) log(result) return url
def resolve(url): try: url = url.replace('/true/default', '') channel = re.compile('[/v/|/view#|/widget#]([\w]+)').findall(url)[-1] url = 'http://veetle.com/index.php/stream/ajaxStreamLocation/%s/android-hls' % channel result = client.request(url, mobile=True) log(result) url = json.loads(result) url = url['payload'] return url except: return
def resolve(url): #try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] page = url.replace(referer, '').replace('&referer=', '').replace('referer=', '') result = client.request(page, referer=referer) result = decryptionUtils.doDemystify(result) log(result) rtmp = re.findall('.*(?:file|streamer|hestia):\s*["\']([^\'"]+).*',result)[0] rtmp=rtmp.replace('rtmpe://l.mybeststream.xyz/r/','') url='rtmpe://l.mybeststream.xyz/r/'+ rtmp + ' swfUrl=http://mybeststream.xyz/jwplayer.flash.swf swfsize=61916 swfhash=e54728508e787f43cd472ef9ba2e514e2eca3f0679b3782206a3808b8d89b164 token=c.r.e.a.t.e.S.t. flashver=' + constants.flash_ver() + ' live=1 timeout=15 swfVfy=1 pageUrl=' + page return url
def resolve(url): try: url = url.replace('/true/default','') channel = re.compile('[/v/|/view#|/widget#]([\w]+)').findall(url)[-1] url = 'http://veetle.com/index.php/stream/ajaxStreamLocation/%s/android-hls' % channel result = client.request(url, mobile=True) log(result) url = json.loads(result) url = url['payload'] return url except: return
def login(cookies, post_data): log('Streamlive: Making new login token.') cj = client.request('http://www.streamlive.to/login.php', post=post_data, headers={ 'referer': 'http://www.streamlive.to/login', 'Content-type': 'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host': 'www.streamlive.to', 'User-agent': client.agent() }, cj=cookies, output='cj') return cj
def resolve(url): try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer=url page = url result = client.request(page, referer=referer) id = re.findall('.*ustream.vars.(?:channelId|cId)=([^;]+).*',result)[0] #url = 'http://uhs-akamai.ustream.tv/sjc/sjc-uhs10/streams/httpflv/ustreamVideo/%s/streams/playlist.m3u8'%id url = 'http://iphone-streaming.ustream.tv/uhls/' + id + '/streams/live/iphone/playlist.m3u8' return url except: log('Ustream: Resolver failed') return
def resolve(url): try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] headers = { 'referer': referer, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Host': 'www.zoomtv.me', 'Origin': urlparse.urlparse(referer).netloc, 'User-Agent': 'Apple-iPhone/701.341' } fid = urlparse.parse_qs(urlparse.urlparse(url).query)['v'][0] pid = urlparse.parse_qs(urlparse.urlparse(url).query)['pid'][0] url = 'http://www.zoomtv.me/embed.php?v=%s&vw=650&vh=450' % fid pageUrl = url #get desktop stream headers.update({'User-Agent': 'Apple-iPhone/701.341'}) post_data = urllib.urlencode({ 'uagent': 'Apple-iPhone/701.341', 'pid': pid }) result = req(url, post_data, headers) rtmp = re.findall( '.*[^\w](\w+)\s*=.{0,20}(rtmp[^\']*).*(?:streamer.{0,20}\1).*', result)[0] log(rtmp) #for HQ links(no rtmp) if rtmp is None: return streamer + '|%s' % urllib.urlencode( { 'user-agent': client.agent(), 'Referer': referer }) url = rtmp + ' playpath=' + file + ' swfUrl=http://static.zoomtv.me/player/jwplayer.6.7.4.swf flashver=' + constants.flash_ver( ) + ' conn=S:' + file + ' conn=S:' + ts + ' conn=S:' + sg + ' conn=S:' + auth + ' live=1 timeout=15 token=H69d331eccdf347b swfVfy=1 pageUrl=' + pageUrl return url except: return
def resolve(url): try: page = url user,passw = addon.get_setting('streamlive_user'),addon.get_setting('streamlive_pass') try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] url = url.replace(referer,'').replace('?referer=','').replace('&referer=','') except: referer = url session = start_session() post_data = 'username=%s&password=%s&accessed_by=web&submit=Login'%(user,passw) resp = session.post('http://www.streamlive.to/login.php', data=post_data, headers = {'referer':'http://www.streamlive.to/login', 'Content-type':'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host':'www.streamlive.to', 'User-agent':client.agent()}) if resp.status_code!=200: addon.show_small_popup(title='Streamlive.to', msg='Failed to login') result = session.get(url).text if '"na_msg">This channel is a Premium channel.<' in result: addon.show_small_popup(title='Streamlive.to', msg='Premium channel. Upgrade your account to watch it!') return html = result if 'captcha' in html: try: answer = re.findall('Question\:.+?\:(.+?)<',html)[0].strip() except: answer = eval(re.findall('Question\:(.+?)<',html)[0].replace('=?','')) post = urllib.urlencode({"captcha":answer}) html = session.post(page, data=post, headers={'referer':referer, 'Content-type':'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host':'www.streamlive.to'}).text result = html token_url = re.compile('getJSON\("(.+?)"').findall(result)[0] r2 = client.request(token_url,referer=referer) token = json.loads(r2)["token"] log(result) file = re.compile('file\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace('.flv','') rtmp = re.compile('streamer\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall(result)[0].replace(r'\\','\\').replace(r'\/','/') app = re.compile('.*.*rtmp://[\.\w:]*/([^\s]+)').findall(rtmp)[0] url=rtmp + ' app=' + app + ' playpath=' + file + ' swfUrl=http://www.streamlive.to/ads/streamlive.swf flashver=WIN\\2019,0,0,226 live=1 timeout=15 token=' + token + ' swfVfy=1 pageUrl='+page return url except: return
def resolve(url): try: try: referer = urlparse.parse_qs( urlparse.urlparse(url).query)['referer'][0] url = url.replace(referer, '').replace('?referer=', '').replace('&referer=', '') except: referer = url id = re.findall('embed/(\d+)', url)[0] page = 'http://www.streamlive.to/embedplayer_new2.php?width=620&height=470&channel=%s&autoplay=true' % id result = client.request(page, headers={ 'referer': 'http://www.streamlive.to', 'Content-type': 'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host': 'www.streamlive.to', 'User-agent': client.agent() }) log(result) token_url = re.compile('getJSON\("(.+?)"').findall(result)[0] if 'http' not in token_url: token_url = 'http:' + token_url r2 = client.request(token_url, referer=referer) token = json.loads(r2)["token"] file = re.compile( '(?:[\"\'])?file(?:[\"\'])?\s*:\s*(?:\'|\")(.+?)(?:\'|\")' ).findall(result)[0].replace('.flv', '') rtmp = re.compile('streamer\s*:\s*(?:\'|\")(.+?)(?:\'|\")').findall( result)[0].replace(r'\\', '\\').replace(r'\/', '/') app = re.compile('.*.*rtmp://[\.\w:]*/([^\s]+)').findall(rtmp)[0] url = rtmp + ' app=' + app + ' playpath=' + file + ' swfUrl=http://www.streamlive.to/ads/streamlive.swf flashver=' + constants.flash_ver( ) + ' live=1 timeout=15 token=' + token + ' swfVfy=1 pageUrl=' + page return url except: return
def resolve(url): #try: result = client.request(url) log(result) urls = re.findall('<i?frame.+?src=(?:\'|\")(.+?)(?:\'|\")',result) for url in urls: if 'player' in url and 'advert' not in url: rr = url break result = client.request(rr) log(result) pom = re.findall('.*?url:\s[\'"](\/\/streamaccess\.unas\.tv[^\'"]+\" \+ label \+ \"[^\'"]+).*?', result)[0].replace('" + label + "','laola1tv') result = client.request('http:' +pom, referer='http://www.laola1.tv/swf/videoplayer.swf?r=20150305', mobile=True) auth,url = re.findall('.*?auth="([^\'"]+)"\s*url="([^\'"]+)".*?',result)[0] url = url + '?hdnea='+ auth return url
def resolve(url): #try: s = requests.Session() try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer= url ref = liveresolver_utils.remove_referer(url) result = s.get(url, headers={'Referer':referer,'User-agent':client.agent()}).text log(result) curl = re.findall('curl\s*=\s*[\"\']([^\"\']+)',result)[0] url = base64.b64decode(curl) token = json.loads(s.get('http://bro.adcast.tech/getToken.php').text)['token'] url+=token url+='|%s' % urllib.urlencode({'User-agent':client.agent(),'Referer':ref,'X-Requested-With':constants.get_shockwave(),'Host':urlparse.urlparse(url).netloc}) return url
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url id = urlparse.parse_qs(urlparse.urlparse(url).query)['id'][0] result = client.request('http://theactionlive.com/livegamecr.js', referer=referer) log(result) url = re.findall('.*\W(\w+.php).*',result)[0] page='http://theactionlive.com/'+url+'?id='+id+'&width=620&height=490&stretching=' result = client.request(page, referer=referer) id=re.findall(".*id=['\"]([^\"']+).*",result)[0] result = client.request('http://biggestplayer.me/playercr.js', referer=page) url = re.findall('.*\W(\w+.php).*',result)[0] page2='http://biggestplayer.me/'+url+'?id='+id+'&width=620&height=490' result = client.request(page2, referer=page) url=re.findall('.*(http[^"\']+\.m3u8[^"\']*).*',result)[0] url+='|%s' % urllib.urlencode({'Referer':page2, 'User-agent':client.agent(), 'X-Requested-With':constants.get_shockwave()}) return url
def resolve(url): try: try: cid = urlparse.parse_qs(urlparse.urlparse(url).query)['cid'][0] except: cid = re.compile('channel/(.+?)(?:/|$)').findall(url)[0] try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer='http://castalba.tv' url = 'http://castalba.tv/embed.php?cid=%s&wh=600&ht=380&r=%s'%(cid,urlparse.urlparse(referer).netloc) pageUrl=url result = client.request(url, referer=referer,mobile=True) result = decryptionUtils.doDemystify(result) result=urllib.unquote(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) if 'm3u8' in result: url = re.compile('(?:var\s*)?file.+?\s*=\s*(?:unescape\()[\'\"](.+?)[\'\"]').findall(result)[-1] url = 'http://' + url + '.m3u8' url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': url,'X-Requested-With':constants.get_shockwave()}) log("Castalba: Found m3u8 url: " + url) else: try: filePath = re.compile("'file'\s*:\s*(?:unescape\()?'(.+?)'").findall(result)[0] except: file = re.findall('(?:var\s*)?file\s*=\s*(?:unescape\()?(?:\'|\")(.+?)(?:\'|\")',result)[-1] try: file2 = re.findall("'file':\s*unescape\(file\)\s*\+\s*unescape\('(.+?)'\)",result)[0] filePath = file+file2 except: filePath = file swf = re.compile("'flashplayer'\s*:\s*\"(.+?)\"").findall(result)[0] sm = re.findall("'streamer':(.+?),",result)[0] strm_funcs = re.findall('function\s*(.+?)\s*\{([^\}]+)',result,flags=re.DOTALL) for f in strm_funcs: if f[0] in ['(p,a,c,k,e,r)','()']: continue if '%s'%f[0] in sm: strm_func = f[1] break strm_func = re.sub('\s//[^;]+','',strm_func) streamer = 'rtmp://' + re.findall('.*["\'/](\d{1,3}\.\d{1,3}\.\d{1,3}\.[^"\'/]+)["\'/]',strm_func)[0] + '/live' streamer = streamer.replace('///','//') url = streamer + ' playpath=' + filePath +' swfUrl=' + swf + ' flashver=' + constants.flash_ver() +' live=true timeout=15 swfVfy=true pageUrl=' + pageUrl log("Castalba: Found rtmp link: " + url) return url except: log("Castalba: Resolver failed. Returning...") return
def resolve(url): try: try: cid = urlparse.parse_qs(urlparse.urlparse(url).query)['cid'][0] except: cid = re.compile('channel/(.+?)(?:/|$)').findall(url)[0] try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer='http://castalba.tv' url = 'http://castalba.tv/embed.php?cid=%s&wh=600&ht=380&r=%s'%(cid,urlparse.urlparse(referer).netloc) pageUrl=url result = client.request(url, referer=referer,mobile=True) result=urllib.unquote(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) if 'm3u8' in result: url = re.compile('file.+?\s*=\s*(?:unescape\()[\'\"](.+?)[\'\"]').findall(result)[0] url = 'http://' + url + '.m3u8' url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': referer}) log("Castalba: Found m3u8 url: " + url) else: try: filePath = re.compile("'file'\s*:\s*(?:unescape\()?'(.+?)'").findall(result)[0] except: file = re.findall('var file\s*=\s*(?:unescape\()?(?:\'|\")(.+?)(?:\'|\")',result)[0] try: file2 = re.findall("'file':\s*unescape\(file\)\s*\+\s*unescape\('(.+?)'\)",result)[0] filePath = file+file2 except: filePath = file swf = re.compile("'flashplayer'\s*:\s*\"(.+?)\"").findall(result)[0] strm_func = re.findall('function streamer\(\)\s*\{([^\{]+)',result)[0] strm_func = re.sub('\s//[^;]+','',strm_func) streamer = re.findall('return\s*([^;]+)',strm_func)[0] for v in var_dict.keys(): streamer = streamer.replace(v,var_dict[v]) streamer = streamer.replace('"','').replace("'",'').replace('+','').strip() url = streamer.replace('///','//') + ' playpath=' + filePath +' swfUrl=' + swf + ' flashver=' + constants.flash_ver() +' live=true timeout=15 swfVfy=1 pageUrl=' + pageUrl log("Castalba: Found rtmp link: " + url) return url except: log("Castalba: Resolver failed. Returning...") return
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer=url id = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] cj = get_cj() url = 'http://www.finecast.tv/embed4.php?u=%s&vw=640&vh=450'%id rs = client.request(url,referer=referer,cj=cj) sitekey = re.findall('data-sitekey="([^"]+)', rs)[0] token = recaptcha_v2.UnCaptchaReCaptcha().processCaptcha(sitekey, lang='de') #1:04 result =client.request (url, post=urllib.urlencode(token),referer=referer) log(result) file = re.findall('[\'\"](.+?.stream)[\'\"]',result)[0] auth = re.findall('[\'\"](\?wmsAuthSign.+?)[\'\"]',result)[0] rtmp = 'http://play.finecast.tv:1935/live/%s/playlist.m3u8%s'%(file,auth) return rtmp
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = url id = urlparse.parse_qs(urlparse.urlparse(url).query)['u'][0] cj = get_cj() url = 'http://www.finecast.tv/embed4.php?u=%s&vw=640&vh=450' % id rs = client.request(url, referer=referer, cj=cj) sitekey = re.findall('data-sitekey="([^"]+)', rs)[0] token = recaptcha_v2.UnCaptchaReCaptcha().processCaptcha(sitekey, lang='de') #1:04 result = client.request(url, post=urllib.urlencode(token), referer=referer) log(result) file = re.findall('[\'\"](.+?.stream)[\'\"]', result)[0] auth = re.findall('[\'\"](\?wmsAuthSign.+?)[\'\"]', result)[0] rtmp = 'http://play.finecast.tv:1935/live/%s/playlist.m3u8%s' % (file, auth) return rtmp
def resolve(url): try: if '/vod/' in url: url = re.compile('/(\d+)').findall(url)[-1] url = 'http://www.filmon.com/vod/info/%s' % url elif '/tv/' in url: url = url.replace('/tv/', '/channel/') elif not '/channel/' in url: raise Exception() headers = {'X-Requested-With': 'XMLHttpRequest'} log('Filmon: Getting cookie...') cookie = client.request(url, output='cookie') log('Filmon: Getting channel id...') cid = client.request(url, headers=headers) cid = json.loads(cid)['id'] headers = {'X-Requested-With': 'XMLHttpRequest', 'Referer': url} url = 'http://www.filmon.com/ajax/getChannelInfo?channel_id=%s' % cid log('Filmon: Getting streams...') result = client.request(url, cookie=cookie, headers=headers) result = json.loads(result) try: result = result['streams'] except: result = result['data']['streams'] result = [i[1] for i in result.items()] log('Filmon: Selecting stream url...') url = [(i['url'], int(i['watch-timeout'])) for i in result] url = [i for i in url if '.m3u8' in i[0]] url.sort() url = url[-1][0] return url except: return
def resolve(url): try: try: cid = urlparse.parse_qs(urlparse.urlparse(url).query)['cid'][0] except: cid = re.compile('channel/(.+?)(?:/|$)').findall(url)[0] try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer='http://castalba.tv' url = 'http://castalba.tv/embed.php?cid=%s&wh=600&ht=380&r=%s'%(cid,urlparse.urlparse(referer).netloc) pageUrl=url result = client.request(url, referer=referer) result=urllib.unquote(result) if 'm3u8' in result: url = re.compile('filez\s*=\s*(?:unescape\()\'(.+?)\'').findall(result)[0] url = 'http://' + url + '.m3u8' url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': referer}) log("Castalba: Found m3u8 url: " + url) else: try: filePath = re.compile("'file'\s*:\s*(?:unescape\()?'(.+?)'").findall(result)[0] except: file = re.findall('var file\s*=\s*(?:unescape\()?(?:\'|\")(.+?)(?:\'|\")',result)[0] try: file2 = re.findall("'file':\s*unescape\(file\)\s*\+\s*unescape\('(.+?)'\)",result)[0] filePath = file+file2 except: filePath = file swf = re.compile("'flashplayer'\s*:\s*\"(.+?)\"").findall(result)[0] try: streamer=re.findall('streamer\(\)\s*\{\s*return \'(.+?)\';\s*\}',result)[0] if 'rtmp' not in streamer: streamer = 'rtmp://' + streamer except: try: streamer = re.compile("var sts\s*=\s*'(.+?)'").findall(result)[0] except: streamer=re.findall('streamer\(\)\s*\{\s*return \'(.+?)\';\s*\}',result)[0] url = streamer.replace('///','//') + ' playpath=' + filePath +' swfUrl=' + swf + ' flashver=WIN\\2020,0,0,286 live=true timeout=15 swfVfy=1 pageUrl=' + pageUrl log("Castalba: Found rtmp link: " + url) return url except: log("Castalba: Resolver failed. Returning...") return
def resolve(url): #try: try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = 'http://zerocast.tv/channels' if 'chan=' in url: result = client.request(url, referer=referer) log(result) log('banana') url = re.findall('<script\stype=[\'"]text/javascript[\'"]\ssrc=[\'"](.+?)[\'"]>', result)[0] log('bina2') r = re.findall('.+?a=([0-9]+)', url)[0] url = 'http://zerocast.tv/embed.php?a=%s&id=&width=640&height=480&autostart=true&strech=exactfit' % r result = client.request(url, referer=referer) unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked r = re.findall('curl\s*=\s*[\'"](.+?)[\'"]', result) r += re.findall('file\s*:\s*["\'](.+?)["\']', result) r = r[0].decode('base64', 'strict') #if r.startswith('rtmp'): # return '%s pageUrl=%s live=1 swfUrl=http://p.jwpcdn.com/6/12/jwplayer.flash.swf flashver=' % (r, url) + constants.flash_ver() + ' swfVfy=1 timeout=10' if '.m3u8' in r: chunk = client.request(r) chunk = re.compile('(chunklist_.+)').findall(chunk)[0] url = r.split('.m3u8')[0].rsplit('/', 1)[0] + '/' + chunk url += '|%s' % urllib.urlencode({'User-Agent': client.agent()}) return url
def resolve(url): try: page = re.compile('//(.+?)/(?:embed|v)/([0-9a-zA-Z-_]+)').findall(url)[0] try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = page try: host = urlparse.parse_qs(urlparse.urlparse(url).query)['host'][0] except: host = 'www.sawlive.tv' page = 'http://sawlive.tv/embed/%s' % (page[1]) headers={'User-Agent': client.agent(),'Host': host, 'Referer': referer, 'Connection': 'keep-alive'} result = client.request(page, referer=referer, headers = headers) unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = decryptionUtils.doDemystify(result) result = urllib.unquote_plus(result) r2 = result resul = None try: url = client.parseDOM(result, 'iframe', ret='src')[-1] except: result = unpacked try: url = client.parseDOM(result, 'iframe', ret='src')[-1] var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) for v in var_dict.keys(): url = url.replace(v,var_dict[v]) url = url.replace('\'','').replace('\"','').replace('+','').replace(' ','') resul = client.request(url, headers = headers) except: pass if resul is None: aaa = r2.replace('var ','').replace('\' ','\' +').replace(' \'','+ \'') aaa = aaa.replace('document.write(','result =').replace('\');','\'') aaa = re.sub('function.+?\(\)[^}]+}\s*','',aaa) aaa = re.sub('=([^\'\"\s]+)\s*([^\'\";]+);',r'=\1+\2;',aaa) aaa = aaa.replace('"\' +swidth+ \'"','') aaa = aaa.replace('"\' +sheight+ \'"','') aaa = re.sub('([^+])\s([^+])',r'\1+\2',aaa) exec(aaa) result = urllib.unquote_plus(result) url = client.parseDOM(result, 'iframe', ret='src')[-1] result = client.request(url, headers = headers) else: result = resul unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = urllib.unquote_plus(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) rplcs = re.findall(';.+?=(.+?).replace\([\"\'](.+?)[\"\']\s*,\s*[\"\']([^\"\']*)[\"\']',result) var_dict = dict(var) file = re.compile("'file'\s*(.+?)\)").findall(result)[0] file = file.replace('\'','') for v in var_dict.keys(): file = file.replace(v,var_dict[v]) file = file.replace('+','').replace(',','').strip().replace(' ', '') log("Sawlive: Found file url: " + file) if 'f4m' in file: return file try: log("Sawlive: Finding m3u8 link.") if not file.startswith('http'): raise Exception() url = client.request(file, output='geturl') if not '.m3u8' in url: raise Exception() url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': file}) log("Sawlive: Found m3u8 link: " + url) return url except: log("Sawlive: m3u8 link not found, finding rtmp.") pass strm = re.compile("'streamer'\s*(.+?)\)").findall(result)[0] strm = strm.replace('\'','') for v in var_dict.keys(): strm = strm.replace(v,var_dict[v]) strm = strm.replace('+','').replace(',','').strip().replace(' ', '') swf = re.compile("SWFObject\('(.+?)'").findall(result)[0].replace(' ', '') url = '%s playpath=%s swfUrl=%s pageUrl=%s live=1 timeout=60' % (strm, file, swf, url) url = urllib.unquote(url).replace('unescape(','') for r in rplcs: url = url.replace(r[1],r[2]) log("Sawlive: rtmp link found: " + url) return url except Exception as e: log("Sawlive exception:\n" + str(e)) log("Sawlive: Resolver failed. Returning...") return
def login(cookies,post_data): log('Streamlive: Making new login token.') cj = client.request('http://www.streamlive.to/login.php', post=post_data, headers = {'referer':'http://www.streamlive.to/login', 'Content-type':'application/x-www-form-urlencoded', 'Origin': 'http://www.streamlive.to', 'Host':'www.streamlive.to', 'User-agent':client.agent()},cj=cookies,output='cj') return cj
def resolve(url): try: page = re.compile('//(.+?)/(?:embed|v)/([0-9a-zA-Z-_]+)').findall(url)[0] page = 'http://%s/embed/%s' % (page[0], page[1]) try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = page try: host = urlparse.parse_qs(urlparse.urlparse(url).query)['host'][0] except: host = 'sawlive.tv' headers={'User-Agent': client.agent(),'Host': host, 'Referer': referer, 'Connection': 'keep-alive'} result = client.request(page, referer=referer) result = decryptionUtils.doDemystify(result) url = client.parseDOM(result, 'iframe', ret='src')[-1] url = url.replace(' ', '').replace('+','') var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) for i in range(100): for v in var: result = result.replace(" %s " % v[0], ' %s '%v[1]) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) for v in var: if '+' in v[1]: ss = v[1].rstrip('+').replace('"+','').split('+') sg = v[1].rstrip('+').replace('"+','') for s in ss: sg = sg.replace(s, var_dict[s]) var_dict[v[0]]=sg.replace('+','') for i in range(100): for v in var_dict.keys(): url = url.replace("'%s'" % v, var_dict[v]) for v in var_dict.keys(): url = url.replace("(%s)" % v, "(%s)" % var_dict[v]) result = client.request(url, headers = headers) result = decryptionUtils.doDemystify(result) file = re.compile("'file'.+?'(.+?)'").findall(result)[0] log("Sawlive: Found file url: " + file) try: log("Sawlive: Finding m3u8 link.") if not file.startswith('http'): raise Exception() url = client.request(file, output='geturl') if not '.m3u8' in url: raise Exception() url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': file}) log("Sawlive: Found m3u8 link: " + url) return url except: log("Sawlive: m3u8 link not found, finding rtmp.") pass strm = re.compile("'streamer'.+?'(.+?)'").findall(result)[0] swf = re.compile("SWFObject\('(.+?)'").findall(result)[0] url = '%s playpath=%s swfUrl=%s pageUrl=%s live=1 timeout=30' % (strm, file, swf, url) url = urllib.unquote(url) log("Sawlive: rtmp link found: " + url) return url except Exception as e: log("Sawlive exception:\n" + str(e)) log("Sawlive: Resolver failed. Returning...") return
def resolve(url): try: page = re.compile('//(.+?)/(?:embed|v)/([0-9a-zA-Z-_]+)').findall(url)[0] try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = page try: host = urlparse.parse_qs(urlparse.urlparse(url).query)['host'][0] except: host = 'www.sawlive.tv' page = 'http://sawlive.tv/embed/%s' % (page[1]) headers={'User-Agent': client.agent(),'Host': host, 'Referer': referer, 'Connection': 'keep-alive'} result = client.request(page, referer=referer, headers = headers) unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = urllib.unquote_plus(result) r2 = result resul = None try: url = client.parseDOM(result, 'iframe', ret='src')[-1] except: result = unpacked try: url = client.parseDOM(result, 'iframe', ret='src')[-1] var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) for v in var_dict.keys(): url = url.replace(v,var_dict[v]) url = url.replace('\'','').replace('\"','').replace('+','').replace(' ','') resul = client.request(url, headers = headers) except: pass if resul is None: #aaa = r2.replace('var ','').replace('\' ','\' +').replace(' \'','+ \'') aaa = r2.replace('document.write(',' var result =').replace('\');','\'') aaa = aaa.replace('"\' +swidth+ \'"','') aaa = aaa.replace('"\' +sheight+ \'"','') aaa = re.sub('([^+\s])\s([^+\s])',r'\1+\2',aaa) aaa = aaa.replace('function+','function ') aaa = aaa.replace('var+','var ') aaa = aaa.replace('result+','result ') import js2py context = js2py.EvalJs() context.swidth = '400' context.sheight = '400' context.execute(aaa) result = context.result result = urllib.unquote_plus(result) url = client.parseDOM(result, 'iframe', ret='src')[-1] result = client.request(url, headers = headers) else: result = resul unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = urllib.unquote_plus(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) rplcs = re.findall(';.+?=(.+?).replace\([\"\'](.+?)[\"\']\s*,\s*[\"\']([^\"\']*)[\"\']',result) var_dict = dict(var) file = re.compile("'file'\s*(.+?)\)").findall(result)[0] file = file.replace('\'','') for v in var_dict.keys(): file = file.replace(v,var_dict[v]) file = file.replace('+','').replace(',','').strip().replace(' ', '') log("Sawlive: Found file url: " + file) if 'f4m' in file: return file try: log("Sawlive: Finding m3u8 link.") if not file.startswith('http'): raise Exception() url = client.request(file, output='geturl') if not '.m3u8' in url: raise Exception() url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': file}) log("Sawlive: Found m3u8 link: " + url) return url except: log("Sawlive: m3u8 link not found, finding rtmp.") pass strm = re.compile("'streamer'\s*(.+?)\)").findall(result)[0] strm = strm.replace('\'','') for v in var_dict.keys(): strm = strm.replace(v,var_dict[v]) strm = strm.replace('+','').replace(',','').strip().replace(' ', '') swf = re.compile("SWFObject\('(.+?)'").findall(result)[0].replace(' ', '') url = '%s playpath=%s swfUrl=%s pageUrl=%s live=1 timeout=60' % (strm, file, swf, url) url = urllib.unquote(url).replace('unescape(','') for r in rplcs: url = url.replace(r[1],r[2]) log("Sawlive: rtmp link found: " + url) return url except Exception as e: log("Sawlive exception:\n" + str(e)) log("Sawlive: Resolver failed. Returning...") return
def resolve(url): try: page = re.compile('//(.+?)/(?:embed|v)/([0-9a-zA-Z-_]+)').findall(url)[0] page = 'http://%s/embed/%s' % (page[0], page[1]) try: referer = urlparse.parse_qs(urlparse.urlparse(url).query)['referer'][0] except: referer = page try: host = urlparse.parse_qs(urlparse.urlparse(url).query)['host'][0] except: host = 'sawlive.tv' headers={'User-Agent': client.agent(),'Host': host, 'Referer': referer, 'Connection': 'keep-alive'} result = client.request(page, referer=referer) unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = urllib.unquote_plus(result) rplcs = re.findall(';.+?=(.+?).replace\([\"\'](.+?)[\"\']\s*,\s*[\"\']([^\"\']*)[\"\']',result) url = client.parseDOM(result, 'iframe', ret='src')[-1] url = url.replace(' ', '').replace('+','') var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) for i in range(100): for v in var: result = result.replace(" %s " % v[0], ' %s '%v[1]) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) for v in var: if '+' in v[1]: ss = v[1].rstrip('+').replace('"+','').split('+') sg = v[1].rstrip('+').replace('"+','') for s in ss: sg = sg.replace(s, var_dict[s]) var_dict[v[0]]=sg.replace('+','') for i in range(100): for v in var_dict.keys(): url = url.replace("'%s'" % v, var_dict[v]) for v in var_dict.keys(): url = url.replace("(%s)" % v, "(%s)" % var_dict[v]) url = url.replace(' ', '').replace('+','').replace('"','').replace('\'','') for r in rplcs: url = url.replace(r[1],r[2]) result = client.request(url, headers = headers, mobile=True) unpacked = '' packed = result.split('\n') for i in packed: try: unpacked += jsunpack.unpack(i) except: pass result += unpacked result = urllib.unquote_plus(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) rplcs = re.findall(';.+?=(.+?).replace\([\"\'](.+?)[\"\']\s*,\s*[\"\']([^\"\']*)[\"\']',result) var_dict = dict(var) file = re.compile("'file'\s*(.+?)\)").findall(result)[0] file = file.replace('\'','') for v in var_dict.keys(): file = file.replace(v,var_dict[v]) file = file.replace('+','').replace(',','').strip().replace(' ', '') log("Sawlive: Found file url: " + file) if 'f4m' in file: return file try: log("Sawlive: Finding m3u8 link.") if not file.startswith('http'): raise Exception() url = client.request(file, output='geturl') if not '.m3u8' in url: raise Exception() url += '|%s' % urllib.urlencode({'User-Agent': client.agent(), 'Referer': file}) log("Sawlive: Found m3u8 link: " + url) return url except: log("Sawlive: m3u8 link not found, finding rtmp.") pass strm = re.compile("'streamer'\s*(.+?)\)").findall(result)[0] strm = strm.replace('\'','') for v in var_dict.keys(): strm = strm.replace(v,var_dict[v]) strm = strm.replace('+','').replace(',','').strip().replace(' ', '') swf = re.compile("SWFObject\('(.+?)'").findall(result)[0].replace(' ', '') url = '%s playpath=%s swfUrl=%s pageUrl=%s live=1 timeout=60' % (strm, file, swf, url) url = urllib.unquote(url).replace('unescape(','') for r in rplcs: url = url.replace(r[1],r[2]) log("Sawlive: rtmp link found: " + url) return url except Exception as e: log("Sawlive exception:\n" + str(e)) log("Sawlive: Resolver failed. Returning...") return
def resolve(url): try: try: cid = urlparse.parse_qs(urlparse.urlparse(url).query)['cid'][0] except: cid = re.compile('channel/(.+?)(?:/|$)').findall(url)[0] try: referer = urlparse.parse_qs( urlparse.urlparse(url).query)['referer'][0] except: referer = 'http://castalba.tv' url = 'http://castalba.tv/embed.php?cid=%s&wh=600&ht=380&r=%s' % ( cid, urlparse.urlparse(referer).netloc) pageUrl = url result = client.request(url, referer=referer) result = urllib.unquote(result) if 'm3u8' in result: url = re.compile('filez\s*=\s*(?:unescape\()\'(.+?)\'').findall( result)[0] url = 'http://' + url + '.m3u8' url += '|%s' % urllib.urlencode({ 'User-Agent': client.agent(), 'Referer': referer }) log("Castalba: Found m3u8 url: " + url) else: try: filePath = re.compile( "'file'\s*:\s*(?:unescape\()?'(.+?)'").findall(result)[0] except: file = re.findall( 'var file\s*=\s*(?:unescape\()?(?:\'|\")(.+?)(?:\'|\")', result)[0] try: file2 = re.findall( "'file':\s*unescape\(file\)\s*\+\s*unescape\('(.+?)'\)", result)[0] filePath = file + file2 except: filePath = file swf = re.compile("'flashplayer'\s*:\s*\"(.+?)\"").findall( result)[0] try: streamer = re.findall( 'streamer\(\)\s*\{\s*return \'(.+?)\';\s*\}', result)[0] if 'rtmp' not in streamer: streamer = 'rtmp://' + streamer except: try: streamer = re.compile("var sts\s*=\s*'(.+?)'").findall( result)[0] except: streamer = re.findall( 'streamer\(\)\s*\{\s*return \'(.+?)\';\s*\}', result)[0] url = streamer.replace( '///', '//' ) + ' playpath=' + filePath + ' swfUrl=' + swf + ' flashver=WIN\\2020,0,0,286 live=true timeout=15 swfVfy=1 pageUrl=' + pageUrl log("Castalba: Found rtmp link: " + url) return url except: log("Castalba: Resolver failed. Returning...") return
def resolve(url): try: page = re.compile('//(.+?)/(?:embed|v)/([0-9a-zA-Z-_]+)').findall( url)[0] page = 'http://%s/embed/%s' % (page[0], page[1]) try: referer = urlparse.parse_qs( urlparse.urlparse(url).query)['referer'][0] except: referer = page try: host = urlparse.parse_qs(urlparse.urlparse(url).query)['host'][0] except: host = 'sawlive.tv' headers = { 'User-Agent': client.agent(), 'Host': host, 'Referer': referer, 'Connection': 'keep-alive' } result = client.request(page, referer=referer) result = decryptionUtils.doDemystify(result) url = client.parseDOM(result, 'iframe', ret='src')[-1] url = url.replace(' ', '').replace('+', '') var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) for i in range(100): for v in var: result = result.replace(" %s " % v[0], ' %s ' % v[1]) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) for v in var: if '+' in v[1]: ss = v[1].rstrip('+').replace('"+', '').split('+') sg = v[1].rstrip('+').replace('"+', '') for s in ss: sg = sg.replace(s, var_dict[s]) var_dict[v[0]] = sg.replace('+', '') for i in range(100): for v in var_dict.keys(): url = url.replace("'%s'" % v, var_dict[v]) for v in var_dict.keys(): url = url.replace("(%s)" % v, "(%s)" % var_dict[v]) result = client.request(url, headers=headers) result = decryptionUtils.doDemystify(result) var = re.compile('var\s(.+?)\s*=\s*[\'\"](.+?)[\'\"]').findall(result) var_dict = dict(var) file = re.compile("'file'\s*(.+?)\)").findall(result)[0] file = file.replace('\'', '') for v in var_dict.keys(): file = file.replace(v, var_dict[v]) file = file.replace('+', '').replace(',', '').strip() log("Sawlive: Found file url: " + file) try: log("Sawlive: Finding m3u8 link.") if not file.startswith('http'): raise Exception() url = client.request(file, output='geturl') if not '.m3u8' in url: raise Exception() url += '|%s' % urllib.urlencode({ 'User-Agent': client.agent(), 'Referer': file }) log("Sawlive: Found m3u8 link: " + url) return url except: log("Sawlive: m3u8 link not found, finding rtmp.") pass strm = re.compile("'streamer'\s*(.+?)\)").findall(result)[0] strm = strm.replace('\'', '') for v in var_dict.keys(): strm = strm.replace(v, var_dict[v]) strm = strm.replace('+', '').replace(',', '').strip() swf = re.compile("SWFObject\('(.+?)'").findall(result)[0] url = '%s playpath=%s swfUrl=%s pageUrl=%s live=1 timeout=60' % ( strm, file, swf, url) url = urllib.unquote(url).replace('unescape(', '') log("Sawlive: rtmp link found: " + url) return url except Exception as e: log("Sawlive exception:\n" + str(e)) log("Sawlive: Resolver failed. Returning...") return