From c1b9ce9195c29452c55efb03be7ae9bb14986c0f Mon Sep 17 00:00:00 2001 From: Alexander Wainwright Date: Wed, 21 May 2025 16:34:21 +1000 Subject: [PATCH] Change the sort order --- src/stills/main.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/stills/main.py b/src/stills/main.py index 9174151..ebeb7e9 100644 --- a/src/stills/main.py +++ b/src/stills/main.py @@ -29,12 +29,26 @@ def parse_args(): parser.add_argument('--thumb-height', type=int, help='Thumbnail height in pixels') return parser.parse_args() +def get_image_date(path: Path): + try: + with Image.open(path) as img: + exif = img._getexif() + if exif: + date_str = exif.get(36867) or exif.get(306) # DateTimeOriginal or DateTime + if date_str: + from datetime import datetime + return datetime.strptime(date_str, '%Y:%m:%d %H:%M:%S') + except Exception: + pass + return None + def collect_images(source_dir: Path): images = [] - for entry in sorted(source_dir.iterdir()): + for entry in reversed(sorted(source_dir.iterdir())): if entry.is_file() and entry.suffix.lower() in IMAGE_EXTENSIONS: images.append(entry) - return images + return sorted(images, + key=lambda img: get_image_date(img) or Path(img).stat().st_mtime) def extract_metadata(image_path: Path): try: