diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -32,6 +32,8 @@ back end, plain HTML/CSS/JS front end. Live at **https://albumen.jots.org**. - Per-album: title, description, cover image (specific file or random), sub-album order, visibility - Per-file: caption, visibility - Save button at top and bottom of the edit form +- **Run Update** button scans for new/removed files and generates missing thumbnails; + **Force rescan all** checkbox bypasses the sentinel and rescans every directory ### Media support @@ -84,20 +86,29 @@ The update script walks the media tree, creates/updates `album.json` files with EXIF dates and image dimensions, and pre-generates thumbnails. ```bash -# On the server — process the entire tree +# On the server — process the entire tree (skips unchanged directories) ruby /opt/albumen/scripts/update.rb -# Process only one album (and its sub-albums) +# Process only one album (and its sub-albums) — always runs regardless of mtime ruby /opt/albumen/scripts/update.rb 2024-Italy # With an absolute path ruby /opt/albumen/scripts/update.rb /var/albumen/2024-Italy + +# Force a full rescan of everything, ignoring all change detection +ruby /opt/albumen/scripts/update.rb --force ``` **Resilience guarantees — safe to interrupt and re-run at any point:** - `album.json` is written atomically (temp file + rename); no partial writes. +- Unchanged directories are skipped via a `.albumen_scanned` sentinel file — + a global run with nothing new typically completes in under a second. +- Providing an explicit directory bypasses the sentinel for that subtree, so + `update.rb some-album` always rescans that album even if nothing appears changed. - Thumbnails that already exist are skipped entirely. - EXIF metadata already recorded is not re-extracted. +- Images with no EXIF data are marked `exif_absent` after the first attempt so + exiftool is not re-invoked on them in subsequent rescans. - Deleted files are pruned from `album.json` automatically. Typical workflow: |
