59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
#!/usr/bin/python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
from sys import exit, argv
|
||
from os import listdir, rename
|
||
from os.path import splitext, realpath, exists
|
||
from re import search
|
||
|
||
|
||
patterns = [ # Паттерны для поиска номера эпизода
|
||
[r"\[\d+\]", 1, -1],
|
||
[r"[s]\d+[e]\d+", 4, None],
|
||
[r"\d+$", None, None],
|
||
# [r".\d+", None, None]
|
||
]
|
||
extensions = [".mkv", ".avi", ".mp4"] # Список поддерживаемых расширений
|
||
|
||
|
||
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] ]
|
||
new_name = "{:02d}{}".format(int(found_number), splitted[1]) # Новое имя файла
|
||
current_path = "{}\\{}".format(settedPath, current_name) if settedPath is not None else realpath(current_name) # Получаем путь до файла
|
||
new_path = "{}{}".format(current_path.replace(current_name, ""), new_name) # Новый путь до файла
|
||
rename(current_path, new_path) # Переименовываем файл
|
||
print("\"{}\" successfully renamed to \"{}\".".format(current_name, new_name))
|
||
break
|
||
|
||
|
||
def main(folder):
|
||
for file_name in listdir(folder):
|
||
splitted_name = splitext(file_name) # Разделяем имя файла и его расширение, итог: кортеж (0 - имя файла, 1 - расширение)
|
||
if splitted_name[1] in extensions: # Проверяем совпадения расширения со списком, если есть совпадения то переименовываем файл
|
||
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__':
|
||
try:
|
||
print("Чтобы оставить текущую директорию нажмите 'Enter'")
|
||
print("Чтобы выйти нажмите 'Ctrl + C'")
|
||
folder_input()
|
||
except KeyboardInterrupt:
|
||
exit()
|