Skip to content

Commit fd04896

Browse files
create project organize files
1 parent ba9d75d commit fd04896

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

sortify.py

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import os
2+
import shutil
3+
import tkinter as tk
4+
from tkinter import filedialog, messagebox
5+
6+
FILE_CATEGORIES = {
7+
"Images": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg", ".tiff", ".webp", ".ico", ".heic", ".raw", ".nef",
8+
".cr2"],
9+
"Documents": [".pdf", ".docx", ".doc", ".txt", ".pptx", ".ppt", ".csv", ".odt", ".rtf", ".tex", ".log"],
10+
"E-Books": [".epub", ".mobi", ".azw3", ".fb2", ".djvu"],
11+
"Music": [".mp3", ".wav", ".flac", ".aac", ".ogg", ".wma", ".m4a", ".aiff", ".opus"],
12+
"Videos": [".mp4", ".avi", ".mov", ".mkv", ".flv", ".wmv", ".webm", ".mpeg", ".mpg", ".3gp"],
13+
"Archives": [".zip", ".rar", ".7z", ".tar", ".gz", ".bz2", ".xz", ".iso"],
14+
"Program Files": [".py", ".js", ".html", ".css", ".cpp", ".c", ".java", ".php", ".rb", ".swift", ".cs", ".go",
15+
".ts", ".sh", ".bat",
16+
".ps1", ".json", ".xml", ".yaml", ".ini", ".pl", ".lua", ".kt", ".rs"],
17+
"Executables": [".exe", ".msi", ".apk", ".app", ".deb", ".rpm", ".run"],
18+
"Fonts": [".ttf", ".otf", ".woff", ".woff2"],
19+
"CAD & 3D Models": [".dwg", ".dxf", ".stl", ".obj", ".step", ".iges", ".skp", ".blend", ".3ds"],
20+
"Torrents": [".torrent"],
21+
"Backups": [".bak", ".bkp", ".backup", ".old"],
22+
"Disk Images": [".iso", ".img", ".vmdk", ".dmg"],
23+
"Database Files": [".sql", ".sqlite", ".db", ".mdb", ".accdb"],
24+
"Spreadsheets": [".xls", ".xlsx", ".ods"],
25+
}
26+
27+
28+
def organize_files(directory):
29+
"""Функция за подреждане на файловете в избраната директория."""
30+
if not directory:
31+
messagebox.showerror("Грешка / Error", "Моля, изберете директория! / Please choose a directory")
32+
33+
return
34+
35+
for folder in FILE_CATEGORIES.keys():
36+
folder_path = os.path.join(directory, folder)
37+
os.makedirs(folder_path, exist_ok=True)
38+
39+
for file in os.listdir(directory):
40+
file_path = os.path.join(directory, file)
41+
if os.path.isfile(file_path):
42+
for folder, extensions in FILE_CATEGORIES.items():
43+
if file.lower().endswith(tuple(extensions)):
44+
shutil.move(file_path, os.path.join(directory, folder))
45+
break
46+
47+
messagebox.showinfo("Готово! / Done!", "Файловете са подредени успешно! ✅ / Files sorted successfully! ✅!")
48+
49+
50+
def choose_directory():
51+
"""Отваря прозорец за избор на директория."""
52+
folder_selected = filedialog.askdirectory()
53+
if folder_selected:
54+
organize_files(folder_selected)
55+
56+
57+
58+
root = tk.Tk()
59+
root.title("File Organizer")
60+
root.geometry("400x200")
61+
62+
btn_select = tk.Button(root, text="Избери папка и подреди!\n"
63+
"Choose a folder and organize!",
64+
command=choose_directory, padx=10, pady=5)
65+
btn_select.pack(pady=50)
66+
67+
68+
root.mainloop()

0 commit comments

Comments
 (0)