diff --git a/Dockerfile b/Dockerfile index 9cb2276..67a36ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8 +FROM python:3.8-slim RUN pip install ofxparse RUN pip install watchdog diff --git a/converter.py b/converter.py index d8ed547..378edaa 100644 --- a/converter.py +++ b/converter.py @@ -134,9 +134,10 @@ class Handler(watchdog.events.PatternMatchingEventHandler): fileExists = False timeout = 0 + while not fileExists: fileExists = os.path.isfile(event.src_path) - time.sleep(1) + time.sleep(5) timeout += 1 if timeout > 60: @@ -152,31 +153,40 @@ class Handler(watchdog.events.PatternMatchingEventHandler): logging.info("file copy has now finished") with open(event.src_path, 'r') as file: - qfx = OfxParser.parse(file, fail_fast=False) - statement, acct_name = Handler.get_statement_from_qfx(qfx) + try: + qfx = OfxParser.parse(file, fail_fast=False) + statement, acct_name = Handler.get_statement_from_qfx(qfx) - path = Path(event.src_path) - path.resolve() + path = Path(event.src_path) + path.resolve() - converted_dir = path.parent / CONVERTED_DIR - if not converted_dir.exists(): - converted_dir.mkdir() + converted_dir = path.parent / CONVERTED_DIR + if not converted_dir.exists(): + converted_dir.mkdir() - out_file = str(path.parent / CONVERTED_DIR / (acct_name + '-' + qfx.signon.dtserver + '.csv')) - Handler.write_csv(statement, out_file) + out_file = str(path.parent / CONVERTED_DIR / (acct_name + '-' + qfx.signon.dtserver + '.csv')) + Handler.write_csv(statement, out_file) - #Now move the input file to backup - archive_file_dir = path.parent / BACKUP_DIR - archive_file = (path.stem + '{:04d}' + path.suffix) - destination = Handler.unique_path(archive_file_dir, archive_file) + #Now move the input file to backup + archive_file_dir = path.parent / BACKUP_DIR + archive_file = (path.stem + '{:04d}' + path.suffix) + destination = Handler.unique_path(archive_file_dir, archive_file) - if not archive_file_dir.exists(): - archive_file_dir.mkdir() + if not archive_file_dir.exists(): + archive_file_dir.mkdir() - if not destination.exists(): - path.replace(destination) + if not destination.exists(): + path.replace(destination) + except: + logging.info("Failed to process {}".format(event.src_path)) logging.info("Processing successfully finished for {}".format(event.src_path)) + + def on_modified(self, event): + logging.info('Found modified file: {}'.format(event.src_path)) + self.on_created(event) + + if __name__ == "__main__": event_handler = Handler()