osxphotos/examples/timewarp_filename.py
2022-12-11 23:24:24 -08:00

40 lines
1.3 KiB
Python

"""Example function for use with `osxphotos timewarp --function`
Call this as: `osxphotos timewarp --function timewarp_filename.py::parse_date_time_from_filename`
"""
from __future__ import annotations
from datetime import datetime, timedelta
from typing import Callable
from photoscript import Photo
from strpdatetime import strpdatetime
def parse_date_time_from_filename(
photo: Photo, path: str | None, tz_sec: int, tz_name: str, verbose: Callable
) -> tuple[datetime, int]:
"""Function for use with `osxphotos timewarp --function` that parses date/time from filename in format "YYYY-MM-DD FILENAME.jpg"
Args:
photo: Photo object
path: path to photo, which may be None if photo is not on disk
tz_sec: timezone offset from UTC in seconds
tz_name: timezone name
verbose: function to print verbose messages
Returns:
tuple of (new date/time as datetime.datetime, and new timezone offset from UTC in seconds as int)
"""
filename = photo.filename
try:
datetime = strpdatetime(filename, "^%Y-%m-%d")
except ValueError:
verbose(f"Unable to parse date/time from {filename}")
return photo.date, tz_sec
verbose(f"Updating {photo.filename} date/time: {datetime}")
return datetime, tz_sec