Commit Graph

41 Commits (master)

Author SHA1 Message Date
Romain 6535caab7d chore: replace fs-extra by fs when possible 5 months ago
Romain 3590b15cfb chore: use node prefix for all builtin modules 6 months ago
Romain c133dd0472 chore: refactor cleanup to be easier to read & test 6 months ago
Romain 812a063b3f fix: cleanup step shows what would be deleted in dry-run 6 months ago
dravenst 485ef67b86
feat: add vaapi support thumbsup and downsize (#284)
Added hwaccel option for vaapi

Added video hwaccel option to enable vaapi for video encoding.

Confirmed check of bitrate with hwaccel
1 year ago
Romain 8cb7a3596b chore: upgrade to latest version of StandardJS 1 year ago
Darrell Mozingo 915f951c8d Use name from picasa for albums if available 2 years ago
Romain a5f97ef5c8 fix: restore Picasa support after regression bug
Fixes #204
3 years ago
Romain df1c6a7073 fix: link prefix supports absolute path, file:// and http://
Fixes #185
3 years ago
Geoffrey Lowney cebb0327fe
Options to specify EXIF tags where keywords and "people in image" are found (#224)
* Add dynamic keyword and people-in-photo handling.
Add new options include-keywords, exclude-keyword.
Add new options include-people, exclude-people.
3 years ago
Romain 0f42dc8f85 feat(core): option to specify the database path
Fixes #216
3 years ago
Pierre CLEMENT b5b0005369 feat(cli): option to set small size 4 years ago
Romain c407873266 feat(core): new --video-stills flag controls when the frame is taken 4 years ago
Romain 9c581bbd0b feat(albums): optionally generate a ZIP file for each album
Fixes #125
5 years ago
Andrew McOlash 282713f273 Allow generating rectangular thumbnails (#146)
Add rectangular thumbnail
5 years ago
Romain f30eddb6dd feat(options): new flags to selectively include photos / videos / raw photos
fixes #128
5 years ago
Romain 2c2c518f4b New options --video-format, --video-quality and --video-bitrate 5 years ago
Romain 9425604dd7 chore(dependencies): upgrade Standard from v11 to v12 which introduces a style change 6 years ago
Andrew McOlash cbbb067957 Change metadata to only have exif when needed, rename exif flag 6 years ago
Romain bf60ae4677 refactor(components): bring ListrWorkQueue into this repo to simplify the build process
- This component was not published to the rpm registry anyway
- We depended on the repo’s master branch which can break things for everyone
- Its repo was not getting much attention which meant
  * no tests, no coverage report
  * no linting
  * no package linting (e.g. had 2 dependencies that weren’t actually used)

It will be simpler to manage this way
6 years ago
Romain 79dd36f77b test(core): add unit tests for the relationship/action mapping, e.g. “photo:large” 6 years ago
Romain 3fa8867757 test(all): add unit tests for theme + cleanup logic 6 years ago
Romain e9beb830a2 feat(core): skip files that can’t be processed + show a summary at the end
Thumbsup used to stop at the first problem processing a file.
This was a problem on large galleries where you’d need to run it again and again, fixing files as you went.
This change:
- skips problematic files and shows a summary at the end
- logs all warnings/errors to <thumbsup.log> when running the default output

Also refactor and cleanup of the logging logic.
6 years ago
Romain 0adef54dc8 feat(core): add support for static and animated GIFs
GraphicsMagick can’t process animated GIFs well unless all frames are coalesced, which creates very large files.
This means there is a new dependency on Gifsicle which is very good at working with animated GIFs.

- Thumbnails are still processed through GraphicsMagick (more options, e.g. centre-crop)
- Large previews of animated GIFs go through Gifsicle

The startup checks are updated to check for the Gifsicle binary.

Fixes #96.
6 years ago
Romain 24790c075c chore(cleanup): remove old code and console.log() 6 years ago
Romain 36d935a787 feat(core): new option to add watermarks to the gallery
Watermarks only apply to large images, not thumbnails.
6 years ago
Romain 3c946621ec feat(core): new --gm-args flag to pass additional options to GraphicsMagick
Example: thumbsup --gm-args ‘modulate 120’ --gm-args ‘equalize’
Closes #89.
6 years ago
Romain f7d7b827e5 feat(cli): --concurrency also controls the number of batch exiftool processes 6 years ago
Romain a5740fb94e feat(cli): Expose --photo-quality to control the quality of the converted images 6 years ago
Romain 8f76013539 fix(dependencies) Upgrade downsize for the width/height mixup
The end behaviour stays the same since `--large-size`
always referred to the image height in the docs.
6 years ago
Brandon Lopez 205ec2f3cb Add concurrency argument (#92)
Add concurrency option
6 years ago
Felix Yan 0ff1699c5c Correct a typo in step-index.js 6 years ago
Romain e5f6df3d28 refactor(cli): deprecated options logic now handled in <options> module 7 years ago
Romain 286dc8d15f feat(albums): --albums-from can be a list of patterns with special keywords
- %path expands to the path of the photo/video
- %keywords expands to the IPTC keywords of the photo
- {format} expands to the photo's EXIF date, e.g. {YYYY MM}
7 years ago
Romain a5486687e7 feat(log): print more debug logs about how the number of files and tasks 7 years ago
Romain a2042f3128 Fix logging option for non-TTY + highlight URL in welcome / error messages 7 years ago
Romain 47a924883e New --log option to print a full text log with different verbosity levels 7 years ago
Romain d7d01adc82 Fix #78: ignore invalid photos / videos
The current code doesn't create an output structure for them, so we don't create thumbnails.
This is good since the thumbnail generation would likely fail.

However we still try to render thumbnails in the themes.
The themes could be smart enough to skip invalid files, but it's easier to ignore them from the start.
7 years ago
Romain d19a230a6c Cleanup unused code 7 years ago
Romain 24b2f9bd7c Major optimisations: SQLite index + faster disk glob + new exiftool streaming
1. Move from a JSON index to a SQLite database.
  - This allows the indexing to be interrupted & resumed
  - Updating the index consumes less RAM than loading / saving an entire JSON object
  - Loading the index consumes less RAM since it can be streamed, only exacting the properties we need every time (instead of loading all EXIF data in memory, only to discard most of it later)
  - These make a big difference when processing 10,000+ photos

2. Switch from <glob> to a manual <readdir>
  - Glob would take several hundred or GB of RAM when asked to find several thousand files
  - Manual approach with <micromatch> library does the same thing in a fraction of the time / memory usage

3. Exiftool optimisations
  - Run 1 exiftool process per CPU, still in batch mode (divide all files to be read into 1 bucket per CPU)
  - Stream the exiftool output instead of buffering it in memory
7 years ago
Romain 30f203af4b Render progress using Listr + split the main process into "steps" which are easier to test 7 years ago