Browse Source

Merge pull request #5588 from aajanki/encode_frag_filenames

[f4m] Fix encode error by sanitizing fragment filenames
totalwebcasting
Sergey M. 9 years ago
parent
commit
55801fc76e
1 changed files with 12 additions and 11 deletions
  1. +12
    -11
      youtube_dl/downloader/f4m.py

+ 12
- 11
youtube_dl/downloader/f4m.py View File

@ -343,18 +343,19 @@ class F4mFD(FragmentFD):
success = ctx['dl'].download(frag_filename, {'url': url}) success = ctx['dl'].download(frag_filename, {'url': url})
if not success: if not success:
return False 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: if live:
os.remove(frag_filename)
os.remove(encodeFilename(frag_sanitized))
else: else:
frags_filenames.append(frag_filename)
frags_filenames.append(frag_sanitized)
except (compat_urllib_error.HTTPError, ) as err: except (compat_urllib_error.HTTPError, ) as err:
if live and (err.code == 404 or err.code == 410): if live and (err.code == 404 or err.code == 410):
# We didn't keep up with the live window. Continue # We didn't keep up with the live window. Continue
@ -375,6 +376,6 @@ class F4mFD(FragmentFD):
self._finish_frag_download(ctx) self._finish_frag_download(ctx)
for frag_file in frags_filenames: for frag_file in frags_filenames:
os.remove(frag_file)
os.remove(encodeFilename(frag_file))
return True return True

Loading…
Cancel
Save