-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMSCli.py
86 lines (71 loc) · 3.06 KB
/
CMSCli.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"""CLI Версия CMS."""
import os
vers = '0.3.4'
def ask_paths():
"""Запуск и в интерактивном режиме."""
input_dir = input('Путь до исходной директории: ')
output_dir = input('Путь до конечной директории: ')
return input_dir, output_dir
def start_interactive():
"""Запуск интерактивного режима."""
answers = ask_paths()
input_dir = answers[0]
output_dir = answers[1]
if input_dir is None or output_dir is None:
print('Не указана начальная или конечная директория')
return
elif input_dir == output_dir:
print('Начальная и конечная директории не должны совпадать')
return
else:
main_process(input_dir, output_dir)
def main_process(input_dir, output_dir):
"""Принимает начальную и конечную директории, запускает копирование.
Параметры
----------
input_dir : string
Путь начальной директории в виде строки.
output_dir : string
Путь конечной директории в виде строки.
Не возвращает результатов.
-------
"""
pass
start_interactive()
exit()
for path, subdirs, files in os.walk(input_dir):
for file in files:
# Перегоняем все MP3 в целевую директорию,
# потом разберемся что с ними делать
# Хотя, лучше искать только нужные (отбрасывать лайвы и ремиксы
# и перегонять уже без них)
filtered = re.search('.*mp3', file)
if filtered is not None:
print(f'{path}/{filtered.group(0)}')
shutil.copyfile(f'{path}/{filtered.group(0)}',
f'{output_dir}/{filtered.group(0)}')
source_file = []
# 3.1. Удаление ремиксов и лайвов
regex = r'.*\(.*[Rr]emix.*\).*|.*\(.*[Ll]ive.*\).*'
for files in os.walk(output_dir):
for file in files[2]:
try:
source_file.append(re.search(regex, file).group(0))
except Exception:
pass
for file in source_file:
print('Removing Remix: ', file)
os.remove(f'{output_dir}/{file}')
source_file.clear() # Очищаем список
# 3.2. Готовим список свежепринесенных файлов с вычищенными ремиксами и лайвами
for files in os.walk(output_dir):
for file in files[2]:
try:
source_file.append(file)
except Exception:
pass
# 3.3. Убираем из имен файлов мусор (номера треков в различном формате)
for file in source_file:
new_file = re.sub(r'^[\d{1,2}\s\-\.]*', '', file)
shutil.move(f'{output_dir}/{file}', f'{output_dir}/{new_file}')
source_file.clear()