1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-13 04:27:15 +08:00

Merge branch 'iqiyi-fix-1080p' into fix-iqiyi-2015-07-30

This commit is contained in:
sceext 2015-07-31 13:07:47 +08:00
commit d9da7b0659

View File

@ -90,9 +90,9 @@ class IqiyiIE(InfoExtractor):
('1', 'h6'),
('2', 'h5'),
('3', 'h4'),
('4', 'h3'),
('5', 'h2'),
('10', 'h1'),
('4', 'h3', '720p'),
('5', 'h2', '1080p'),
('10', 'h1', '4K'),
]
def construct_video_urls(self, data, video_id, _uuid):
@ -126,7 +126,7 @@ class IqiyiIE(InfoExtractor):
video_urls_dict = {}
for format_item in data['vp']['tkl'][0]['vs']:
if 0 < int(format_item['bid']) <= 10:
format_id = self.get_format(format_item['bid'])
format_id = self.get_format(format_item['bid'])[0]
else:
continue
@ -170,11 +170,24 @@ class IqiyiIE(InfoExtractor):
return video_urls_dict
def get_format(self, bid):
matched_format_ids = [_format_id for _bid, _format_id in self._FORMATS_MAP if _bid == str(bid)]
matched_format_ids = []
for _item in self._FORMATS_MAP:
_bid, _format_id = _item[0], _item[1]
_format = None
try:
_format = _item[2]
except IndexError:
pass
if _bid == str(bid):
matched_format_ids.append((_format_id, _format))
return matched_format_ids[0] if len(matched_format_ids) else None
def get_bid(self, format_id):
matched_bids = [_bid for _bid, _format_id in self._FORMATS_MAP if _format_id == format_id]
matched_bids = []
for _item in self._FORMATS_MAP:
_bid, _format_id = _item[0], _item[1]
if _format_id == format_id:
matched_bids.append(_bid)
return matched_bids[0] if len(matched_bids) else None
def get_raw_data(self, tvid, video_id, enc_key, _uuid):
@ -190,7 +203,7 @@ class IqiyiIE(InfoExtractor):
(enc_key + tm + tvid).encode('utf8')).hexdigest(),
'qyid': _uuid,
'tn': random.random(),
'um': 0,
'um': 1,
'authkey': hashlib.md5(
(tm + tvid).encode('utf8')).hexdigest()
}
@ -237,17 +250,19 @@ class IqiyiIE(InfoExtractor):
entries = []
for format_id in video_urls_dict:
video_urls = video_urls_dict[format_id]
_format = self.get_format(self.get_bid(format_id))[1]
for i, video_url_info in enumerate(video_urls):
if len(entries) < i + 1:
entries.append({'formats': []})
entries[i]['formats'].append(
{
'url': video_url_info[0],
'filesize': video_url_info[-1],
'format_id': format_id,
'preference': int(self.get_bid(format_id))
}
)
_item = {
'url': video_url_info[0],
'filesize': video_url_info[-1],
'format_id': format_id,
'preference': int(self.get_bid(format_id))
}
if _format != None:
_item['format'] = _format
entries[i]['formats'].append(_item)
for i in range(len(entries)):
self._sort_formats(entries[i]['formats'])