コード例 #1
0
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            vid_regex = 'var vid = "(.*?)";'
            vid = re.search(vid_regex, html, flags=re.S).group(1)
            app_key_regex = 'var modeServerAppKey = "(.*?)";'
            app_key = re.search(app_key_regex, html, flags=re.S).group(1)

            data = abstract_grab(cls.RESOURCE_API % (vid, app_key))
            data = json.loads(data)['data']

            result = HandlerOutput(video_info=HandlerOutput.VideoInfo(
                title=data['title'],
                cover=data['cover'],
            ), )

            for item in data['resource']['progressive']:
                result.options.append(
                    HandlerOutput.Option(
                        quality=item['profile'],
                        urls=[HandlerOutput.Url(item['url'])],
                    ))
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])
コード例 #2
0
ファイル: ergeng.py プロジェクト: Jyonn/theVideoOfChina
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            media_id_regex = '"media_id": (.*?),'
            media_id = re.search(media_id_regex, html, flags=re.S).group(1)

            title_regex = '"title": "(.*?)",'
            title = re.search(title_regex, html, flags=re.S).group(1)
            cover_regex = '"cover": "(.*?)",'
            cover = re.search(cover_regex, html, flags=re.S).group(1)

            data = abstract_grab(cls.RESOURCE_API % media_id)
            data = json.loads(data)['msg']['segs']

            result = HandlerOutput(video_info=HandlerOutput.VideoInfo(
                title=title,
                cover=cover,
            ), )

            for quality in data:
                o = HandlerOutput.Option(urls=[], quality=quality)
                result.options.append(o)
                for seg in data[quality]:
                    o.urls.append(
                        HandlerOutput.Url(
                            url=seg['url'],
                            index=seg['number'],
                        ))

        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])
コード例 #3
0
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            vid_regex = ';vid=(.*?)">'
            vids = re.findall(vid_regex, html, flags=re.S)

            title_regex = 'msg_title = "(.*?)";'
            title = "《" + re.search(title_regex, html, flags=re.S).group(1) + "》"

            cover_regex = 'msg_cdn_url = "(.*?)";'
            cover = re.search(cover_regex, html, flags=re.S).group(1)

            results = []
            for index, vid in enumerate(vids):
                result = HandlerOutput(
                    video_info=HandlerOutput.VideoInfo(
                        title=title + ' 文章内视频%s' % index,
                        cover=cover,
                    ),
                    options=VideoQQ.get_video_link(vid),
                )
                results.append(result)
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter(results)
コード例 #4
0
    def handler(cls, url):
        try:
            url = url.replace('#/', '')
            o = parse.urlparse(url)
            qs = parse.parse_qs(o.query)
            vid = qs['id'][0]

            data = '{"id":"%s","csrf_token":""}' % vid
            encrypted_data = cls.netease_encrypt(data)
            data = abstract_post(cls.DETAIL_API,
                                 encrypted_data,
                                 headers=cls.HEADERS)
            data = json.loads(data)['data']

            result = HandlerOutput(
                video_info=HandlerOutput.VideoInfo(
                    title=data['title'],
                    cover=data['coverUrl'],
                ),
                options=[],
            )

            for item in data['resolutions']:
                data = '{"ids":"[\\"%s\\"]","resolution":"%s","csrf_token":""}' % \
                       (vid, item['resolution'])
                encrypted_data = cls.netease_encrypt(data)

                data = abstract_post(cls.MV_API,
                                     encrypted_data,
                                     headers=cls.HEADERS)
                data = json.loads(data)
                if len(data['urls']) > 1:
                    print(data)
                result.options.append(
                    HandlerOutput.Option(
                        urls=[HandlerOutput.Url(url=data['urls'][0]['url'])],
                        quality=data['urls'][0]['r'],
                    ))
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])
コード例 #5
0
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            video_regex = '<video src="(.*?)".*?poster="(.*?)"'
            videos = re.findall(video_regex, html, flags=re.S)
            title_regex = 'name="keywords" content="(.*?)"'
            title = "《" + re.search(title_regex, html,
                                    flags=re.S).group(1) + "》"
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        results = []
        for index, video in enumerate(videos):
            result = HandlerOutput(one_url=video[0],
                                   video_info=HandlerOutput.VideoInfo(
                                       cover=video[1],
                                       title=title + ' 文章内视频%s' % index,
                                   ))
            results.append(result)

        return HandlerAdapter(results)
コード例 #6
0
ファイル: douyin.py プロジェクト: Jyonn/theVideoOfChina
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            title_regex = '<p class="desc">(.*?)</p>'
            title = re.search(title_regex, html, flags=re.S).group(1)

            video_url_regex = 'playAddr: "(.*?)",'
            video_url = re.search(video_url_regex, html, flags=re.S).group(1)

            cover_regex = 'cover: "(.*?)"'
            cover = re.search(cover_regex, html, flags=re.S).group(1)
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        result = HandlerOutput(
            video_info=HandlerOutput.VideoInfo(
                title=title,
                cover=cover,
            ),
            one_url=video_url,
        )
        return HandlerAdapter([result])
コード例 #7
0
ファイル: pearvideo.py プロジェクト: Jyonn/theVideoOfChina
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            video_url_regex = 'srcUrl="(.*?)",'
            video_url = re.search(video_url_regex, html, flags=re.S).group(1)

            soup = BeautifulSoup(html, 'html.parser')

            title = soup.find('h1').get_text()
            cover = soup.find(id='poster').find('img').get('src')
        except Exception as err:
            raise Error.ERROR_HANDLER(cls.NAME + ',' + str(err))

        result = HandlerOutput(
            video_info=HandlerOutput.VideoInfo(
                title=title,
                cover=cover,
            ),
            one_url=video_url,
        )

        return HandlerAdapter([result])
コード例 #8
0
    def handler(cls, url):
        try:
            o = parse.urlparse(url)
            qs = parse.parse_qs(o.query)
            vid = qs['vid'][0]

            data = abstract_grab(cls.INFO_API_URL % vid)
            data = json.loads(data)
            result = HandlerOutput(
                video_info=HandlerOutput.VideoInfo(
                    title=data['title'],
                    cover=data['coverForDetail']
                )
            )
            for item in data['playInfo']:
                result.options.append(HandlerOutput.Option(
                    quality=item['name'] + '(' + item['type'] + ')',
                    urls=[HandlerOutput.Url(url=item['url'])]
                ))
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])
コード例 #9
0
    def handler(cls, url):
        try:
            html = abstract_grab(url)
            vid_link_regex = '<link rel="canonical" href="(.*?).html"'
            vid_link = re.search(vid_link_regex, html, flags=re.S).group(1)

            video_info_regex = 'var VIDEO_INFO = (.*?)\n</script>'
            video_info = re.search(video_info_regex, html, flags=re.S).group(1)

            data = json.loads(video_info)

            vid = vid_link[vid_link.rfind('/') + 1:]
            result = HandlerOutput(
                video_info=HandlerOutput.VideoInfo(
                    title=data['title'],
                    cover=data['pic_640_360'],
                ),
                options=VideoQQ.get_video_link(vid),
            )
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])
コード例 #10
0
    def handler(cls, url):
        try:
            o = parse.urlparse(url)
            qs = parse.parse_qs(o.query)
            game_id = qs['gameId'][0]
            i_info_id = qs['iInfoId'][0]

            data = abstract_post(cls.GET_VID_API,
                                 data=dict(iInfoId=i_info_id, gameId=game_id, cSystem=1))
            data = json.loads(data)['data']
            vid = data['sVid']

            result = HandlerOutput(
                video_info=HandlerOutput.VideoInfo(
                    title=data['sTitle'],
                    cover=data['sImageAbbrAddrMiddle'],
                ),
                options=VideoQQ.get_video_link(vid),
            )
        except Exception as err:
            raise Error.ERROR_HANDLER(debug_message=cls.NAME + ',' + str(err))

        return HandlerAdapter([result])