def find_murl(self, url): #url = 'https://www.olevod.com/index.php/vod/play/id/24986/sid/1/nid/76.html' ci = get_ci() murl = "" qnrwb = Queue() def nrwb(ci, msg): u = msg['params']['request']['url'] debug("Network.requestWillBeSent url", url) if 'master.m3u8' in u: debug("got master.m3u8", u) qnrwb.put(u) ci.reg("Network.requestWillBeSent", nrwb) try: ci.Page.navigate(url=url) murl = qnrwb.get(timeout=ci.get_to()) debug("murl = ", murl) return murl #except Exception as e: # echo("key_m3u8 out:", repr(e)) finally: ci.close()
def detail_key(self, url): ci = get_ci(debug()) qnrr = Queue() def nrr(ci, msg): url = msg['params']['response']['url'] if '/api/video/detail' in url: qnrr.put(msg['params']['requestId']) ci.reg("Network.responseReceived", nrr) try: ci.Page.navigate(url=url) req_id = qnrr.get(timeout=ci.get_to()) ret = ci.Network.getResponseBody(requestId=req_id) body = json.loads(ret['result']['body']) bdi0 = body['data']['info'][0] title, channel = bdi0['title'], bdi0['channel'] keys = [g['key'] for g in bdi0['guestSeriesList']] debug("keys = ", keys) return channel, title, keys except Exception as e: echo("detail_key out:", repr(e)) finally: ci.close() return None, None, []
def test1(self, args): #url = 'https://www.ifsp.tv/play?id=lSqo26L8OME' url = 'https://www.ifsp.tv/play?id=PBPhNoEyRaP' ci = get_ci(debug=debug()) # "Network.requestWillBeSent" # chunklist.m3u8 chm = Queue() def get_murl(wo, obj): u = obj['params']['request']['url'] if 'chunklist.m3u8' in u: chm.put(u) ci.reg("Network.requestWillBeSent", get_murl) # "Network.responseReceived" cht = Queue() def get_title(wo, obj): req_url = obj['params']['response']['url'] #/v3/video/detail # title #/v3/video/languagesplaylist # play list #if '/v3/video/play' not in req_url: # return for n in ('/v3/video/detail', '/v3/video/languagesplaylist'): if n in req_url: req_id = obj['params']['requestId'] debug("put", n, req_id) cht.put((n, req_id)) ci.reg("Network.responseReceived", get_title) ci.Page.navigate(url=url) title, pl = "", [] for i in range(2): n, req_id = cht.get() debug("get", n, req_id) info = ci.Network.getResponseBody(requestId=req_id) dat = json.loads(info['result']['body'])['data']['info'][0] print(n, json.dumps(dat, indent=2)) if 'detail' in n: title = dat['title'] if 'playlist' in n: pl = dat['playList'] if title and pl: break murl = chm.get() ci.close() debug("playlist", pl) debug("title", title) debug("murl", murl)
def title_murl(self, url): #url = 'https://train.ifvod.tv/detail?id=pGhytibvDFN' #url = 'https://train.ifvod.tv/play?id=p883vn6dt9F' ci = get_ci(debug()) req_id, murl = "", "" qnrr = Queue() def nrr(ci, msg): url = msg['params']['response']['url'] if '/api/video/play' in url: qnrr.put(msg['params']['requestId']) ci.reg("Network.responseReceived", nrr) qnrwb = Queue() def nrwb(ci, msg): u = msg['params']['request']['url'] debug("Network.requestWillBeSent url", url) if 'chunklist.m3u8' in u or ".mp4?" in u: debug("got chunklist.m3u8") qnrwb.put(u) ci.reg("Network.requestWillBeSent", nrwb) try: ci.Page.navigate(url=url) req_id = qnrr.get(timeout=ci.get_to()) debug("req_id = ", req_id) #ret = ci.Network.getResponseBody(requestId=req_id) ret = ci.wait("Network.getResponseBody", requestId=req_id) debug("ret_grb =", json.dumps(ret, indent=2)) body = json.loads(ret['result']['body']) debug("ret_body =", json.dumps(body, indent=2)) zero = body['data']['info'][0] # find murl, this is not ready one debug("url = ", zero['flvPathList'][-1]['result']) title = zero['vl']['title'] debug("title=", title) murl = qnrwb.get(timeout=ci.get_to()) debug("murl = ", murl) return title, murl #except Exception as e: # echo("key_m3u8 out:", repr(e)) finally: ci.close()
def query_info(self, url): hutf = self.chrome_hutf(url) #echo(hutf) title = SelStr("html head title", hutf)[0].text echo("title =", title) ret = SelStr("video#video_player", hutf) echo(ret) if ret: u = ret[0]["src"] return title, None, [u], None #return ci = get_ci(DEBUG) try: return self.query_info_chrome(ci, url) finally: print("ci.stop()") ci.stop()
def title_murl(self, url): ci = get_ci(debug=debug()) # "Network.requestWillBeSent" # chunklist.m3u8 chm = Queue() def get_murl(wo, obj): u = obj['params']['request']['url'] if 'chunklist.m3u8' in u: chm.put(u) ci.reg("Network.requestWillBeSent", get_murl) # "Network.responseReceived" cht = Queue() def get_title(wo, obj): req_url = obj['params']['response']['url'] for n in ('/v3/video/detail', '/v3/video/languagesplaylist'): if n in req_url: req_id = obj['params']['requestId'] debug("put", n, req_id) cht.put((n, req_id)) ci.reg("Network.responseReceived", get_title) ci.Page.navigate(url=url) title, pl = "", [] for i in range(2): n, req_id = cht.get() debug("get", n, req_id) info = ci.Network.getResponseBody(requestId=req_id) dat = json.loads(info['result']['body'])['data']['info'][0] print(n, json.dumps(dat, indent=2)) if 'detail' in n: title = dat['title'] if 'playlist' in n: pl = dat['playList'] if title and pl: break murl = chm.get() ci.close() debug("playlist", pl) debug("title", title) debug("murl", murl) return title, murl, [(p['key'], p['name']) for p in pl]