file_stash = re.sub(":|/","_",endpoint) + ".json" print file_stash; if os.path.exists(file_stash): id_map = json.load(open(file_stash)) else: id_map = {} dir = args['dir'] exif_id = omeka_client.getSetId("EXIF", create=True) dc_id = omeka_client.getSetId("Dublin Core") title_id = omeka_client.getElementId(dc_id, "Title") collection_id = omeka_client.getCollectionId("Photos", create=True) item_type_id = omeka_client.getItemTypeId("Still Image", create=True) exif_fields = ["LensID", "FOV", "DOF", "Make", "Model", "FileName", "ExposureTime", "FNumber", "FocusDistance"] for root, dirs, files in os.walk(dir): for file in files: ext = os.path.splitext(file)[1] if ext.lower() in extensions: file_path = os.path.join(root, file) pic_data = json.loads(subprocess.check_output(["exiftool", "-json", file_path]))[0] #TODO - upload the pics #TODO Create new fields for new metadata. element_texts = [] for field in exif_fields: if field in pic_data:
set_name = 'Bespoke Metadata' set_id = omeka_client.getSetId(set_name, create=True) element_id = omeka_client.getElementId(set_id, key, create=args['create_elements']) map_element(key, element_id, set_name) for item in d['data']: stuff_to_upload = False relations = [] element_texts = [] URLs = [] files = [] for key,value in item.items(): (property_id, object_id) = mapping.item_relation(collection_name, key, value) if value <> None: if key == "Omeka Type": item_type_id = omeka_client.getItemTypeId(value, create=args['create_item_types']) if item_type_id <> None: stuff_to_upload = True else: if mapping.has_map(collection_name, key): if mapping.collection_field_mapping[collection_name][key] <> None: element_text = {"html": False, "text": "none"} #, "element_set": {"id": 0}} element_text["element"] = {"id": mapping.collection_field_mapping[collection_name][key] } else: element_text = {} if mapping.is_linked_field(collection_name, key, value): #TODO - deal with muliple values to_title = mapping.id_to_title[value] if to_title == None: to_title = mapping.id_to_omeka_id[value]