Skip to content

Commit

Permalink
[downloader/fragment] Set final file's mtime according to last fragme…
Browse files Browse the repository at this point in the history
…nt's Last-Modified header (closes #11718, closes #18384, closes #27138)
  • Loading branch information
dstftw committed Nov 23, 2020
1 parent a86ce9d commit f4415fa
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions youtube_dl/downloader/fragment.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,15 @@ def _write_ytdl_file(self, ctx):

def _download_fragment(self, ctx, frag_url, info_dict, headers=None):
fragment_filename = '%s-Frag%d' % (ctx['tmpfilename'], ctx['fragment_index'])
success = ctx['dl'].download(fragment_filename, {
fragment_info_dict = {
'url': frag_url,
'http_headers': headers or info_dict.get('http_headers'),
})
}
success = ctx['dl'].download(fragment_filename, fragment_info_dict)
if not success:
return False, None
if fragment_info_dict.get('filetime'):
ctx['fragment_filetime'] = fragment_info_dict.get('filetime')
down, frag_sanitized = sanitize_open(fragment_filename, 'rb')
ctx['fragment_filename_sanitized'] = frag_sanitized
frag_content = down.read()
Expand Down Expand Up @@ -258,6 +261,13 @@ def _finish_frag_download(self, ctx):
downloaded_bytes = ctx['complete_frags_downloaded_bytes']
else:
self.try_rename(ctx['tmpfilename'], ctx['filename'])
if self.params.get('updatetime', True):
filetime = ctx.get('fragment_filetime')
if filetime:
try:
os.utime(ctx['filename'], (time.time(), filetime))
except Exception:
pass
downloaded_bytes = os.path.getsize(encodeFilename(ctx['filename']))

self._hook_progress({
Expand Down

0 comments on commit f4415fa

Please sign in to comment.