diff --git a/rename.py b/rename.py index 3adf618..4b3fb5d 100644 --- a/rename.py +++ b/rename.py @@ -1,28 +1,54 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -from sys import exit +from sys import exit, argv from os import listdir, rename -from os.path import splitext, realpath +from os.path import splitext, realpath, exists from re import search -number_pattern = r"\[\d{1,}\]" # Паттерн для поиска номера серии -extension_versions = [".mkv", ".avi"] # Список поддерживаемых расширений + +patterns = [ # Паттерны для поиска номера эпизода + [r"\[\d+\]", 1, -1], + [r"[s]\d+[e]\d+", 4, None] +] +extension_versions = [".mkv", ".avi", ".mp4"] # Список поддерживаемых расширений -def rename_file(full_path, file_name): - found_number = search(number_pattern, file_name[0]) # Ищем номер серии, если он есть то продолжаем - if found_number is not None: - found_number = found_number.group()[1:-1] # Убираем квадратные скобки - current_path = realpath(full_path) # Получаем путь до файла - new_path = "{}{}{}".format(current_path.replace(full_path, ""), found_number, file_name[1]) # Новый путь до файла +def rename_file(current_name, splitted, settedPath): + for pattern in patterns: + found_number = search(pattern[0], splitted[0]) # Ищем номер эпизода, если он есть то продолжаем + if found_number is None: + continue + found_number = found_number.group()[ pattern[1]:pattern[2] ] + current_path = "{}\\{}".format(settedPath, current_name) if settedPath is not None else realpath(current_name) # Получаем путь до файла + new_path = "{}{}{}".format(current_path.replace(current_name, ""), found_number, splitted[1]) # Новый путь до файла rename(current_path, new_path) # Переименовываем файл - print("\"{}\" successfully renamed to \"{}\".".format(full_path, found_number + file_name[1])) + print("\"{}\" successfully renamed to \"{}\".".format(current_name, found_number + splitted[1])) + + +def main(folder): + for file_name in listdir(folder): + splitted_name = splitext(file_name) # Разделяем имя файла и его расширение, итог: кортеж (0 - имя файла, 1 - расширение) + if splitted_name[1] in extension_versions: # Проверяем совпадения расширения со списком, если есть совпадения то переименовываем файл + rename_file(file_name, splitted_name, folder) # Вызываем функцию переименования файла + folder_input() + + +def folder_input(): + folder = input("\nВведите путь до папки с эпизодами: ") + if exists(folder): + main(folder) + return + if (folder == "") and not exists(folder): + main(None) + return + folder_input() if __name__ == '__main__': - for file_name in listdir(): - splitted_name = splitext(file_name) # Разделяем имя файла и его расширение, итог: кортеж (0 - имя файла, 1 - расширение) - if splitted_name[1] in extension_versions: # Проверяем совпадения расширения со списком, если есть совпадения то переименовываем файл - rename_file(file_name, splitted_name) # Вызываем функцию переименования файла - exit() + try: + print("Чтобы оставить текущую директорию нажмите 'Enter'") + print("Чтобы выйти нажмите 'Ctrl + C'") + folder_input() + except KeyboardInterrupt: + exit()