X-Git-Url: http://git.treefish.org/~alex/photosort.git/blobdiff_plain/e7b340f1a05c4ef9a28a427d34ff12f14113c95c..9abf01c0adb9b5e7b0d74da76bf7f86b49e30cb6:/src/dirtrigger.py?ds=sidebyside diff --git a/src/dirtrigger.py b/src/dirtrigger.py index 7978df3..67945de 100644 --- a/src/dirtrigger.py +++ b/src/dirtrigger.py @@ -1,16 +1,16 @@ import threading import time -from watchdog.events import FileSystemEventHandler +from watchdog.events import DirDeletedEvent, FileDeletedEvent, FileSystemEventHandler from watchdog.observers import Observer class DirTrigger(FileSystemEventHandler): - COOL_TIME = 10 - MAX_TIME = 86400 - def __init__(self, dir_path): + def __init__(self, dir_path, cool_time, max_time): self._got_event = False self._last_event_time = 0.0 self._last_reset_time = 0.0 + self._cool_time = cool_time + self._max_time = max_time self._lock = threading.Lock() self._observer = Observer() self._observer.schedule(self, path=dir_path, recursive=True) @@ -25,8 +25,8 @@ class DirTrigger(FileSystemEventHandler): self._lock.acquire() try: return ( self._got_event and - (time.time() - self._last_event_time > DirTrigger.COOL_TIME) ) or \ - time.time() - self._last_reset_time > DirTrigger.MAX_TIME + (time.time() - self._last_event_time > self._cool_time) ) or \ + time.time() - self._last_reset_time > self._max_time finally: self._lock.release() @@ -35,6 +35,9 @@ class DirTrigger(FileSystemEventHandler): self._last_reset_time = time.time() def on_any_event(self, event): + if event.event_type == FileDeletedEvent or event.event_type == DirDeletedEvent: + return + self._lock.acquire() try: self._got_event = True