aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/postprocessor/ffmpeg.py
diff options
context:
space:
mode:
authorPaul Wrubel <pwrubel7@gmail.com>2021-08-26 21:27:20 -0500
committerGitHub <noreply@github.com>2021-08-27 07:57:20 +0530
commitd75201a873a413d73f12748e5710f000e9f727da (patch)
tree6d60de6dbbf3892dc2e5d49c6c78e4e0123174fd /yt_dlp/postprocessor/ffmpeg.py
parent691d5823d6ff72b813eb34ede8009b70bebd73da (diff)
downloadhypervideo-pre-d75201a873a413d73f12748e5710f000e9f727da.tar.lz
hypervideo-pre-d75201a873a413d73f12748e5710f000e9f727da.tar.xz
hypervideo-pre-d75201a873a413d73f12748e5710f000e9f727da.zip
Use `os.replace` where applicable (#793)
When using ```py os.remove(encodeFilename(filename)) os.rename(encodeFilename(temp_filename), encodeFilename(filename)) ``` the `os.remove` need not be atomic and so can be executed arbitrarily compared to the immediately following rename call. It is better to use `os.replace` instead Authored by: paulwrubel
Diffstat (limited to 'yt_dlp/postprocessor/ffmpeg.py')
-rw-r--r--yt_dlp/postprocessor/ffmpeg.py13
1 files changed, 4 insertions, 9 deletions
diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py
index be6cc9f09..b66a0b445 100644
--- a/yt_dlp/postprocessor/ffmpeg.py
+++ b/yt_dlp/postprocessor/ffmpeg.py
@@ -520,8 +520,7 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
temp_filename = prepend_extension(filename, 'temp')
self.to_screen('Embedding subtitles in "%s"' % filename)
self.run_ffmpeg_multiple_files(input_files, temp_filename, opts)
- os.remove(encodeFilename(filename))
- os.rename(encodeFilename(temp_filename), encodeFilename(filename))
+ os.replace(temp_filename, filename)
files_to_delete = [] if self._already_have_subtitle else sub_filenames
return files_to_delete, information
@@ -628,8 +627,7 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
itertools.chain(self._options(info['ext']), *options))
if chapters:
os.remove(metadata_filename)
- os.remove(encodeFilename(filename))
- os.rename(encodeFilename(temp_filename), encodeFilename(filename))
+ os.replace(temp_filename, filename)
return [], info
@@ -673,8 +671,7 @@ class FFmpegFixupPostProcessor(FFmpegPostProcessor):
self.to_screen(f'{msg} of "{filename}"')
self.run_ffmpeg(filename, temp_filename, options)
- os.remove(encodeFilename(filename))
- os.rename(encodeFilename(temp_filename), encodeFilename(filename))
+ os.replace(temp_filename, filename)
class FFmpegFixupStretchedPP(FFmpegFixupPostProcessor):
@@ -866,9 +863,7 @@ class FFmpegThumbnailsConvertorPP(FFmpegPostProcessor):
if thumbnail_ext != 'webp' and self.is_webp(thumbnail_filename):
self.to_screen('Correcting thumbnail "%s" extension to webp' % thumbnail_filename)
webp_filename = replace_extension(thumbnail_filename, 'webp')
- if os.path.exists(webp_filename):
- os.remove(webp_filename)
- os.rename(encodeFilename(thumbnail_filename), encodeFilename(webp_filename))
+ os.replace(thumbnail_filename, webp_filename)
info['thumbnails'][idx]['filepath'] = webp_filename
info['__files_to_move'][webp_filename] = replace_extension(
info['__files_to_move'].pop(thumbnail_filename), 'webp')