FFMpeg-Compressor: Implement mimic mode

This commit is contained in:
OleSTEEP 2023-10-01 22:45:38 +03:00
parent 657aa31148
commit d57585f5a2
3 changed files with 15 additions and 12 deletions

View file

@ -1,15 +1,16 @@
[FFMPEG] [FFMPEG]
FFmpegParams = "-hide_banner -loglevel error" FFmpegParams = "-hide_banner -loglevel error"
MimicMode = true
[AUDIO] [AUDIO]
Extension = "original" Extension = "mp3"
BitRate = "320k" BitRate = "320k"
[IMAGE] [IMAGE]
Extension = "original" Extension = "png"
CompLevel = 20 CompLevel = 20
JpegComp = 3 JpegComp = 3
[VIDEO] [VIDEO]
Extension = "original" Extension = "mp4"
Codec = "libvpx-vp9" Codec = "libvpx-vp9"

View file

@ -1,5 +1,6 @@
#!/bin/python3 #!/bin/python3
from modules import configloader
from modules import compressor from modules import compressor
from modules import printer from modules import printer
from modules import utils from modules import utils
@ -35,11 +36,13 @@ for folder, folders, files in os.walk(orig_folder):
if os.path.isfile(f'{folder}/{file}'): if os.path.isfile(f'{folder}/{file}'):
match compressor.get_file_type(file): match compressor.get_file_type(file):
case "audio": case "audio":
compressor.compress_audio(folder, file, target_folder) comp_file = compressor.compress_audio(folder, file, target_folder)
case "image": case "image":
compressor.compress_image(folder, file, target_folder) comp_file = compressor.compress_image(folder, file, target_folder)
case "video": case "video":
compressor.compress_video(folder, file, target_folder) comp_file = compressor.compress_video(folder, file, target_folder)
case "unknown": case "unknown":
compressor.compress(folder, file, target_folder) comp_file = compressor.compress(folder, file, target_folder)
if configloader.config['FFMPEG']['MimicMode']:
os.rename(comp_file, f'{folder}_compressed/{file}')
utils.get_compression_status(orig_folder) utils.get_compression_status(orig_folder)

View file

@ -5,11 +5,6 @@ import os
def get_req_ext(file): def get_req_ext(file):
if configloader.config['AUDIO']['Extension'] == "original" or \
configloader.config['IMAGE']['Extension'] == "original" or \
configloader.config['VIDEO']['Extension'] == "original":
return os.path.splitext(file)[1][1:]
match get_file_type(file): match get_file_type(file):
case "audio": case "audio":
return configloader.config['AUDIO']['Extension'] return configloader.config['AUDIO']['Extension']
@ -59,6 +54,7 @@ def compress_audio(folder, file, target_folder):
printer.files(file, os.path.splitext(file)[0], get_req_ext(file), f"{bitrate}") printer.files(file, os.path.splitext(file)[0], get_req_ext(file), f"{bitrate}")
os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -q:a {bitrate} " os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -q:a {bitrate} "
f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'") f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'")
return f'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'
def compress_video(folder, file, target_folder): def compress_video(folder, file, target_folder):
@ -68,6 +64,7 @@ def compress_video(folder, file, target_folder):
printer.files(file, os.path.splitext(file)[0], get_req_ext(file), codec) printer.files(file, os.path.splitext(file)[0], get_req_ext(file), codec)
os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -vcodec {codec} " os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -vcodec {codec} "
f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'") f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'")
return f'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'
def compress_image(folder, file, target_folder): def compress_image(folder, file, target_folder):
@ -87,6 +84,7 @@ def compress_image(folder, file, target_folder):
printer.files(file, os.path.splitext(file)[0], get_req_ext(file), f"{comp_level}%") printer.files(file, os.path.splitext(file)[0], get_req_ext(file), f"{comp_level}%")
os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -compression_level {comp_level} " os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} -compression_level {comp_level} "
f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'") f"'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'")
return f'{target_folder}/{os.path.splitext(file)[0]}.{get_req_ext(file)}'
def compress(folder, file, target_folder): def compress(folder, file, target_folder):
@ -94,3 +92,4 @@ def compress(folder, file, target_folder):
printer.warning("File extension not recognized. This may affect the quality of the compression.") printer.warning("File extension not recognized. This may affect the quality of the compression.")
printer.unknown_file(file) printer.unknown_file(file)
os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} '{target_folder}/{file}'") os.system(f"ffmpeg -i '{folder}/{file}' {ffmpeg_params} '{target_folder}/{file}'")
return f'{target_folder}/{file}'