1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-27 21:46:54 +01:00

[sohu] Fix extraction again

This commit is contained in:
Yen Chi Hsuan 2015-06-22 00:59:55 +08:00
parent 3f3308cd75
commit 98ca102441

View File

@ -6,10 +6,10 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
compat_str, compat_str,
compat_urllib_request compat_urllib_request,
compat_urllib_parse,
) )
from ..utils import ( from ..utils import (
sanitize_url_path_consecutive_slashes,
ExtractorError, ExtractorError,
) )
@ -143,23 +143,41 @@ class SohuIE(InfoExtractor):
formats = [] formats = []
for format_id, format_data in formats_json.items(): for format_id, format_data in formats_json.items():
allot = format_data['allot'] allot = format_data['allot']
prot = format_data['prot']
data = format_data['data'] data = format_data['data']
clips_url = data['clipsURL'] clips_url = data['clipsURL']
su = data['su'] su = data['su']
part_str = self._download_webpage( video_url = 'newflv.sohu.ccgslb.net'
'http://%s/?prot=%s&file=%s&new=%s' % cdnId = None
(allot, prot, clips_url[i], su[i]), retries = 0
video_id,
'Downloading %s video URL part %d of %d'
% (format_id, i + 1, part_count))
part_info = part_str.split('|') while 'newflv.sohu.ccgslb.net' in video_url:
params = {
'prot': 9,
'file': clips_url[i],
'new': su[i],
'prod': 'flash',
}
video_url = sanitize_url_path_consecutive_slashes( if cdnId is not None:
'%s%s?key=%s' % (part_info[0], su[i], part_info[3])) params['idc'] = cdnId
download_note = 'Downloading %s video URL part %d of %d' % (
format_id, i + 1, part_count)
if retries > 0:
download_note += ' (retry #%d)' % retries
part_info = self._parse_json(self._download_webpage(
'http://%s/?%s' % (allot, compat_urllib_parse.urlencode(params)),
video_id, download_note), video_id)
video_url = part_info['url']
cdnId = part_info.get('nid')
retries += 1
if retries > 5:
raise ExtractorError('Failed to get video URL')
formats.append({ formats.append({
'url': video_url, 'url': video_url,