[downloader/f4m] Fragment filenames must be sanitized

because the fragment was written to a file with a sanitized name by
http_dl.download()
This commit is contained in:
Antti Ajanki 2015-05-03 11:04:14 +03:00
parent d0fd305023
commit 233c1c0e76

View File

@ -396,18 +396,19 @@ def frag_progress_hook(s):
success = http_dl.download(frag_filename, {'url': url})
if not success:
return False
with open(frag_filename, 'rb') as down:
down_data = down.read()
reader = FlvReader(down_data)
while True:
_, box_type, box_data = reader.read_box_info()
if box_type == b'mdat':
dest_stream.write(box_data)
break
(down, frag_sanitized) = sanitize_open(frag_filename, 'rb')
down_data = down.read()
down.close()
reader = FlvReader(down_data)
while True:
_, box_type, box_data = reader.read_box_info()
if box_type == b'mdat':
dest_stream.write(box_data)
break
if live:
os.remove(frag_filename)
os.remove(encodeFilename(frag_sanitized))
else:
frags_filenames.append(frag_filename)
frags_filenames.append(frag_sanitized)
except (compat_urllib_error.HTTPError, ) as err:
if live and (err.code == 404 or err.code == 410):
# We didn't keep up with the live window. Continue
@ -430,7 +431,7 @@ def frag_progress_hook(s):
elapsed = time.time() - start
self.try_rename(tmpfilename, filename)
for frag_file in frags_filenames:
os.remove(frag_file)
os.remove(encodeFilename(frag_file))
fsize = os.path.getsize(encodeFilename(filename))
self._hook_progress({