Example #1
0
    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()
Example #2
0
    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, []
Example #3
0
    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)
Example #4
0
    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()
Example #5
0
File: dnvod.py Project: pastebt/dwm
 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()
Example #6
0
 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()
Example #7
0
    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]