import pyexiv2 from datetime import datetime def get_image_data(path: str): print(f"Reading metadata: {path}") img = pyexiv2.Image(path) xmp = img.read_xmp() print(xmp) create_date = xmp.get('Xmp.xmp.CreateDate', None) if create_date is None: create_date = convert_datetime_to_iso(xmp.get('Xmp.exif.DateTimeOriginal', 'N/A')) else: create_date = create_date + "Z" title = xmp.get('Xmp.dc.title', 'N/A') description = xmp.get('Xmp.dc.description', 'N/A') tags = xmp.get('Xmp.dc.subject', 'N/A') description_parts = description['lang="x-default"'].split('|') main_description = description_parts[0].strip() alt_text = description_parts[1].strip() image_data = { 'path': path, 'create': create_date, 'title': title['lang="x-default"'], 'description': main_description, 'alt': alt_text, 'tags': tags } return image_data def add_watermark(file_data): ## Create a new image file in the same directory as the file_data['path'] and return ## a new file_data dictionary with the new image in place of file_data['path'] return file_data def convert_datetime_to_iso(datetime_str): try: # Parse the datetime string using the format 'YYYY:MM:DD HH:MM:SS.sss' datetime_obj = datetime.strptime(datetime_str, '%Y:%m:%d %H:%M:%S.%f') # Convert the datetime to ISO format iso_datetime = datetime_obj.isoformat() return iso_datetime except ValueError: return None