custom dir, multiple search patterns

Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
2024-05-12 19:01:11 +07:00
parent 6daffeee15
commit 2aa2d194aa

View File

@@ -1,28 +1,54 @@
#!/usr/bin/python3 #!/usr/bin/python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from sys import exit from sys import exit, argv
from os import listdir, rename from os import listdir, rename
from os.path import splitext, realpath from os.path import splitext, realpath, exists
from re import search 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): def rename_file(current_name, splitted, settedPath):
found_number = search(number_pattern, file_name[0]) # Ищем номер серии, если он есть то продолжаем for pattern in patterns:
if found_number is not None: found_number = search(pattern[0], splitted[0]) # Ищем номер эпизода, если он есть то продолжаем
found_number = found_number.group()[1:-1] # Убираем квадратные скобки if found_number is None:
current_path = realpath(full_path) # Получаем путь до файла continue
new_path = "{}{}{}".format(current_path.replace(full_path, ""), found_number, file_name[1]) # Новый путь до файла 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) # Переименовываем файл 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__': if __name__ == '__main__':
for file_name in listdir(): try:
splitted_name = splitext(file_name) # Разделяем имя файла и его расширение, итог: кортеж (0 - имя файла, 1 - расширение) print("Чтобы оставить текущую директорию нажмите 'Enter'")
if splitted_name[1] in extension_versions: # Проверяем совпадения расширения со списком, если есть совпадения то переименовываем файл print("Чтобы выйти нажмите 'Ctrl + C'")
rename_file(file_name, splitted_name) # Вызываем функцию переименования файла folder_input()
exit() except KeyboardInterrupt:
exit()