osxphotos/tests/parse_timewarp_output.py
Rhet Turnbull 94f484e9ec
Feature date added 998 (#1003)
* Implemented --date-added, #998

* Added --date-added-from-photo

* Fixed typehint
2023-02-25 14:38:49 -08:00

79 lines
1.9 KiB
Python

""" Parse --inspect and --compare-exif output for testing"""
from __future__ import annotations
from collections import namedtuple
from typing import List
# filename, uuid, photo time (local), photo time, timezone offset, timezone name
InspectValues = namedtuple(
"InspectValues",
[
"filename",
"uuid",
"date_local",
"date_tz",
"tz_offset",
"tz_name",
],
)
InspectValuesDateAdded = namedtuple(
"InspectValues",
[
"filename",
"uuid",
"date_local",
"date_tz",
"tz_offset",
"tz_name",
"date_added",
],
)
CompareValues = namedtuple(
"CompareValues",
[
"filename",
"uuid",
"date_photos",
"date_exif",
"tz_offset_photos",
"tz_offset_exif",
],
)
def parse_inspect_output(
output: str, date_added: bool = False
) -> List[InspectValues] | List[InspectValuesDateAdded]:
"""Parse output of --inspect and return list of InspectValues named tuple"""
lines = [line for line in output.split("\n") if line.strip()]
# remove header
lines.pop(0)
values = []
for line in lines:
parts = line.split(",")
parts = [part.strip() for part in parts]
if not date_added:
# remove date added
parts.pop()
values.append(InspectValues(*parts))
else:
values.append(InspectValuesDateAdded(*parts))
return values
def parse_compare_exif(output: str) -> List[CompareValues]:
"""Parse output of --compare-exif and return list of CompareValues named tuple"""
lines = [line for line in output.split("\n") if line.strip()]
# remove header
lines.pop(0)
values = []
for line in lines:
parts = line.split(",")
parts = [part.strip() for part in parts]
values.append(CompareValues(*parts))
return values