Esempio n. 1
0
    def run(self):
        self.curr_time = self.get_time()
        patterns = "*"
        ignore_patterns = "*\logs.txt", "*\logs.csv", "*\logs", "*.py"
        ignore_directories = False
        case_sensitive = True

        my_event_handler = PatternMatchingEventHandler(patterns,
                                                       ignore_patterns,
                                                       ignore_directories,
                                                       case_sensitive)
        my_event_handler.on_created = self.on_created
        my_event_handler.on_deleted = self.on_deleted
        my_event_handler.on_modified = self.on_modified
        my_event_handler.on_moved = self.on_moved
        path = ".\\" + self.path_to_watch
        go_recursively = True
        my_observer = Observer()
        my_observer.schedule(my_event_handler, path, recursive=go_recursively)
        my_observer.start()

        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            my_observer.stop()
            my_observer.join()
Esempio n. 2
0
def stream(graph, tags, communities, args):
    # Code credit: http://thepythoncorner.com/dev/how-to-create-a-watchdog-in-python-to-look-for-filesystem-changes/
    event_handler = PatternMatchingEventHandler(patterns=["*.md"],
                                                case_sensitive=True)

    smds_event_handler = SMDSEventHandler(graph, tags, communities, args)
    event_handler.on_created = smds_event_handler.on_created()
    event_handler.on_deleted = smds_event_handler.on_deleted()
    event_handler.on_modified = smds_event_handler.on_modified()
    event_handler.on_moved = smds_event_handler.on_moved()

    observer = Observer()
    path = Path(args.input)
    if smdc.DEBUG:
        print(path.absolute(), flush=True)
    observer.schedule(event_handler, path=Path(args.input), recursive=args.r)

    observer.start()

    try:
        print("Stream is active!", flush=True)
        import sys
        sys.stdout.flush()
        while True:
            # TODO: Catch when connection to neo4j server is down.
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        observer.join()
def main(argv):
    global my_observer
    global stop
    log("user:"******"*kisokos.txt"]
    ignore_patterns = None
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                   ignore_directories,
                                                   case_sensitive)

    my_event_handler.on_created = on_created
    my_event_handler.on_deleted = on_deleted
    my_event_handler.on_modified = on_modified
    my_event_handler.on_moved = on_moved

    path = "c:\\Users\\eharvin\\OneDrive - Ericsson AB\\00company"
    go_recursively = False
    my_observer = Observer()
    my_observer.schedule(my_event_handler, path, recursive=go_recursively)

    my_observer.start()
    try:
        while True:
            time.sleep(1)
            if stop:
                break
    except KeyboardInterrupt:
        my_observer.stop()
        my_observer.join()
Esempio n. 4
0
    def __init__(self,
                 path,
                 queue_out=None,
                 log=False,
                 pattern='*',
                 ignore_pattern='//'):
        self.queue_out = queue_out
        self.stdout = True if queue_out is None else False
        self.log = log
        self.prev_ev = {'path': None, 'time': None}

        patterns = list(pattern.split())
        for i, p in enumerate(patterns):  # Setup directories matching
            if p.endswith('/'):
                patterns[i] = '*' + p + '*'
        ignore_patterns = list(IGNORED_PATTERNS) + list(ignore_pattern.split())
        for i, p in enumerate(ignore_patterns):
            if p.endswith('/'):
                ignore_patterns[i] = '*' + p + '*'
        ignore_directories = True
        case_sensitive = True
        handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                              ignore_directories,
                                              case_sensitive)

        handler.on_created = self.on_created
        handler.on_deleted = self.on_deleted
        handler.on_modified = self.on_modified
        handler.on_moved = self.on_moved

        go_recursively = True
        self.observer = Observer()
        self.observer.schedule(handler, path, recursive=go_recursively)
        self.observer.start()
 def __init__(self):
     # set up the values for the handler
     patterns = "*"
     ignore_patterns = ""
     ignore_directories = False
     case_sensitive = True
     # configure the handler
     my_event_handler = PatternMatchingEventHandler(patterns,
                                                    ignore_patterns,
                                                    ignore_directories,
                                                    case_sensitive)
     my_event_handler.on_created = self.on_created
     my_event_handler.on_deleted = self.on_deleted
     my_event_handler.on_modified = self.on_modified
     my_event_handler.on_moved = self.on_moved
     # set the path for the directory that should be watched
     path = "../Reports"
     go_recursively = True
     # set up the observer to watch the directory
     my_observer = Observer()
     my_observer.schedule(my_event_handler, path, recursive=go_recursively)
     my_observer.start()
     try:
         while True:
             time.sleep(1)
     except KeyboardInterrupt:
         my_observer.stop()
         my_observer.join()
Esempio n. 6
0
 def popup_scan(self):
     source_path = Path(__file__).resolve()
     source_dir = str(source_path.parent) + "\\scans\\"
     patterns = "*"
     ignore_patterns = ""
     ignore_directories = False
     case_sensitive = True
     my_event_handler = PatternMatchingEventHandler(patterns,
                                                    ignore_patterns,
                                                    ignore_directories,
                                                    case_sensitive)
     my_event_handler.on_created = self.on_created
     my_event_handler.on_deleted = self.on_deleted
     my_event_handler.on_modified = self.on_modified
     my_event_handler.on_moved = self.on_moved
     go_recursively = True
     self.my_observer = Observer()
     self.my_observer.schedule(my_event_handler,
                               source_dir,
                               recursive=go_recursively)
     self.my_observer.start()
     try:
         self.open()
     except KeyboardInterrupt:
         self.my_observer.stop()
         self.my_observer.join()
Esempio n. 7
0
def watchFolder(conn):
    # Keep watching the folder for any change
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    event_handler = PatternMatchingEventHandler(patterns, ignore_patterns, ignore_directories, case_sensitive)

    def on_change(event):
        # Update the file list with the indexing server
        files = os.listdir("./")
        register_data = {
            "action": "UPDATE",
            "filelist": files
        }
        register_json = json.dumps(register_data)
        conn.send(register_json.encode(FORMAT))


    event_handler.on_created = on_change
    event_handler.on_deleted = on_change

    path = "."
    go_recursively = True
    folder_observer = Observer()
    folder_observer.schedule(event_handler, path, recursive=go_recursively)

    folder_observer.start()
Esempio n. 8
0
    def start(self):
        """Runs the watchdog service on the given path. Handles
        various events to different functions as per the
        requirement
        """

        event_handler = PatternMatchingEventHandler(self.patterns,
                                                    self.ignore_patterns,
                                                    self.ignore_directories,
                                                    self.case_sensitive)
        event_handler.on_created = self.__on_created
        event_handler.on_deleted = self.__on_deleted
        event_handler.on_modified = self.__on_modified
        event_handler.on_moved = self.__on_moved

        go_recursively = self.recursive

        observer = Observer()
        observer.schedule(
            event_handler,
            self.src_dir,
            recursive=go_recursively
        )

        observer.start()

        print(f'Started watching for changes on path {self.src_dir}')
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
            observer.join()
Esempio n. 9
0
def start():
    patterns = "*/auth.log"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                ignore_directories,
                                                case_sensitive)

    event_handler.on_created = on_created
    event_handler.on_deleted = on_deleted
    event_handler.on_modified = on_modified
    event_handler.on_moved = on_moved

    path = "/var/log/"
    go_recursively = True
    observer = Observer()
    observer.schedule(event_handler, path, recursive=go_recursively)

    observer.start()
    try:
        while True:
            time.sleep(500)
    except KeyboardInterrupt:
        observer.stop()
        observer.join()
Esempio n. 10
0
def watchdog(ctx, jobs="auto", sleep_time = 5):
    """
    Start watchdog service to watch F90 files and execute `make` when changes are detected.
    """
    from monty.termcolor import cprint
    cprint("Starting watchdog service to watch F90 files and execute `make` when changes are detected", "green")
    cprint("Enter <CTRL + C> in the terminal to kill the service.", "green")

    cprint(f"Start watching py files with sleep_time {sleep_time} s ....", "green")
    top = find_top_build_tree(".", with_abinit=True)
    jobs = max(1, number_of_cpus() // 2) if jobs == "auto" else int(jobs)

    # http://thepythoncorner.com/dev/how-to-create-a-watchdog-in-python-to-look-for-filesystem-changes/
    # https://stackoverflow.com/questions/19991033/generating-multiple-observers-with-python-watchdog
    import time
    from watchdog.observers import Observer
    from watchdog.events import PatternMatchingEventHandler
    event_handler = PatternMatchingEventHandler(patterns="*.py", ignore_patterns="",
                                                   ignore_directories=False, case_sensitive=True)

    def on_created(event):
        print(f"hey, {event.src_path} has been created!")

    def on_deleted(event):
        print(f"what the f**k! Someone deleted {event.src_path}!")

    def on_modified(event):
        print(f"hey buddy, {event.src_path} has been modified")
        cmd = "abicheck.py"
        cprint("Executing: %s" % cmd, "yellow")
        with cd(top):
            try:
                result = ctx.run(cmd, pty=True)
                if result.ok:
                    cprint("Command completed successfully", "green")
                    cprint("Watching for changes ...", "green")
            except Exception:
                cprint(f"Command returned non-zero exit status", "red")
                cprint(f"Keep on watching for changes hoping you get it right ...", "red")

    def on_moved(event):
        print(f"ok ok ok, someone moved {event.src_path} to {event.dest_path}")

    event_handler.on_created = on_created
    event_handler.on_deleted = on_deleted
    event_handler.on_modified = on_modified
    event_handler.on_moved = on_moved

    path = ABIPY_ROOTDIR

    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(sleep_time)
    except KeyboardInterrupt:
        observer.stop()
        observer.join()
Esempio n. 11
0
def startWatchdog():
    if not Config.isSetted():
        raise RuntimeError("Server not configured")

    config = Config.config("library-watchdog")

    print("Starting watchdog with config: " + str(config))
    patterns = config["patterns"]
    ignore_patterns = config["ignore-patterns"]
    ignore_directories = config["ignore-directories"]
    case_sensitive = config["case-sensitive"]
    path = config["path"]
    recursively = config["recursively"]

    watchdog_events = PatternMatchingEventHandler(
        patterns=patterns,
        ignore_patterns=ignore_patterns,
        ignore_directories=ignore_directories,
        case_sensitive=case_sensitive)
    watchdog_events.on_created = on_created
    watchdog_events.on_deleted = on_deleted
    watchdog_events.on_modified = on_modified
    watchdog_events.on_moved = on_moved

    observer = Observer()
    observer.schedule(event_handler=watchdog_events,
                      recursive=recursively,
                      path=path)
    observer.daemon = True

    observer.start()
    print("Watchdog started...")

    return observer
Esempio n. 12
0
    def setup_filesystem_watchdog(self):
        """
        Initializes a filesystem watchdog (sets up file system event handler) and returns an observer object
        """

        logging.debug("Initializing fs watchdog...")

        # Unfortunately you can't ignore sub dirs with watchdog
        patterns = "*"
        ignore_patterns = ""
        ignore_directories = False
        case_sensitive = True

        fs_event_handler = PatternMatchingEventHandler(patterns,
                                                       ignore_patterns,
                                                       ignore_directories,
                                                       case_sensitive)

        fs_event_handler.on_created = self.file_on_created
        fs_event_handler.on_deleted = self.file_on_deleted
        fs_event_handler.on_modified = self.file_on_modified
        fs_event_handler.on_moved = self.file_on_moved

        self.fs_observer = Observer()
        self.fs_observer.schedule(fs_event_handler,
                                  self.backup_src_path,
                                  recursive=True)

        logging.debug("fs watchdog created.")
Esempio n. 13
0
def setup_event_handler():
    event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                ignore_directories,
                                                case_sensitive)
    event_handler.on_created = on_created
    event_handler.on_deleted = on_deleted
    event_handler.on_modified = on_modified
    event_handler.on_moved = on_moved
    return event_handler
Esempio n. 14
0
def build_event_handler():
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = True
    case_sensitive = True
    event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                ignore_directories,
                                                case_sensitive)
    event_handler.on_created = on_created
    event_handler.on_modified = on_modified
    event_handler.on_deleted = on_deleted
    event_handler.on_moved = on_moved
    return event_handler
Esempio n. 15
0
def create_event_handler():
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                   ignore_directories,
                                                   case_sensitive)
    my_event_handler.on_moved = on_event
    my_event_handler.on_created = on_event
    my_event_handler.on_deleted = on_event

    return my_event_handler
Esempio n. 16
0
    def add_task(self, task: ForemonTask) -> 'Monitor':

        if task in self.all_tasks:
            raise ForemonError(f'cannot add duplicate task {task.name}',
                               errno.EINVAL)

        conf: ForemonConfig = task.config

        if display_verbose():
            display_debug('alias', task.name)
            display_debug('paths', conf.paths)
            display_debug('patterns', conf.patterns)
            display_debug('ignore_defaults', conf.ignore_defaults)
            display_debug('ignore', conf.ignore)
            display_debug('ignore_dirs', conf.ignore_dirs)
            display_debug('ignore_case', conf.ignore_case)
            display_debug('events', list(map(lambda e: e.name, conf.events)))

        for path in list(conf.paths):
            if not op.exists(path):
                display_warning(f'cannot watch {path}, path does not exist')
                conf.paths.remove(path)

        if not conf.paths:
            raise ForemonError(
                'no valid paths specified, cannot add watch task',
                errno.ENOENT)

        callback = partial(self.debounce.submit_threadsafe, task)

        handler = PatternMatchingEventHandler(
            patterns=conf.patterns,
            ignore_patterns=conf.ignore_defaults + conf.ignore,
            ignore_directories=conf.ignore_dirs,
            case_sensitive=not conf.ignore_case)

        if Events.created in conf.events:
            handler.on_created = callback
        if Events.deleted in conf.events:
            handler.on_deleted = callback
        if Events.moved in conf.events:
            handler.on_moved = callback
        if Events.modified in conf.events:
            handler.on_modified = callback

        for path in conf.paths:
            self.observer.schedule(handler, path, recursive=conf.recursive)

        self.all_tasks.add(task)

        return self
Esempio n. 17
0
def start_watchdog():
    pattern = [str(watch_file_path)]
    my_event_handler = PatternMatchingEventHandler(patterns=pattern)
    my_event_handler.on_created = make_new_html_file
    my_event_handler.on_deleted = do_nothing
    my_event_handler.on_modified = make_new_html_file
    my_event_handler.on_moved = make_new_html_file

    observer = Observer()
    observer.schedule(my_event_handler,
                      str(watch_file_path.parents[0]),
                      recursive=True)
    observer.start()
    return observer
Esempio n. 18
0
def main():
    watchFolder = sys.argv[1]
    writeFolder = sys.argv[2]

    if (len(sys.argv) == 4):
        cmd = sys.argv[3]
        if cmd == "init":
            # currentdir = os.getcwd()
            watchFolder = watchFolder + "/"
            writeFolder = writeFolder + "/"
            if (not os.path.exists(watchFolder)):
                os.mkdir(watchFolder)
            if (not os.path.exists(writeFolder)):
                os.mkdir(writeFolder)
    completeWriteFolder = os.path.abspath(writeFolder) + "/"
    os.chdir(writeFolder)
    relWatchFolder = os.path.relpath(watchFolder)

    print("Watching " + relWatchFolder)
    print("Writing to " + completeWriteFolder)
    print("**********----**********")

    patterns = "*"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    structManager = StructureManager(completeWriteFolder)

    fileMonEventHandler = FileMonEventHandler(structManager)

    event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                ignore_directories,
                                                case_sensitive)

    event_handler.on_created = fileMonEventHandler.on_created
    event_handler.on_deleted = fileMonEventHandler.on_deleted
    event_handler.on_modified = fileMonEventHandler.on_modified
    event_handler.on_moved = fileMonEventHandler.on_moved

    observer = Observer()
    observer.schedule(event_handler, relWatchFolder, recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        observer.join()
def watch_configurationfolder(config_folder: str):
    directory = path.normpath(config_folder)
    logger.debug(f'Directory: {directory}')

    event_handler = PatternMatchingEventHandler(
        patterns=['*.yaml', '*.yml'],
        ignore_patterns=['*.example.yaml'],
        ignore_directories=True,
        case_sensitive=True)
    event_handler.on_created = _on_created
    event_handler.on_deleted = _on_deleted
    event_handler.on_modified = _on_modifiedfolder
    event_handler.on_moved = _on_moved
    logger.info(f'Starting to watch {config_folder}')
    _start_observer(event_handler, directory)
def watch_configurationfile(config_file: str):
    directory = path.dirname(config_file)
    logger.debug(f'Directory: {directory}')
    filename = path.basename(config_file)
    logger.debug(f'File: {filename}')

    event_handler = PatternMatchingEventHandler(
        patterns=[f'*{filename}'],
        ignore_patterns=['*.example.yaml'],
        ignore_directories=True,
        case_sensitive=True)
    event_handler.on_created = _on_created
    event_handler.on_deleted = _on_deleted
    event_handler.on_modified = _on_modifiedfile
    event_handler.on_moved = _on_moved
    logger.info(f'Starting to watch {config_file}')
    _start_observer(event_handler, directory)
Esempio n. 21
0
    def _create_watchdog(self):
        """Creates a watchdog on everything in the specified folder."""
        f = self.folder

        # Abort if folder is not set
        if not os.path.exists(f) or not os.path.isdir(f):
            print(f"Path '{f}' does not exist or is not a folder!")
            sys.exit(1)

        # Create a Watchdog on the folder
        eh = PatternMatchingEventHandler("*", "", False, False)  # match everything
        eh.on_created = self._on_created
        eh.on_modified = self._on_modified
        eh.on_moved = self._on_moved
        eh.on_deleted = self._on_deleted
        self.wd = Observer()
        self.wd.schedule(eh, f, recursive=True)
Esempio n. 22
0
def create_observer(config):
    '''
    Create a Watchdog Observer instance to watch SCSS directory 
    specified in the config.
    '''

    patterns = '*.scss'
    ignore_patterns = ''
    ignore_directories = False
    
    fileChangeHandler = PatternMatchingEventHandler(
        patterns = patterns,  # watched patterns
        ignore_patterns = ignore_patterns,  # ignored patterns
        ignore_directories = ignore_directories,  # ignored directories
        case_sensitive = True
    )

    def on_change(event, config=config):
        '''
        Executed on every change within the SCSS directory
        '''
        scss_dir = config['scss_dir']
        file_tree = get_include_paths(scss_dir)
        raw_scss = get_raw_scss(file_tree, scss_dir)
        write_css(raw_scss, config)

        # echo(f"File {event.event_type}: {event.src_path}")

        echo(f"\nWatching {config['scss_dir']}...")
        echo("Press Ctrl + C to stop.")


    fileChangeHandler.on_modified = on_change
    fileChangeHandler.on_created  = on_change
    fileChangeHandler.on_moved    = on_change
    fileChangeHandler.on_deleted  = on_change

    path = config['scss_dir']
    observer = Observer()
    observer.schedule(
        fileChangeHandler,
        path,
        recursive=True
    )

    return observer
Esempio n. 23
0
def _create_handler(callback):
    """Wrapper for the watchdog EventHandler to store file paths in a set"""
    bmp_paths = set()

    def on_created(e):
        bmp_paths.add(e.src_path)
        callback(bmp_paths)

    def on_deleted(e):
        bmp_paths.discard(e.src_path)

    event_handler = PatternMatchingEventHandler(patterns=["*.bmp"],
                                                ignore_directories=True,
                                                case_sensitive=False)
    event_handler.on_any_event = lambda e: logging.debug(e.src_path)
    event_handler.on_created = on_created
    event_handler.on_deleted = on_deleted

    return event_handler
Esempio n. 24
0
    def __init_observer(self):
        # setting the event handler
        event_handler = PatternMatchingEventHandler(patterns='*',
                                                    ignore_patterns='',
                                                    ignore_directories=False,
                                                    case_sensitive=True)
        event_handler.on_created = self.on_created
        event_handler.on_deleted = self.on_deleted
        event_handler.on_modified = self.on_modified
        event_handler.on_moved = self.on_moved

        # schedule the observer
        observer = Observer()
        observer.schedule(event_handler=event_handler,
                          path=self.source_path,
                          recursive=False)

        observer.start()
        print('Observer started...')
        return observer
def main():
    #set watch dog
    patterns = ["*.csv", "*.CSV"]
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                   ignore_directories,
                                                   case_sensitive)

    my_event_handler.on_modified = on_changed
    my_event_handler.on_created = on_changed
    my_event_handler.on_deleted = on_changed

    #Craete observer
    go_recursively = True

    my_observer = Observer()
    #the observer will watch all CSV files in the path even in anotthe sub directory
    my_observer.schedule(my_event_handler, path, recursive=go_recursively)
    my_observer.start()
Esempio n. 26
0
def start_watchdog(method_to_call):
    '''
    Starts the watchdog thread, defines its behaviour
    :param method_to_call: the method that repeatedly is called
    :return:
    '''
    import time
    from watchdog.observers import Observer
    from watchdog.events import PatternMatchingEventHandler
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = True
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns,
                                                   ignore_directories,
                                                   case_sensitive)

    # events watchdog detects
    my_event_handler.on_created = on_created
    my_event_handler.on_deleted = on_deleted
    my_event_handler.on_modified = on_modified
    my_event_handler.on_moved = on_moved

    # location which is watched
    path = client_config['location']
    go_recursively = True
    my_observer = Observer()
    my_observer.schedule(my_event_handler, path, recursive=go_recursively)

    my_observer.start()
    try:
        while True:
            print('----------------------------------------')
            method_to_call()
            time.sleep(1)
            logging.info('next input:')
    except KeyboardInterrupt:
        my_observer.stop()
        my_observer.join()
def server(graph, tags, args):
    # Code credit: http://thepythoncorner.com/dev/how-to-create-a-watchdog-in-python-to-look-for-filesystem-changes/
    event_handler = PatternMatchingEventHandler(patterns=["*.md"], case_sensitive=True)

    smds_event_handler = SMDSEventHandler(graph, FORMAT_TYPES[args.input_format], args.vault_name, tags)
    event_handler.on_created = smds_event_handler.on_created()
    event_handler.on_deleted = smds_event_handler.on_deleted()
    event_handler.on_modified = smds_event_handler.on_modified()
    event_handler.on_moved = smds_event_handler.on_moved()

    observer = Observer()
    observer.schedule(event_handler, path=args.input, recursive=args.r)

    observer.start()

    try:
        print("Server is active!")
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        observer.join()
Esempio n. 28
0
    def stage_scenarios(self):

        if self.options.follow:
            watch_dir = os.path.realpath(self.watch_dir)
        else:
            watch_dir = self.watch_dir

        for rules in self.scenarios:

            event_handler = PatternMatchingEventHandler(patterns=rules.pattern,
                                                        ignore_directories=self.options.files)
            # log_handler = self.PatternMatchingLoggingEventHandler(patterns=rules.pattern,
            #                                                       ignore_directories=self.options.files,
            #                                                       rule_id=rules.number,
            #                                                       action=rules.actions,
            #                                                       log_dir=self.dirwatch_dir)
            cmd_handler = self.EogShellCommandTrick(shell_command=rules.command,
                                                    )
            if rules.action == 'update':  # create or modified
                event_handler.on_modified = cmd_handler.on_any_event
                event_handler.on_created = cmd_handler.on_any_event
                # log_handler.on_modified = log_handler.append_log
                # log_handler.on_created = log_handler.append_log
            elif rules.action == 'created':
                event_handler.on_created = cmd_handler.on_any_event
                # log_handler.on_created = log_handler.append_log
            elif rules.action == 'modified':
                event_handler.on_modified = cmd_handler.on_any_event
                # log_handler.on_modified = log_handler.append_log
            elif rules.action == 'deleted':
                event_handler.on_deleted = cmd_handler.on_any_event
                # log_handler.on_deleted = log_handler.append_log
            elif rules.action == 'existing':   # this is not a exact mapping
                event_handler.on_any_event = cmd_handler.on_any_event
                # log_handler.on_any_event = log_handler.append_log

            self.observer.schedule(event_handler,
                                   watch_dir,
                                   recursive=self.options.recursive)
Esempio n. 29
0
def main():
    print("Sort photos from camera")
#    patterns = [".nef", ".jpeg", ".jpg", ".raw", ".NEF", ".JPG"]
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns, ignore_directories, case_sensitive)
    my_event_handler.on_created = on_created
    my_event_handler.on_moved = on_moved
    my_event_handler.on_deleted = on_deleted
    my_event_handler.on_modified = on_modified
    go_recursively = False
    my_observer = Observer()
    my_observer.schedule(my_event_handler, track_path, recursive=go_recursively)
    my_observer.start()
    try:
         while True:
             time.sleep(1)
    except KeyboardInterrupt:
         my_observer.stop()
         my_observer.join()
Esempio n. 30
0
def create_event_handler(to_path, from_path):
    to_path = pathlib.Path(to_path)
    from_path = pathlib.Path(from_path)

    def on_created(event):
        event_path = pathlib.Path(event.src_path)
        relative_event_path = event_path.relative_to(to_path)
        destination = from_path.joinpath(relative_event_path)

        print(f"Moved from {event_path} to {destination}")

        while True:
            try:
                destination.parent.mkdir(exist_ok=True, parents=True)
                shutil.move(event_path, destination)
                break
            except PermissionError:
                time.sleep(1)

    def on_deleted(event):
        pass

    def on_modified(event):
        pass

    def on_moved(event):
        pass

    event_handler = PatternMatchingEventHandler(patterns="*",
                                                ignore_patterns="",
                                                ignore_directories=True,
                                                case_sensitive=True)
    event_handler.on_created = on_created
    event_handler.on_deleted = on_deleted
    event_handler.on_modified = on_modified
    event_handler.on_moved = on_moved

    return event_handler
Esempio n. 31
0
 def on_deleted(self, event):
     PatternMatchingEventHandler.on_deleted(self, event)
     logging.info("Deleted file: %s", event.src_path)