mirror of
https://github.com/soimort/you-get.git
synced 2025-02-03 16:53:56 +03:00
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
import re
|
|
import json
|
|
|
|
from ..common import get_content
|
|
from ..extractors import VideoExtractor
|
|
from ..util import log
|
|
from ..util.strings import unescape_html
|
|
|
|
__all__ = ['qq_egame_download']
|
|
|
|
|
|
class QQEgame(VideoExtractor):
|
|
stream_types = [
|
|
{'id': 'original', 'video_profile': '0', 'container': 'flv'},
|
|
{'id': '900', 'video_profile': '900kb/s', 'container': 'flv'},
|
|
{'id': '550', 'video_profile': '550kb/s', 'container': 'flv'}
|
|
]
|
|
name = 'QQEgame'
|
|
|
|
def prepare(self, **kwargs):
|
|
page = get_content(self.url)
|
|
server_data = re.search(r'serverData\s*=\s*({.+?});', page)
|
|
if server_data is None:
|
|
log.wtf('cannot find server_data')
|
|
json_data = json.loads(server_data.group(1))
|
|
live_info = json_data['liveInfo']['data']
|
|
self.title = '{}_{}'.format(live_info['profileInfo']['nickName'], live_info['videoInfo']['title'])
|
|
for exsited_stream in live_info['videoInfo']['streamInfos']:
|
|
for s in self.__class__.stream_types:
|
|
if re.search(r'(\d+)', s['video_profile']).group(1) == exsited_stream['bitrate']:
|
|
current_stream_id = s['id']
|
|
stream_info = dict(src=[unescape_html(exsited_stream['playUrl'])])
|
|
stream_info['video_profile'] = exsited_stream['desc']
|
|
stream_info['container'] = s['container']
|
|
stream_info['size'] = float('inf')
|
|
self.streams[current_stream_id] = stream_info
|
|
|
|
|
|
def qq_egame_download(url, **kwargs):
|
|
QQEgame().download_by_url(url, **kwargs)
|
|
# url dispatching has been done in qq.py
|