From 128c3f9f2adf57ce3f5231085c2b197c41d04e87 Mon Sep 17 00:00:00 2001 From: nojhan Date: Sun, 26 Nov 2017 22:34:18 +0100 Subject: [PATCH] working watchdog that prints an available name --- flicksave.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/flicksave.py b/flicksave.py index 8cb7499..d0ba942 100644 --- a/flicksave.py +++ b/flicksave.py @@ -1,14 +1,17 @@ import os import glob import datetime +from watchdog.observers import Observer +from watchdog.events import FileSystemEventHandler +from watchdog.events import LoggingEventHandler def last_of(us): return us[-1] class Flick: - def __init__(self, basename, save_dir=".", delay=10, stamp_sep='_', date_template="%Y-%m-%dT%H:%M:%S"): - self.base = basename + def __init__(self, target, save_dir=".", delay=10, stamp_sep='_', date_template="%Y-%m-%dT%H:%M:%S"): + self.base = target self.date_template = date_template self.date_sep = stamp_sep self.save_dir = save_dir @@ -57,8 +60,47 @@ class Flick: return self.make(self.save_dir,name,date_now,ext) +class Save(FileSystemEventHandler): + def __init__(self, target, flick = None): + if not flick: + self.flick = Flick(target) + else: + self.flick = flick + + self.base = target + super(Save,self).__init__() + + def on_any_event(self, event): + super(Save,self).on_any_event(event) + if (not event.is_directory) and event.src_path == self.base: + logging.info("Touched %s: %s", event.src_path, self.flick.next()) + + if __name__=="__main__": import sys + import time + import logging + + target = sys.argv[1] + path = os.path.dirname(target) + + flick = Flick(target) + print(flick.next()) + + observer = Observer() + + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + + event_handler = Save(target, flick) + observer.schedule(event_handler, path) + + observer.start() + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + observer.stop() + observer.join() - f = Flick(sys.argv[1]) - print(f.next())