|
1 | 1 | from shutil import move
|
2 |
| -from os import path |
3 | 2 | import os
|
4 |
| - |
5 |
| - |
6 |
| -directory = { |
7 |
| - 'Programming Files': set(['ipynb', 'py', 'java', 'cs', 'js', 'vsix', 'jar', 'cc', 'ccc', 'html', 'xml', 'kt']), |
8 |
| - 'Music': set(['mp3', 'wav', 'wma', 'mpa', 'ram', 'ra', 'aac', 'aif', 'm4a', 'tsa']), |
9 |
| - 'Videos': set(['mp4', 'webm', 'mkv', 'MPG', 'MP2', 'MPEG', 'MPE', 'MPV', 'OGG', 'M4P', 'M4V', 'WMV', 'MOV', 'QT', 'FLV', 'SWF', 'AVCHD', 'avi', 'mpg', 'mpe', 'mpeg', 'asf', 'wmv', 'mov', 'qt', 'rm']), |
10 |
| - 'Pictures': set(['jpeg', 'jpg', 'png', 'gif', 'tiff', 'raw', 'webp', 'jfif', 'ico', 'psd', 'svg', 'ai']), |
11 |
| - 'Applications': set(['exe', 'msi', 'deb', 'rpm']), |
12 |
| - 'Compressed': set(['zip', 'rar', 'arj', 'gz', 'sit', 'sitx', 'sea', 'ace', 'bz2', '7z']), |
13 |
| - 'Documents': set(['txt', 'pdf', 'doc', 'xlsx', 'pdf', 'ppt', 'pps', 'docx', 'pptx']), |
14 |
| - 'Other': set([]) |
15 |
| -} |
16 |
| - |
17 |
| - |
18 |
| -def create_folders(): |
19 |
| - |
| 3 | +import json |
| 4 | + |
| 5 | +# Load folder-extension mappings from config.json |
| 6 | +def load_config(file='config.json'): |
| 7 | + try: |
| 8 | + with open(file, 'r') as f: |
| 9 | + return json.load(f) |
| 10 | + except FileNotFoundError: |
| 11 | + print(f"Configuration file {file} not found! Using default settings.") |
| 12 | + return {} |
| 13 | + |
| 14 | +# Create folders based on config.json |
| 15 | +def create_folders(directory): |
20 | 16 | for dir_ in directory:
|
21 | 17 | try:
|
22 | 18 | os.mkdir(dir_)
|
23 | 19 | print(f'{dir_:20} Created')
|
24 | 20 | except OSError:
|
25 | 21 | print(f'{dir_:20} Already Exists')
|
26 | 22 |
|
27 |
| - |
28 |
| -def get_folder(ext): |
29 |
| - |
30 |
| - for f, ex in directory.items(): |
31 |
| - if ext in ex: |
32 |
| - return f |
| 23 | +# Determine which folder a file belongs to |
| 24 | +def get_folder(ext, directory): |
| 25 | + for folder, extensions in directory.items(): |
| 26 | + if ext in extensions: |
| 27 | + return folder |
33 | 28 | return 'Other'
|
34 | 29 |
|
35 |
| - |
36 |
| -def start(): |
| 30 | +# Start moving files based on their extensions |
| 31 | +def start(directory): |
37 | 32 | for filename in os.listdir():
|
38 | 33 | if filename != __file__ and filename[0] != '.' and '.' in filename:
|
39 | 34 | ext = os.path.basename(filename).split('.')[-1]
|
40 |
| - folder = get_folder(ext) |
| 35 | + folder = get_folder(ext, directory) |
41 | 36 | if not os.path.isfile(os.path.join(folder, filename)):
|
42 | 37 | move(filename, folder)
|
43 | 38 |
|
44 |
| - |
45 | 39 | if __name__ == '__main__':
|
46 |
| - create_folders() |
47 |
| - start() |
| 40 | + config = load_config() # Load configuration |
| 41 | + create_folders(config) # Create necessary folders |
| 42 | + start(config) # Start organizing files |
0 commit comments