Browse Source

[dailymotion] Improve metadata extraction (closes #17706)

master
Sergey M․ 6 years ago
parent
commit
0082f44a08
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
1 changed files with 22 additions and 10 deletions
  1. 32
      youtube_dl/extractor/dailymotion.py

32
youtube_dl/extractor/dailymotion.py

@ -22,9 +22,11 @@ from ..utils import (
parse_iso8601, parse_iso8601,
sanitized_Request, sanitized_Request,
str_to_int, str_to_int,
try_get,
unescapeHTML, unescapeHTML,
update_url_query,
url_or_none,
urlencode_postdata, urlencode_postdata,
try_get,
) )
@ -172,15 +174,25 @@ class DailymotionIE(DailymotionBaseInfoExtractor):
r'__PLAYER_CONFIG__\s*=\s*({.+?});'], r'__PLAYER_CONFIG__\s*=\s*({.+?});'],
webpage, 'player v5', default=None) webpage, 'player v5', default=None)
if player_v5: 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') password = self._downloader.params.get('videopassword')
if password: if password:
r = int(metadata['id'][1:], 36) r = int(metadata['id'][1:], 36)

Loading…
Cancel
Save