Finalize basic functionality.

This commit is contained in:
2022-07-22 03:02:08 -04:00
parent 40c323c3fd
commit 40c1174ff2

53
download_manager.py Normal file → Executable file
View File

@@ -5,50 +5,65 @@
# #
# Written by Jadon Yack (jyack) # Written by Jadon Yack (jyack)
import os from os import scandir, getlogin, rename
import shutil from os.path import splitext, exists, join
import sys from shutil import move as mv
import time from time import sleep
import logging import logging
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler from watchdog.events import FileSystemEventHandler
user = os.getlogin() user = getlogin()
src_dir = "/home/" + user + "/Downloads" src_dir = f"/home/{user}/Downloads"
img_dst = "/home/" + user + "/Pictures/DownloadedImages" img_dst = f"/home/{user}/Pictures/DownloadedImages"
vid_dst = "/home/" + user + "/Videos" vid_dst = f"/home/{user}/Videos"
doc_dst = "/home/" + user + "/Documents" doc_dst = f"/home/{user}/Documents"
iso_dst = "/home/" + user + "/ISOs" iso_dst = f"/home/{user}/ISOs"
def makeUniq(path, name): def makeUniq(dst, name):
filename, extension = splitext(name)
counter = 1
# If the file exists, add the counter to the filename
while exists(f"{dst}/{name}"):
name = f"{filename}({counter}){extension}"
counter += 1
return name
def move(entry, name, dst_dir): def move(entry, name, dst_dir):
name = makeUniq(entry.path, name) if exists(f"{dst_dir}/{name}"):
uniq_name = makeUniq(dst_dir, name)
old_name = join(dst_dir, name)
new_name = join(dst_dir, uniq_name)
rename(old_name, new_name)
mv(entry, dst_dir)
class FileHandler(FileSystemEventHandler): class FileHandler(FileSystemEventHandler):
def on_modified(self, event): def on_modified(self, event):
with os.scandir(src_dir) as entries: with scandir(src_dir) as entries:
for entry in entries: for entry in entries:
name = entry.name name = entry.name
dst = src_dir dst = src_dir
# If entry is an image # If entry is an image
if name.endswith('.jpg') or name.endswith('.jpeg') if name.endswith('.jpg') or name.endswith('.jpeg') or name.endswith('.png'):
or name.endswith('.png'):
dst = img_dst dst = img_dst
move(entry, name, dst)
# If entry is a video # If entry is a video
elif name.endswith('.mp4') or name.endswith('.mov'): elif name.endswith('.mp4') or name.endswith('.mov'):
dst = vid_dst dst = vid_dst
move(entry, name, dst)
# If entry is a document # If entry is a document
elif name.endswith('.docx') or name.endswith('.pdf'): elif name.endswith('.docx') or name.endswith('.pdf'):
dst = doc_dst dst = doc_dst
move(entry, name, dst)
# If entry is an ISO file # If entry is an ISO file
elif name.endswith('.iso'): elif name.endswith('.iso'):
dst = iso_dst dst = iso_dst
move(entry, name, dst) move(entry, name, dst)
if __name__ == "__main__": if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s', format='%(asctime)s - %(message)s',
@@ -60,7 +75,7 @@ if __name__ == "__main__":
observer.start() observer.start()
try: try:
while True: while True:
time.sleep(10) sleep(10)
except KeyboardInterrupt: except KeyboardInterrupt:
observer.stop() observer.stop()
observer.join() observer.join()