Using ./photostructure info f:/SynologyDrive/Photos/0001/0153.jpg (see output on the link above) we could see this file was not ignored but is considered as invalid due to the following warning
validFile: 'invalid file F:\\SynologyDrive\\Photos\\0001\\0153.jpg: Caution: quantization tables are too coarse for baseline JPEGā¶Ā³Ā²'
This file should be added to the library anyway. Optionally, we could be advised how to ārepairā the file to get rid of the warning
PhotoStructureās image validation uses libjpeg, which is the source of that warning:
$ jpegtran -outfile /dev/null ~/Desktop/0153.jpg
Caution: quantization tables are too coarse for baseline JPEG
You can disable all image validation within PhotoStructure by setting PS_VALIDATE_JPEG_IMAGES=0.
(The images in my older libraries havenāt succumbed to these sorts of bitrot: they tend to be either fine, or completely scrambled).
It might be nicer to have a middle ground here, so if libjpeg only has a ācautionā or āwarningā, those images would still be imported. If you think thatād be nice, feel free to open a new feature request nevermind, I just implemented it:
# +----------------------------+
# | validationErrorBlocklist |
# +----------------------------+
#
# If any of the following patterns match a validation error found in a photo
# or video, the file will be considered corrupt and not be imported into your
# library.
#
# Note the patterns are case-insensitive, will be converted into a regular
# expression, and only need to partially match the error message, so, for
# example, a value of "caution" will ignore any error message that contains
# the string "caution".
#
# PS_VALIDATION_ERROR_BLOCKLIST="[\"corrupt\",\"invalid\",\"error\",\"failed\",\"nothing was written into output file\",\"partial file\",\"Cannot determine format of input stream\"]"
I also found that the timezone offset (that I fixed a while back due to your bug report, thanks!), is not generating a correct ācapturedAtLocalā value. Iām fixing this as well.
Offtop: Iām impressed by your usage of the term ācentisecondsā. My entire life Iāve seen tons of cases when itās mistakenly called āmillisecondsā while itās obviously 0ā¦99