From e896c28e7e9f678bea823902a3981b8abbdacee8 Mon Sep 17 00:00:00 2001 From: Brian Date: Sun, 27 Oct 2019 01:44:55 +0000 Subject: [PATCH] Add after date command flag --- main.py | 6 ++++-- src/worker.py | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 01b11c7..407b9be 100644 --- a/main.py +++ b/main.py @@ -25,7 +25,9 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument("itemId", nargs='?', default=None, help="Item ID to download, use 0 for root") parser.add_argument("localDirectory", nargs='?', default='.', help="Local path of the item") - parser.add_argument("-y", "--yes", help="skip confirmation dialogue", action="store_true") + parser.add_argument('-a', '--after', default='0', help='Only sync items after the specified date, compared by ' + 'simple string comparison against such as ' + '"2019-12-25T17:45:45-07:00"') args = parser.parse_args() client = Client(init_oauth()) @@ -45,7 +47,7 @@ def main(): threads = [] interrupt_flag = {'exit': False} - worker_object = Worker(q, client, settings.get('blacklist', []), interrupt_flag) + worker_object = Worker(q, client, settings.get('blacklist', []), interrupt_flag, args.after) thread_count = settings.get('thread_count', 4) logging.info('Launching %s threads', thread_count) diff --git a/src/worker.py b/src/worker.py index 7043fb3..d6ca83c 100644 --- a/src/worker.py +++ b/src/worker.py @@ -26,11 +26,12 @@ def human_readable_bytes(b): class Worker: - def __init__(self, queue, client: Client, blacklist, interrupt_flag): + def __init__(self, queue, client: Client, blacklist, interrupt_flag, after_date): self.queue = queue self.client = client self.blacklist = blacklist or [] self.interrupt_flag = interrupt_flag + self.after_date = after_date self.downloaded = set() self.errors = [] @@ -52,7 +53,7 @@ class Worker: def do_folder(self, job: Job): try: logging.info('Fetching folder [%s]', job.remote_path) - children = job.box_item.get_items(limit=5000, fields=['name', 'id', 'size', 'modified_at', 'path_collection']) + children = list(job.box_item.get_items(limit=5000, fields=['name', 'id', 'size', 'modified_at', 'path_collection'])) except Exception as e: logging.error('Fail to ls [%s]: %s: %s', job.remote_path, type(e).__name__, e) self.errors.append(job.remote_path) @@ -60,6 +61,8 @@ class Worker: try: for child in children: + if child.modified_at < self.after_date: + continue self.queue.put(Job(child, job.local_path / child.name)) except Exception as e: logging.error(