diff options
| author | Sergey M․ <dstftw@gmail.com> | 2020-11-24 04:16:29 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2020-11-24 04:17:24 +0700 | 
| commit | f4415faa4690cf71d61d90ad7e9a7f9980be9b50 (patch) | |
| tree | 146246b6803a85cf2006a6949ce8d27b10a3f1d7 /youtube_dl/downloader/fragment.py | |
| parent | a86ce9d7a1091b86948feec0ba4a34fa431d7618 (diff) | |
[downloader/fragment] Set final file's mtime according to last fragment's Last-Modified header (closes #11718, closes #18384, closes #27138)
Diffstat (limited to 'youtube_dl/downloader/fragment.py')
| -rw-r--r-- | youtube_dl/downloader/fragment.py | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py index 02f35459e..35c76feba 100644 --- a/youtube_dl/downloader/fragment.py +++ b/youtube_dl/downloader/fragment.py @@ -97,12 +97,15 @@ class FragmentFD(FileDownloader):      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() @@ -258,6 +261,13 @@ class FragmentFD(FileDownloader):              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({  | 
