From 57cc50a44c5287ee4bab1ff3db6bdd1a677a92fd Mon Sep 17 00:00:00 2001 From: Tyler Perkins Date: Sat, 10 Dec 2022 15:16:43 -0500 Subject: [PATCH] done --- main.py | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 main.py diff --git a/main.py b/main.py new file mode 100755 index 0000000..4bdd90f --- /dev/null +++ b/main.py @@ -0,0 +1,85 @@ +#!/usr/bin/python + +import time +import sys +import os +from watchdog.observers import Observer +from watchdog.events import FileSystemEventHandler + +from minio import Minio +from minio.commonconfig import Tags +from minio.error import S3Error + +DIRECTORY_TO_WATCH = "/media/hd/memes/" +client = None +S3_BUCKET = None + +def uploadFile(file_name): + pass + +class Watcher: + def __init__(self): + self.observer = Observer() + + def run(self): + event_handler = Handler() + self.observer.schedule(event_handler, DIRECTORY_TO_WATCH, recursive=True) + self.observer.start() + try: + while True: + time.sleep(5) + except: + self.observer.stop() + print("Error!") + self.observer.join() + +class Handler(FileSystemEventHandler): + @staticmethod + def on_any_event(event): + if event.is_directory: + None + elif event.event_type == 'created': + print("Made file " + event.src_path) + tags = Tags.new_object_tags() + tags["uploader"] = "Tyler" + head, filename = os.path.split(event.src_path) + client.fput_object(bucket_name=S3_BUCKET, + object_name=filename, + file_path=event.src_path, + tags=tags, + content_type=None) + os.remove(event.src_path) + print("Uploaded file!") + +def main(): + global client + global S3_BUCKET + + if "S3_URL" not in os.environ: + raise Exception("S3_URL is not set!") + S3_URL = os.environ["S3_URL"] + if "S3_UN" not in os.environ: + raise Exception("S3_UN is not set!") + S3_UN = os.environ["S3_UN"] + if "S3_PW" not in os.environ: + raise Exception("S3_PW is not set!") + S3_PW = os.environ["S3_PW"] + if "S3_BUCKET" not in os.environ: + raise Exception("S3_BUCKET is not set!") + S3_BUCKET = os.environ["S3_BUCKET"] + + # override defaults + if "S3_TLS" in os.environ: + S3_TLS = os.environ["S3_TLS"].lower() in ("yes", "true", "1", "t") + + client = Minio(S3_URL, + access_key=S3_UN, + secret_key=S3_PW, + secure=S3_TLS) + + w = Watcher() + w.run() + + +if __name__ == '__main__': + sys.exit(main())