[4tube] Try extracting sources from the webpage before fetching player.js (Closes #7103)

This commit is contained in:
Sergey M․ 2015-10-08 20:49:56 +06:00
parent c677e49bd1
commit 4356d907c1

View file

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