|
|
@ -11,6 +11,7 @@ from .fragment import FragmentFD |
|
|
|
from ..compat import ( |
|
|
|
compat_urlparse, |
|
|
|
compat_urllib_error, |
|
|
|
compat_urllib_parse_urlparse, |
|
|
|
) |
|
|
|
from ..utils import ( |
|
|
|
encodeFilename, |
|
|
@ -285,7 +286,9 @@ class F4mFD(FragmentFD): |
|
|
|
man_url = info_dict['url'] |
|
|
|
requested_bitrate = info_dict.get('tbr') |
|
|
|
self.to_screen('[%s] Downloading f4m manifest' % self.FD_NAME) |
|
|
|
manifest = self.ydl.urlopen(man_url).read() |
|
|
|
urlh = self.ydl.urlopen(man_url) |
|
|
|
man_url = urlh.geturl() |
|
|
|
manifest = urlh.read() |
|
|
|
|
|
|
|
doc = etree.fromstring(manifest) |
|
|
|
formats = [(int(f.attrib.get('bitrate', -1)), f) |
|
|
@ -329,20 +332,22 @@ class F4mFD(FragmentFD): |
|
|
|
if not live: |
|
|
|
write_metadata_tag(dest_stream, metadata) |
|
|
|
|
|
|
|
base_url_parsed = compat_urllib_parse_urlparse(base_url) |
|
|
|
|
|
|
|
self._start_frag_download(ctx) |
|
|
|
|
|
|
|
frags_filenames = [] |
|
|
|
while fragments_list: |
|
|
|
seg_i, frag_i = fragments_list.pop(0) |
|
|
|
name = 'Seg%d-Frag%d' % (seg_i, frag_i) |
|
|
|
url = base_url + name |
|
|
|
url_parsed = base_url_parsed._replace(path=base_url_parsed.path + name) |
|
|
|
if akamai_pv: |
|
|
|
url += '?' + akamai_pv.strip(';') |
|
|
|
url_parsed = url_parsed._replace(query=url_parsed.query + akamai_pv.strip(';')) |
|
|
|
if info_dict.get('extra_param_to_segment_url'): |
|
|
|
url += info_dict.get('extra_param_to_segment_url') |
|
|
|
url_parsed = url_parsed._replace(query=url_parsed.query + info_dict.get('extra_param_to_segment_url')) |
|
|
|
frag_filename = '%s-%s' % (ctx['tmpfilename'], name) |
|
|
|
try: |
|
|
|
success = ctx['dl'].download(frag_filename, {'url': url}) |
|
|
|
success = ctx['dl'].download(frag_filename, {'url': url_parsed.geturl()}) |
|
|
|
if not success: |
|
|
|
return False |
|
|
|
(down, frag_sanitized) = sanitize_open(frag_filename, 'rb') |
|
|
|