[imdb] Improve extraction

This commit is contained in:
Sergey M․ 2016-05-13 23:25:05 +06:00
parent f196508f7b
commit 96c2e3e909
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
1 changed files with 21 additions and 7 deletions

View File

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