FFMpeg-Compressor: Copy unprocessed files while running
This commit is contained in:
parent
6698db5fef
commit
27efc155b9
3 changed files with 46 additions and 41 deletions
|
@ -71,7 +71,4 @@ if __name__ == "__main__":
|
|||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
if configloader.config['FFMPEG']['CopyUnprocessed']:
|
||||
printer.info("Copying unprocessed files...")
|
||||
utils.add_unprocessed_files(orig_folder)
|
||||
utils.get_compression_status(orig_folder)
|
||||
|
|
|
@ -30,13 +30,15 @@ def compress_audio(folder, file, target_folder, extension):
|
|||
try:
|
||||
(ffmpeg
|
||||
.input(f'{folder}/{file}')
|
||||
.output(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}', audio_bitrate=bitrate)
|
||||
.output(utils.check_duplicates(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'),
|
||||
audio_bitrate=bitrate)
|
||||
.run(quiet=True)
|
||||
)
|
||||
except ffmpeg._run.Error:
|
||||
except ffmpeg._run.Error as e:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Maybe it is ffmpeg error or unsupported file.")
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||
|
||||
|
||||
|
@ -47,19 +49,21 @@ def compress_video(folder, file, target_folder, extension):
|
|||
try:
|
||||
(ffmpeg
|
||||
.input(f'{folder}/{file}')
|
||||
.output(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}', vcodec=codec)
|
||||
.output(utils.check_duplicates(f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'), vcodec=codec)
|
||||
.run(quiet=True)
|
||||
)
|
||||
except ffmpeg._run.Error:
|
||||
except ffmpeg._run.Error as e:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Maybe it is ffmpeg error or unsupported file.")
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||
|
||||
|
||||
def compress_image(folder, file, target_folder, extension):
|
||||
quality = configloader.config['IMAGE']['Quality']
|
||||
|
||||
printer.files(file, os.path.splitext(file)[0], extension, f"{quality}%")
|
||||
try:
|
||||
image = Image.open(f'{folder}/{file}')
|
||||
|
||||
if (extension == "jpg" or extension == "jpeg" or extension == "avif" or
|
||||
|
@ -68,12 +72,16 @@ def compress_image(folder, file, target_folder, extension):
|
|||
printer.warning(f"{file} has transparency. Changing to fallback...")
|
||||
extension = configloader.config['IMAGE']['FallBackExtension']
|
||||
|
||||
printer.files(file, os.path.splitext(file)[0], extension, f"{quality}%")
|
||||
image.save(f"{target_folder}/{os.path.splitext(file)[0]}.{extension}",
|
||||
image.save(utils.check_duplicates(f"{target_folder}/{os.path.splitext(file)[0]}.{extension}"),
|
||||
optimize=True,
|
||||
lossless=configloader.config['IMAGE']['Lossless'],
|
||||
quality=quality,
|
||||
minimize_size=True)
|
||||
except Exception as e:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||
|
||||
|
||||
|
@ -85,8 +93,9 @@ def compress(folder, file, target_folder):
|
|||
.output(f'{target_folder}/{file}')
|
||||
.run(quiet=True)
|
||||
)
|
||||
except ffmpeg._run.Error:
|
||||
except ffmpeg._run.Error as e:
|
||||
utils.add_unprocessed_file(f'{folder}/{file}', f'{target_folder}/{file}')
|
||||
utils.errors_count += 1
|
||||
if not configloader.config['FFMPEG']['HideErrors']:
|
||||
printer.error(f"File {file} can't be processed! Maybe it is ffmpeg error or unsupported file.")
|
||||
printer.error(f"File {file} can't be processed! Error: {e}")
|
||||
return f'{target_folder}/{file}'
|
||||
|
|
|
@ -53,22 +53,21 @@ def get_compression_status(orig_folder):
|
|||
get_compression(orig_folder, f"{orig_folder}_compressed")
|
||||
|
||||
|
||||
def add_unprocessed_files(orig_folder):
|
||||
for folder, folders, files in os.walk(orig_folder):
|
||||
for file in files:
|
||||
new_folder = f"{folder}".replace(orig_folder, f"{orig_folder}_compressed")
|
||||
if len(glob(f"{folder}/{os.path.splitext(file)[0]}.*")) > 1:
|
||||
if len(glob(f"{new_folder}/{file}")):
|
||||
copyfile(f"{folder}/{file}", f"{new_folder}/{file} (copy)")
|
||||
def add_unprocessed_file(orig_folder, new_folder):
|
||||
if configloader.config['FFMPEG']['CopyUnprocessed']:
|
||||
filename = orig_folder.split().pop()
|
||||
copyfile(orig_folder, new_folder)
|
||||
printer.info(f"File {filename} copied to compressed folder.")
|
||||
|
||||
|
||||
def check_duplicates(new_folder):
|
||||
filename = new_folder.split().pop()
|
||||
if os.path.exists(new_folder):
|
||||
printer.warning(
|
||||
f'Duplicate file has been found! Check manually this files - "{file}", "{file} (copy)"')
|
||||
else:
|
||||
copyfile(f"{folder}/{file}", f"{new_folder}/{file}")
|
||||
printer.info(f"File {file} copied to compressed folder.")
|
||||
else:
|
||||
if not len(glob(f"{new_folder}/{os.path.splitext(file)[0]}.*")):
|
||||
copyfile(f"{folder}/{file}", f"{new_folder}/{file}")
|
||||
printer.info(f"File {file} copied to compressed folder.")
|
||||
f'Duplicate file has been found! Check manually this files - "{filename}", '
|
||||
f'"{os.path.splitext(filename)[0] + "(copy)" + os.path.splitext(filename)[1]}"')
|
||||
return os.path.splitext(new_folder)[0] + "(copy)" + os.path.splitext(new_folder)[1]
|
||||
return new_folder
|
||||
|
||||
|
||||
def help_message():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue