From 40c323c3fdaaf89a650a40c6b47e0d4ca785cb38 Mon Sep 17 00:00:00 2001 From: Jadon Yack Date: Thu, 21 Jul 2022 23:22:28 -0400 Subject: [PATCH] Add FileHandler class --- download_manager.py | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/download_manager.py b/download_manager.py index b5b2754..ac4a65b 100644 --- a/download_manager.py +++ b/download_manager.py @@ -6,6 +6,12 @@ # Written by Jadon Yack (jyack) import os +import shutil +import sys +import time +import logging +from watchdog.observers import Observer +from watchdog.events import LoggingEventHandler user = os.getlogin() src_dir = "/home/" + user + "/Downloads" @@ -14,3 +20,48 @@ vid_dst = "/home/" + user + "/Videos" doc_dst = "/home/" + user + "/Documents" iso_dst = "/home/" + user + "/ISOs" +def makeUniq(path, name): + + +def move(entry, name, dst_dir): + name = makeUniq(entry.path, name) + + +class FileHandler(FileSystemEventHandler): + def on_modified(self, event): + with os.scandir(src_dir) as entries: + for entry in entries: + name = entry.name + dst = src_dir + # If entry is an image + if name.endswith('.jpg') or name.endswith('.jpeg') + or name.endswith('.png'): + dst = img_dst + # If entry is a video + elif name.endswith('.mp4') or name.endswith('.mov'): + dst = vid_dst + # If entry is a document + elif name.endswith('.docx') or name.endswith('.pdf'): + dst = doc_dst + # If entry is an ISO file + elif name.endswith('.iso'): + dst = iso_dst + + move(entry, name, dst) + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + path = src_dir + event_handler = FileHandler() + observer = Observer() + observer.schedule(event_handler, path, recursive=True) + observer.start() + try: + while True: + time.sleep(10) + except KeyboardInterrupt: + observer.stop() + observer.join() +