MediaProcessing/apps/pyWatcher/worker/file_watcher.py
2026-01-02 01:09:26 +01:00

39 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import asyncio
from utils.file_handler import FileHandler
from utils.readiness import check_ready
from utils.logger import logger
class Handler(FileSystemEventHandler):
def __init__(self, db, extensions, insert_event):
self.db = db
self.file_handler = FileHandler(extensions)
self.insert_event = insert_event
def on_created(self, event):
if event.is_directory:
return
ev = self.file_handler.handle_created(event.src_path)
if ev:
self.insert_event(self.db, ev)
asyncio.create_task(check_ready(self.db, ev.referenceId, ev.data.fileName, ev.data.fileUri, self.insert_event))
logger.info(f" FileAddedEvent persisted for {ev.data.fileName}")
def on_deleted(self, event):
if event.is_directory:
return
ev = self.file_handler.handle_deleted(event.src_path)
if ev:
self.insert_event(self.db, ev)
logger.info(f" FileRemovedEvent persisted for {ev.data.fileName}")
def start_observer(db, path, extensions, insert_event):
observer = Observer()
handler = Handler(db, extensions, insert_event)
observer.schedule(handler, path, recursive=True)
observer.start()
logger.info(f"👀 Watching path: {path}")
return observer