|
|
@ -68,19 +68,24 @@ class FourTubeIE(InfoExtractor): |
|
|
|
webpage, 'like count', fatal=False)) |
|
|
|
duration = parse_duration(self._html_search_meta('duration', webpage)) |
|
|
|
|
|
|
|
player_js = self._download_webpage( |
|
|
|
self._search_regex( |
|
|
|
r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2', |
|
|
|
webpage, 'player JS', group='url'), |
|
|
|
video_id, 'Downloading player JS') |
|
|
|
|
|
|
|
params_js = self._search_regex( |
|
|
|
r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)', |
|
|
|
player_js, 'initialization parameters' |
|
|
|
) |
|
|
|
params = self._parse_json('[%s]' % params_js, video_id) |
|
|
|
media_id = params[0] |
|
|
|
sources = ['%s' % p for p in params[2]] |
|
|
|
media_id = self._search_regex( |
|
|
|
r'<button[^>]+data-id=(["\'])(?P<id>\d+)\1[^>]+data-quality=', webpage, |
|
|
|
'media id', default=None, group='id') |
|
|
|
sources = [ |
|
|
|
quality |
|
|
|
for _, quality in re.findall(r'<button[^>]+data-quality=(["\'])(.+?)\1', webpage)] |
|
|
|
if not (media_id and sources): |
|
|
|
player_js = self._download_webpage( |
|
|
|
self._search_regex( |
|
|
|
r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2', |
|
|
|
webpage, 'player JS', group='url'), |
|
|
|
video_id, 'Downloading player JS') |
|
|
|
params_js = self._search_regex( |
|
|
|
r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)', |
|
|
|
player_js, 'initialization parameters') |
|
|
|
params = self._parse_json('[%s]' % params_js, video_id) |
|
|
|
media_id = params[0] |
|
|
|
sources = ['%s' % p for p in params[2]] |
|
|
|
|
|
|
|
token_url = 'http://tkn.4tube.com/{0}/desktop/{1}'.format( |
|
|
|
media_id, '+'.join(sources)) |
|
|
|