diff --git a/vnrecode/application.py b/vnrecode/application.py index d32a3cf..c7cb7cd 100755 --- a/vnrecode/application.py +++ b/vnrecode/application.py @@ -42,6 +42,7 @@ class Application: for future in as_completed(futures): future.result() + self.utils.print_duplicates() self.utils.get_compression_status(source) self.utils.sys_pause() print(f"Time taken: {datetime.now() - start_time}") \ No newline at end of file diff --git a/vnrecode/compress.py b/vnrecode/compress.py index 75202ee..249061e 100644 --- a/vnrecode/compress.py +++ b/vnrecode/compress.py @@ -46,7 +46,7 @@ class Compress: def audio(self, in_dir, file, out_dir, extension): bit_rate = self.params.audio_bitrate - out_file = self.utils.check_duplicates(f'{out_dir}/{os.path.splitext(file)[0]}.{extension}') + out_file = self.utils.check_duplicates(in_dir, out_dir, f'{os.path.splitext(file)[0]}.{extension}') try: (FFmpeg() .input(f'{in_dir}/{file}') @@ -65,7 +65,7 @@ class Compress: def video(self, in_dir, file, out_dir, extension): if not self.params.video_skip: - out_file = self.utils.check_duplicates(f'{out_dir}/{os.path.splitext(file)[0]}.{extension}') + out_file = self.utils.check_duplicates(in_dir, out_dir, f'{os.path.splitext(file)[0]}.{extension}') codec = self.params.video_codec crf = self.params.video_crf @@ -91,7 +91,7 @@ class Compress: def image(self, in_dir, file, out_dir, extension): quality = self.params.image_quality - out_file = self.utils.check_duplicates(f"{out_dir}/{os.path.splitext(file)[0]}.{extension}") + out_file = self.utils.check_duplicates(in_dir, out_dir, f"{os.path.splitext(file)[0]}.{extension}") try: image = Image.open(f'{in_dir}/{file}') @@ -127,7 +127,7 @@ class Compress: def unknown(self, in_dir, filename, out_dir): if self.params.force_compress: self.printer.unknown_file(filename) - out_file = self.utils.check_duplicates(f'{out_dir}/{filename}') + out_file = self.utils.check_duplicates(in_dir, out_dir, filename) try: (FFmpeg() .input(f'{in_dir}/{filename}') @@ -144,7 +144,6 @@ class Compress: self.utils.add_unprocessed_file(f'{in_dir}/{filename}', f'{out_dir}/{filename}') return f'{out_dir}/{filename}' - def compress(self, _dir, filename, source, output): match File.get_type(filename): case "audio": @@ -157,7 +156,7 @@ class Compress: out_file = self.unknown(_dir, filename, output) if self.params.mimic_mode: - os.rename(out_file, f'{_dir}/{filename}'.replace(source, f"{source}_compressed")) + self.utils.mimic_rename(out_file, f'{_dir}/{filename}', source) self.printer.bar.update() self.printer.bar.next() diff --git a/vnrecode/utils.py b/vnrecode/utils.py index 040da09..96b7db9 100644 --- a/vnrecode/utils.py +++ b/vnrecode/utils.py @@ -1,4 +1,5 @@ from shutil import copyfile +from glob import glob import sys import os @@ -8,6 +9,7 @@ class Utils: self.errors = 0 self.params = params self.printer = printer + self.duplicates = [] @staticmethod def sys_pause(): @@ -61,11 +63,24 @@ class Utils: copyfile(orig_folder, new_folder) self.printer.info(f"File {filename} copied to compressed folder.") - def check_duplicates(self, new_folder): - filename = new_folder.split().pop() - if os.path.exists(new_folder): + def check_duplicates(self, in_dir, out_dir, filename): + duplicates = glob(f"{in_dir}/{os.path.splitext(filename)[0]}.*") + if len(duplicates) > 1: + if filename in self.duplicates: + new_name = os.path.splitext(filename)[0] + "(vncopy)" + os.path.splitext(filename)[1] + return f"{out_dir}/{new_name}" + self.duplicates.append(filename) + return f"{out_dir}/{filename}" + + def print_duplicates(self): + for filename in self.duplicates: self.printer.warning( 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 + f'"{os.path.splitext(filename)[0] + "(vncopy)" + os.path.splitext(filename)[1]}"') + + @staticmethod + def mimic_rename(filename, target, source): + if filename.count("(vncopy)"): + target = os.path.splitext(target)[0] + "(vncopy)" + os.path.splitext(target)[1] + + os.rename(filename, target.replace(source, f"{source}_compressed")) \ No newline at end of file