diff --git a/exif_database/__main__.py b/exif_database/__main__.py index d3cd972..050800c 100644 --- a/exif_database/__main__.py +++ b/exif_database/__main__.py @@ -1,4 +1,5 @@ import hashlib +import json import os import subprocess import sys @@ -29,18 +30,36 @@ if __name__ == '__main__': database = mongo.exif_database collection = database.pictures - pictures_metadata = [] + metadata_pictures = [] + + # Load saved pictures cache + try: + with open('exif-database.json', 'r') as f: + saved_pictures = json.load(f) + except FileNotFoundError: + saved_pictures = {} for file in Path(sys.argv[1]).rglob("*.ARW"): filename = os.fsdecode(file) - print(filename) + + if filename in saved_pictures: + print(f'Skipping {filename}') + continue + + print(f'Uploading {filename}') picture_metadata = _execute_exiftool(filename) - pictures_metadata.append(picture_metadata) + metadata_pictures.append(picture_metadata) # Append MongoDB identifier picture_metadata['_id'] = hashlib.sha1(filename.lower().encode('utf-8')).hexdigest() - picture_metadata['path'] = sys.argv[1] + picture_metadata['path'] = filename + + saved_pictures[picture_metadata['path']] = True # Insert into MongoDB - collection.insert_many(pictures_metadata) + collection.insert_many(metadata_pictures) + + # Save saved pictures cache + with open('exif-database.json', 'w') as f: + json.dump(saved_pictures, f)