mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-12-22 08:47:41 +00:00
[imdb] Improve extraction
This commit is contained in:
parent
f196508f7b
commit
96c2e3e909
1 changed files with 21 additions and 7 deletions
|
@ -1,10 +1,10 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import json
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
|
mimetype2ext,
|
||||||
qualities,
|
qualities,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -51,13 +51,27 @@ class ImdbIE(InfoExtractor):
|
||||||
json_data = self._search_regex(
|
json_data = self._search_regex(
|
||||||
r'<script[^>]+class="imdb-player-data"[^>]*?>(.*?)</script>',
|
r'<script[^>]+class="imdb-player-data"[^>]*?>(.*?)</script>',
|
||||||
format_page, 'json data', flags=re.DOTALL)
|
format_page, 'json data', flags=re.DOTALL)
|
||||||
info = json.loads(json_data)
|
info = self._parse_json(json_data, video_id, fatal=False)
|
||||||
format_info = info['videoPlayerObject']['video']
|
if not info:
|
||||||
f_id = format_info['ffname']
|
continue
|
||||||
|
format_info = info.get('videoPlayerObject', {}).get('video', {})
|
||||||
|
if not format_info:
|
||||||
|
continue
|
||||||
|
video_info_list = format_info.get('videoInfoList')
|
||||||
|
if not video_info_list or not isinstance(video_info_list, list):
|
||||||
|
continue
|
||||||
|
video_info = video_info_list[0]
|
||||||
|
if not video_info or not isinstance(video_info, dict):
|
||||||
|
continue
|
||||||
|
video_url = video_info.get('videoUrl')
|
||||||
|
if not video_url:
|
||||||
|
continue
|
||||||
|
format_id = format_info.get('ffname')
|
||||||
formats.append({
|
formats.append({
|
||||||
'format_id': f_id,
|
'format_id': format_id,
|
||||||
'url': format_info['videoInfoList'][0]['videoUrl'],
|
'url': video_url,
|
||||||
'quality': quality(f_id),
|
'ext': mimetype2ext(video_info.get('videoMimeType')),
|
||||||
|
'quality': quality(format_id),
|
||||||
})
|
})
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue