-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile_parser.py
More file actions
79 lines (72 loc) · 1.96 KB
/
file_parser.py
File metadata and controls
79 lines (72 loc) · 1.96 KB
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
import sys
from pathlib import Path
JPEG_IMAGES = []
PNG_IMAGES = []
JPG_IMAGES = []
SVG_IMAGES = []
AVI_VIDEO = []
MP4_VIDEO = []
MOV_VIDEO = []
MKV_VIDEO = []
DOC_DOCUMENT = []
DOCX_DOCUMENT = []
TXT_DOCUMENT = []
PDF_DOCUMENT = []
XLSX_DOCUMENT = []
PPTX_DOCUMENT = []
MP3_AUDIO = []
OGG_AUDIO = []
WAV_AUDIO = []
AMR_AUDIO = []
ZIP_ARCHIVES = []
GZ_ARCHIVES = []
TAR_ARCHIVES = []
MY_OTHER = []
REGISTER_EXTENSION = {
'JPEG': JPEG_IMAGES,
'JPG': JPG_IMAGES,
'PNG': PNG_IMAGES,
'SVG': SVG_IMAGES,
'AVI': AVI_VIDEO,
'MP4': MP4_VIDEO,
'MOV': MOV_VIDEO,
'MKV': MKV_VIDEO,
'MP3': MP3_AUDIO,
'OGG': OGG_AUDIO,
'WAV': WAV_AUDIO,
'AMR': AMR_AUDIO,
'DOCX': DOCX_DOCUMENT,
'TXT': TXT_DOCUMENT,
'PDF': PDF_DOCUMENT,
'XLSX': XLSX_DOCUMENT,
'PPTX': PPTX_DOCUMENT,
'ZIP': ZIP_ARCHIVES,
'GZ': GZ_ARCHIVES,
'TAR': TAR_ARCHIVES,
}
FOLDERS = []
EXTENSIONS = set()
UNKNOWN = set()
def get_extension(name: str) -> str:
return Path(name).suffix[1:].upper() # suffix[1:] -> .jpg -> jpg
def scan(folder: Path):
for item in folder.iterdir():
# Робота з папкою
if item.is_dir(): # перевіряємо чи обєкт папка
if item.name not in ('archives', 'video', 'audio', 'documents', 'images', 'MY_OTHER'):
FOLDERS.append(item)
scan(item)
continue
# Робота з файлом
extension = get_extension(item.name) # беремо розширення файлу
full_name = folder / item.name # беремо повний шлях до файлу
if not extension:
MY_OTHER.append(full_name)
else:
try:
ext_reg = REGISTER_EXTENSION[extension]
ext_reg.append(full_name)
EXTENSIONS.add(extension)
except KeyError:
UNKNOWN.add(extension) # .mp4, .mov, .avi
MY_OTHER.append(full_name)