1
+ #!/usr/bin/python3
2
+
3
+ from watchdog .observers import Observer
4
+ from watchdog .events import FileSystemEventHandler
5
+ from shutil import move
6
+ import os
7
+ import time
8
+
9
+ class FileHandler (FileSystemEventHandler ):
10
+
11
+ file_extensions = {
12
+ '.jpg' : 'photos' ,
13
+ '.png' : 'photos' ,
14
+ '.bmp' : 'photos' ,
15
+ '.gif' : 'photos' ,
16
+ '.txt' : 'text' ,
17
+ '.docx' : 'documents' ,
18
+ '.pdf' : 'documents' ,
19
+ '.odt' : 'documents' ,
20
+ '.exe' : 'programs' ,
21
+ '.bat' : 'programs' ,
22
+ '.msi' : 'programs' ,
23
+ '.zip' : 'compressed' ,
24
+ '.rar' : 'compressed' ,
25
+ '.mp4' : 'videos' ,
26
+ '.avi' : 'videos' ,
27
+ '.webm' : 'videos' ,
28
+ '.mp3' : 'music' ,
29
+ '.WAV' : 'music' ,
30
+ '.mid' : 'midi' ,
31
+ '.psd' : 'photoshop_projects' ,
32
+ '.ai' : 'illustrator_projects' ,
33
+ '.jar' : 'java_files' ,
34
+ '.html' : 'html_files'
35
+ }
36
+
37
+ def __init__ (self , tracked_folder ):
38
+ self .tracked_folder = tracked_folder
39
+ for value in self .file_extensions .values ():
40
+ if not os .path .isdir (f'{ self .tracked_folder } \\ { value } \\ ' ):
41
+ os .mkdir (f'{ self .tracked_folder } \\ { value } \\ ' )
42
+
43
+ print ('Initialized' )
44
+
45
+ def on_created (self , event ):
46
+ time .sleep (1 )
47
+ for key in self .file_extensions .keys ():
48
+ if key in event .src_path :
49
+ extension = self .file_extensions [key ]
50
+ _name = '_' .join (time .asctime ().replace (':' , '.' ).split (' ' )) + key
51
+ _dest = f'{ self .tracked_folder } \\ { extension } \\ { _name } '
52
+ move (event .src_path , _dest )
53
+ print ('Change detected! Moving file {} to folder {}' .format (event .src_path .split ('\\ ' )[- 1 ], _dest .split ('\\ ' )[- 2 ]))
54
+
55
+ def add_file_extensions (self , extension , folder ):
56
+ self .file_extensions [extension ] = folder
57
+
58
+ def initialize_watching ():
59
+ handler = FileHandler (r'C:\Users\DOUGLASEDUARDOREISSI\Downloads' )
60
+ observer = Observer ()
61
+ observer .schedule (handler , handler .tracked_folder , recursive = True )
62
+ observer .start ()
63
+
64
+ while True :
65
+ try :
66
+ time .sleep (10 )
67
+ except KeyboardInterrupt :
68
+ observer .stop ()
69
+ observer .join ()
70
+ break
0 commit comments