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
# -*- 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()