From 4f33221208afecee10e876c85ca4ba536c89e0cd Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Mon, 6 Nov 2023 20:28:51 +0000 Subject: [PATCH] Adjust image_processing and its friends to wrk with EXIF formatted date --- src/image_processing.py | 23 ++++++++++++++++++++--- src/load_config.py | 1 - src/publish_pixelfed.py | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/image_processing.py b/src/image_processing.py index 4689918..6d2560e 100644 --- a/src/image_processing.py +++ b/src/image_processing.py @@ -1,10 +1,17 @@ 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() - create_date = xmp.get('Xmp.xmp.CreateDate', 'N/A') + 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') @@ -13,7 +20,7 @@ def get_image_data(path: str): alt_text = description_parts[1].strip() image_data = { 'path': path, - 'create': create_date + "Z", + 'create': create_date, 'title': title['lang="x-default"'], 'description': main_description, 'alt': alt_text, @@ -24,4 +31,14 @@ def get_image_data(path: str): 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 \ No newline at end of file + 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 \ No newline at end of file diff --git a/src/load_config.py b/src/load_config.py index 6092811..9f1a3f3 100644 --- a/src/load_config.py +++ b/src/load_config.py @@ -1,5 +1,4 @@ import os, toml -from dotenv import load_dotenv config = toml.load("conf.toml") diff --git a/src/publish_pixelfed.py b/src/publish_pixelfed.py index 9ddce10..4ca5f1f 100644 --- a/src/publish_pixelfed.py +++ b/src/publish_pixelfed.py @@ -26,6 +26,7 @@ def formatTags(tags: list): return formatted_tags_str def formatDate(input_date_str: str): + print(input_date_str) input_datetime = datetime.datetime.fromisoformat(input_date_str) london_tz = pytz.timezone('Europe/London') london_datetime = input_datetime.replace(tzinfo=pytz.utc).astimezone(london_tz)