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:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if configloader.config['FFMPEG']['CopyUnprocessed']:
|
|
||||||
printer.info("Copying unprocessed files...")
|
|
||||||
utils.add_unprocessed_files(orig_folder)
|
|
||||||
utils.get_compression_status(orig_folder)
|
utils.get_compression_status(orig_folder)
|
||||||
|
|
|
@ -30,13 +30,15 @@ def compress_audio(folder, file, target_folder, extension):
|
||||||
try:
|
try:
|
||||||
(ffmpeg
|
(ffmpeg
|
||||||
.input(f'{folder}/{file}')
|
.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)
|
.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
|
utils.errors_count += 1
|
||||||
if not configloader.config['FFMPEG']['HideErrors']:
|
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}'
|
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,19 +49,21 @@ def compress_video(folder, file, target_folder, extension):
|
||||||
try:
|
try:
|
||||||
(ffmpeg
|
(ffmpeg
|
||||||
.input(f'{folder}/{file}')
|
.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)
|
.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
|
utils.errors_count += 1
|
||||||
if not configloader.config['FFMPEG']['HideErrors']:
|
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}'
|
return f'{target_folder}/{os.path.splitext(file)[0]}.{extension}'
|
||||||
|
|
||||||
|
|
||||||
def compress_image(folder, file, target_folder, extension):
|
def compress_image(folder, file, target_folder, extension):
|
||||||
quality = configloader.config['IMAGE']['Quality']
|
quality = configloader.config['IMAGE']['Quality']
|
||||||
|
printer.files(file, os.path.splitext(file)[0], extension, f"{quality}%")
|
||||||
|
try:
|
||||||
image = Image.open(f'{folder}/{file}')
|
image = Image.open(f'{folder}/{file}')
|
||||||
|
|
||||||
if (extension == "jpg" or extension == "jpeg" or extension == "avif" or
|
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...")
|
printer.warning(f"{file} has transparency. Changing to fallback...")
|
||||||
extension = configloader.config['IMAGE']['FallBackExtension']
|
extension = configloader.config['IMAGE']['FallBackExtension']
|
||||||
|
|
||||||
printer.files(file, os.path.splitext(file)[0], extension, f"{quality}%")
|
image.save(utils.check_duplicates(f"{target_folder}/{os.path.splitext(file)[0]}.{extension}"),
|
||||||
image.save(f"{target_folder}/{os.path.splitext(file)[0]}.{extension}",
|
|
||||||
optimize=True,
|
optimize=True,
|
||||||
lossless=configloader.config['IMAGE']['Lossless'],
|
lossless=configloader.config['IMAGE']['Lossless'],
|
||||||
quality=quality,
|
quality=quality,
|
||||||
minimize_size=True)
|
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}'
|
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}')
|
.output(f'{target_folder}/{file}')
|
||||||
.run(quiet=True)
|
.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
|
utils.errors_count += 1
|
||||||
if not configloader.config['FFMPEG']['HideErrors']:
|
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}'
|
return f'{target_folder}/{file}'
|
||||||
|
|
|
@ -53,22 +53,21 @@ def get_compression_status(orig_folder):
|
||||||
get_compression(orig_folder, f"{orig_folder}_compressed")
|
get_compression(orig_folder, f"{orig_folder}_compressed")
|
||||||
|
|
||||||
|
|
||||||
def add_unprocessed_files(orig_folder):
|
def add_unprocessed_file(orig_folder, new_folder):
|
||||||
for folder, folders, files in os.walk(orig_folder):
|
if configloader.config['FFMPEG']['CopyUnprocessed']:
|
||||||
for file in files:
|
filename = orig_folder.split().pop()
|
||||||
new_folder = f"{folder}".replace(orig_folder, f"{orig_folder}_compressed")
|
copyfile(orig_folder, new_folder)
|
||||||
if len(glob(f"{folder}/{os.path.splitext(file)[0]}.*")) > 1:
|
printer.info(f"File {filename} copied to compressed folder.")
|
||||||
if len(glob(f"{new_folder}/{file}")):
|
|
||||||
copyfile(f"{folder}/{file}", f"{new_folder}/{file} (copy)")
|
|
||||||
|
def check_duplicates(new_folder):
|
||||||
|
filename = new_folder.split().pop()
|
||||||
|
if os.path.exists(new_folder):
|
||||||
printer.warning(
|
printer.warning(
|
||||||
f'Duplicate file has been found! Check manually this files - "{file}", "{file} (copy)"')
|
f'Duplicate file has been found! Check manually this files - "{filename}", '
|
||||||
else:
|
f'"{os.path.splitext(filename)[0] + "(copy)" + os.path.splitext(filename)[1]}"')
|
||||||
copyfile(f"{folder}/{file}", f"{new_folder}/{file}")
|
return os.path.splitext(new_folder)[0] + "(copy)" + os.path.splitext(new_folder)[1]
|
||||||
printer.info(f"File {file} copied to compressed folder.")
|
return new_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.")
|
|
||||||
|
|
||||||
|
|
||||||
def help_message():
|
def help_message():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue