def watch_note(note, handle_func): """watch a single note for changes, call `handle_func` on change""" ob = Observer() handler = FileSystemEventHandler() note_filename = path.basename(note) def handle_event(event): _, filename = path.split(event.src_path) if note_filename == filename or \ path.normpath(event.src_path) == path.normpath(util.assets_dir(note)): print('compiling...') handle_func(note) print('done') handler.on_any_event = handle_event print('watching "{0}"...'.format(note_filename)) ob.schedule(handler, path.dirname(note), recursive=True) ob.start() try: while True: time.sleep(1) except KeyboardInterrupt: print('stopping...') ob.stop() ob.join()
def watch_note(note, handle_func): """watch a single note for changes, call `handle_func` on change""" ob = Observer() handler = FileSystemEventHandler() def handle_event(event): """update the note only if: - the note itself is changed - a referenced asset is changed """ _, filename = os.path.split(event.src_path) # get all absolute paths of referenced images images = [] for img_path in note.images: if not os.path.isabs(img_path): img_path = os.path.join(note.dir, img_path) images.append(img_path) if note.filename == filename or event.src_path in images: handle_func(note) handler.on_any_event = handle_event print('watching {0}...'.format(note.title)) ob.schedule(handler, note.dir, recursive=True) ob.start() try: while True: time.sleep(1) except KeyboardInterrupt: print('stopping...') ob.stop() ob.join()
def monitoring(self): self._observer = Observer() event_handler = FileSystemEventHandler() event_handler.on_any_event = self.update self._observer.schedule(event_handler, self._path, False) self._observer.start() while True: time.sleep(self.delay) self._observer.stop() self._observer.join()
def watch_presentation(note, outdir): n = note ob = Observer() handler = FileSystemEventHandler() def handle_event(event): _, filename = path.split(event.src_path) if n.filename == filename or path.normpath(event.src_path) == path.normpath(n.assets): compile_presentation(n, outdir) handler.on_any_event = handle_event print('Watching {0}...'.format(n.title)) ob.schedule(handler, n.notebook.path.abs, recursive=True) ob.start() try: while True: time.sleep(1) except KeyboardInterrupt: print('Stopping...') ob.stop() ob.join()
def watch_note(note, handle_func): """watch a single note for changes, call `handle_func` on change""" ob = Observer() handler = FileSystemEventHandler() def handle_event(event): _, filename = os.path.split(event.src_path) if note.filename == filename or os.path.normpath(event.src_path) == os.path.normpath(note.assets): handle_func(note) handler.on_any_event = handle_event print('Watching {0}...'.format(note.title)) ob.schedule(handler, note.notebook.path.abs, recursive=True) ob.start() try: while True: time.sleep(1) except KeyboardInterrupt: print('Stopping...') ob.stop() ob.join()
item = loads(line) items.append(item) except JSONDecodeError: print(line) except FileNotFoundError: pass table = ItemTable(items) with open("static/index.html", "w") as f: f.write(table.__html__()) def handler(event): if "votes" in event.src_path: generate_html() if __name__ == "__main__": path = sys.argv[1] generate_html() event_handler = FileSystemEventHandler() event_handler.on_any_event = handler observer = Observer() observer.schedule(event_handler, path, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()
def WatchCommand(ManageCommand): settings = Session(ManageCommand.options.config) cwd = os.path.realpath(os.getcwd()) package = cwd.split("/")[-1] src_brunch = path(pkg_resources.resource_filename( 'SimpleSeer', 'static')) tgt_brunch = path(cwd) / package / 'brunch_src' if settings.in_cloud: cloud_brunch = path(pkg_resources.resource_filename('SeerCloud', 'static')) BuildCommand("").run() #run a build first, to make sure stuff's up to date #i'm not putting this in pip, since this isn't necessary in production from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler #Event watcher for SimpleSeer seer_event_handler = FileSystemEventHandler() seer_event_handler.eventqueue = [] def rebuild(event): seer_event_handler.eventqueue.append(event) seer_event_handler.on_any_event = rebuild seer_observer = Observer() seer_observer.schedule(seer_event_handler, path=src_brunch, recursive=True) #Event watcher for SeerCloud if settings.in_cloud: cloud_event_handler = FileSystemEventHandler() cloud_event_handler.eventqueue = [] def build_cloud(event): cloud_event_handler.eventqueue.append(event) cloud_event_handler.on_any_event = build_cloud cloud_observer = Observer() cloud_observer.schedule(cloud_event_handler, path=cloud_brunch, recursive=True) #Event watcher for seer application local_event_handler = FileSystemEventHandler() local_event_handler.eventqueue = [] def build_local(event): local_event_handler.eventqueue.append(event) local_event_handler.on_any_event = build_local local_observer = Observer() local_observer.schedule(local_event_handler, path=tgt_brunch, recursive=True) seer_observer.start() if settings.in_cloud: cloud_observer.start() local_observer.start() ss_builds = 0 while True: ss_builds += len(seer_event_handler.eventqueue) try: ss_builds += len(cloud_event_handler.eventqueue) except UnboundLocalError: pass if ss_builds: time.sleep(0.2) BuildCommand("").run() time.sleep(0.1) seer_event_handler.eventqueue = [] try: cloud_event_handler.eventqueue = [] except UnboundLocalError: pass local_event_handler.eventqueue = [] ss_builds = 0 if len(local_event_handler.eventqueue): time.sleep(0.2) with tgt_brunch: print "Updating " + cwd print subprocess.check_output(['brunch', 'build']) local_event_handler.eventqueue = [] time.sleep(0.5)
def on_any_event(self,event): print("wtf : "+ str(event)) FileSystemEventHandler.on_any_event(self,event)
if __name__ == '__main__': l.basicConfig(level=l.DEBUG, format='[%(asctime)s] %(levelname)s | %(message)s') # argument parser parser = _setup_parser() args = parser.parse_args() # args path = args.path dest_path = args.dest_path # event event_handler = FileSystemEventHandler() event_handler.on_any_event = lambda evt: on_event_debounced(evt) observer = Observer(timeout=0.1) l.debug(f'Observer={observer.__class__}') observer.schedule(event_handler, path, recursive=True) observer.start() l.info(f'Set watchdog on {os.path.abspath(path)}...') try: pass except InterruptedError: observer.stop() finally: observer.join() l.info('Stopped watchdog.')
if event.event_type == 'modified': # Taken any action here when a file is modified. logger.info("Received modified event - %s." % event.src_path) # TODO check its the right file ?? for func in watches: sFuncPath = os.path.abspath(func) sSrcPath = os.path.abspath(event.src_path) #print(sFuncPath, sSrcPath) if sFuncPath == sSrcPath: watches[func]() some = FileSystemEventHandler() some.on_any_event = dosomat observer.schedule(some, ".") transpiler = Transpiler() def extract(dct, namespace=None): if not namespace: namespace = globals() namespace.update(dct) def rockstar(text, namespace=None, printname=None): if (os.path.isfile(text)): rsf(text, namespace, printname) else: rs(text, namespace, printname)
def create_handler(handlers): event_handler = FileSystemEventHandler() event_handler.on_any_event = lambda event: print(f"hey, {event.src_path} has been created!") return event_handler