|
|
|
@ -22,9 +22,11 @@ from ..utils import (
|
|
|
|
|
parse_iso8601,
|
|
|
|
|
sanitized_Request,
|
|
|
|
|
str_to_int,
|
|
|
|
|
try_get,
|
|
|
|
|
unescapeHTML,
|
|
|
|
|
update_url_query,
|
|
|
|
|
url_or_none,
|
|
|
|
|
urlencode_postdata,
|
|
|
|
|
try_get,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -172,15 +174,25 @@ class DailymotionIE(DailymotionBaseInfoExtractor):
|
|
|
|
|
r'__PLAYER_CONFIG__\s*=\s*({.+?});'],
|
|
|
|
|
webpage, 'player v5', default=None)
|
|
|
|
|
if player_v5:
|
|
|
|
|
player = self._parse_json(player_v5, video_id)
|
|
|
|
|
metadata = try_get(
|
|
|
|
|
player, lambda x: x['metadata'], dict) or self._download_json(
|
|
|
|
|
'http://www.dailymotion.com/player/metadata/video/%s' % video_id, video_id, query={
|
|
|
|
|
'integration': 'inline',
|
|
|
|
|
'GK_PV5_NEON': '1',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if metadata.get('error', {}).get('type') == 'password_protected':
|
|
|
|
|
player = self._parse_json(player_v5, video_id, fatal=False) or {}
|
|
|
|
|
metadata = try_get(player, lambda x: x['metadata'], dict)
|
|
|
|
|
if not metadata:
|
|
|
|
|
metadata_url = url_or_none(try_get(
|
|
|
|
|
player, lambda x: x['context']['metadata_template_url1']))
|
|
|
|
|
if metadata_url:
|
|
|
|
|
metadata_url = metadata_url.replace(':videoId', video_id)
|
|
|
|
|
else:
|
|
|
|
|
metadata_url = update_url_query(
|
|
|
|
|
'https://www.dailymotion.com/player/metadata/video/%s'
|
|
|
|
|
% video_id, {
|
|
|
|
|
'embedder': url,
|
|
|
|
|
'integration': 'inline',
|
|
|
|
|
'GK_PV5_NEON': '1',
|
|
|
|
|
})
|
|
|
|
|
metadata = self._download_json(
|
|
|
|
|
metadata_url, video_id, 'Downloading metadata JSON')
|
|
|
|
|
|
|
|
|
|
if try_get(metadata, lambda x: x['error']['type']) == 'password_protected':
|
|
|
|
|
password = self._downloader.params.get('videopassword')
|
|
|
|
|
if password:
|
|
|
|
|
r = int(metadata['id'][1:], 36)
|
|
|
|
|