FFMpeg-Compressor: Copy all unprocessed files to destination folder

This commit is contained in:
OleSTEEP 2023-10-02 19:23:11 +03:00
parent e4de881424
commit cefd0bc9ba
3 changed files with 39 additions and 9 deletions

View file

@ -1,5 +1,6 @@
[FFMPEG] [FFMPEG]
FFmpegParams = "-n -hide_banner -loglevel error" FFmpegParams = "-n -hide_banner -loglevel error"
CopyUnprocessed = false
MimicMode = false MimicMode = false
[AUDIO] [AUDIO]
@ -7,7 +8,7 @@ Extension = "mp3"
BitRate = "320k" BitRate = "320k"
[IMAGE] [IMAGE]
Extension = "png" Extension = "jpg"
CompLevel = 20 CompLevel = 20
JpegComp = 3 JpegComp = 3

View file

@ -1,4 +1,4 @@
#!/bin/python3 #!python3
from modules import configloader from modules import configloader
from modules import compressor from modules import compressor
@ -43,6 +43,15 @@ for folder, folders, files in os.walk(orig_folder):
comp_file = compressor.compress_video(folder, file, target_folder) comp_file = compressor.compress_video(folder, file, target_folder)
case "unknown": case "unknown":
comp_file = compressor.compress(folder, file, target_folder) comp_file = compressor.compress(folder, file, target_folder)
if configloader.config['FFMPEG']['MimicMode']: if configloader.config['FFMPEG']['MimicMode']:
try:
os.rename(comp_file, f'{folder}_compressed/{file}') os.rename(comp_file, f'{folder}_compressed/{file}')
except FileNotFoundError:
printer.error(f"File {file} can't be processed! Maybe it is ffmpeg error or unsupported file. "
f"You can change -loglevel in ffmpeg parameters to see full error.")
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)

View file

@ -1,4 +1,6 @@
from modules import printer from modules import printer
from shutil import copyfile
from glob import glob
import os import os
@ -32,11 +34,13 @@ def get_compression_status(orig_folder):
orig_folder_len = 0 orig_folder_len = 0
comp_folder_len = 0 comp_folder_len = 0
for folder, folders, file in os.walk(orig_folder): for folder, folders, files in os.walk(orig_folder):
orig_folder_len += len(file) orig_folder_len += len(files)
for folder, folders, file in os.walk(f'{orig_folder}_compressed'): for folder, folders, files in os.walk(f'{orig_folder}_compressed'):
comp_folder_len += len(file) for file in files:
if not os.path.splitext(file)[1].count(" (copy)"):
comp_folder_len += 1
if orig_folder_len == comp_folder_len: if orig_folder_len == comp_folder_len:
printer.info("Success!") printer.info("Success!")
@ -46,6 +50,22 @@ 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):
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)")
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"{folder}_compressed/{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():
text = "Usage: ffmpeg-comp {folder}" return "Usage: ffmpeg-comp {folder}"
return text