|
@@ -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))
|