From a04408fb6cdd58a23c0a6c1752852c2cedaa2779 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Sun, 17 Mar 2024 13:58:55 -0600 Subject: [PATCH] add mp4 support --- __main__.py | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/__main__.py b/__main__.py index 7eac8e2..ada00d7 100644 --- a/__main__.py +++ b/__main__.py @@ -2,12 +2,35 @@ import sys from pathlib import Path import json import shutil +import subprocess import piexif from PIL import Image from datetime import datetime +def mp4_add_date(input_path: Path, output_path: Path, epoch): + output_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy(input_path, output_path) + exif_date = datetime.utcfromtimestamp(epoch).strftime("%Y:%m:%d %H:%M:%S") + print(f"{output_path} @ {exif_date}") + subprocess.run( + ["exiftool", f'-CreateDate="{exif_date}"', output_path] + ).check_returncode() + + +def jpg_add_date(input_path: Path, output_path: Path, epoch): + output_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy(input_path, output_path) + exif_date = datetime.utcfromtimestamp(epoch).strftime("%Y:%m:%d %H:%M:%S") + exif_dict = { + "0th": {}, + "Exif": {piexif.ExifIFD.DateTimeOriginal: exif_date}, + } + print(f"{output_path} @ {exif_date}") + piexif.insert(piexif.dump(exif_dict), str(output_path)) + + def assign(input_dir: Path, output_dir: Path): album = input_dir / "your_facebook_activity" / "posts" / "album" @@ -18,8 +41,6 @@ def assign(input_dir: Path, output_dir: Path): data = json.load(f) for e in data["photos"]: uri = e["uri"] - if not uri.endswith(".jpg"): - continue taken_timestamp = ( e.get("media_metadata", {}) .get("photo_metadata", {}) @@ -34,21 +55,14 @@ def assign(input_dir: Path, output_dir: Path): epoch = creation_timestamp else: assert False - exif_date = datetime.utcfromtimestamp(epoch).strftime("%Y:%m:%d %H:%M:%S") - - # print(uri, taken_timestamp, creation_timestamp) - output_path = output_dir / Path("/".join(Path(uri).parts[-2:])) - output_path.parent.mkdir(parents=True, exist_ok=True) - shutil.copy(input_dir / uri, output_path) - - exif_dict = { - "0th": {}, - "Exif": {piexif.ExifIFD.DateTimeOriginal: exif_date}, - } - print(f"{output_path} @ {exif_date}") - piexif.insert(piexif.dump(exif_dict), str(output_path)) + if uri.endswith(".jpg"): + jpg_add_date(input_dir / uri, output_path, epoch) + elif uri.endswith(".mp4"): + mp4_add_date(input_dir / uri, output_path, epoch) + else: + assert False if __name__ == "__main__":