cullet
Keyboard-driven photo viewer for going through a folder fast: step, zoom, rotate, delete, move
into target folders, tag, and review duplicates. Press h in the viewer for the keys.
Install
Requires python>=3.10
uv tool install cullet
or pip install cullet into an environment of your choice. Rotating JPEGs losslessly needs the
jpegtran binary, which comes with libjpeg-turbo on most distributions.
Finding duplicates and fixing rotations need torch, which comes with the full extra:
uv tool install "cullet[full]"
Usage
cullet /path/to/photos
cullet /path/to/photos/IMG_1234.jpg
cullet /path/to/photos -a ../good -a ../maybe -T sun -T portrait
cullet /path/to/photos --dedup
The number keys move the image into the target folders (-a) and toggle the tags (-T), in the
order they are given. Deleted files are moved to the system trash, never removed (--trash_dir
puts them into a folder of your choice instead), and every file operation can be undone with
u. cullet --help lists all options.
Command line tools
They only log what they would do until -w is given. Each has --help.
| command | does | needs |
|---|---|---|
cullet-dedup-images |
removes duplicate images, into the system trash or a folder with -Q |
full extra |
cullet-dedup-videos |
the same for videos | full extra, ffmpeg |
cullet-fix-rotation-images |
finds photos stored sideways or upside down and rotates them | full extra |
cullet-fix-rotation-videos |
the same for videos | full extra, ffmpeg |
cullet-downscale-images |
shrinks images, keeping their metadata | |
cullet-downscale-videos |
shrinks videos | ffmpeg |
cullet-dedup-videos /path/to/videos -Q /path/to/quarantine -w
cullet-downscale-images /path/to/photos -s 1080 -w
Install locally and run tests
Clone repository and cd into. Setup python 3.10 or higher. Note: The tests that need torch are skipped unless it is installed.
pip install -e .[full,dev]
pylint src
# run tests
python -m pytest --cov
pylint tests
Metadata
Release files for cullet 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cullet-0.1.0.tar.gz | 108.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cullet-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 210.5 kB
Release files / cullet-0.1.0.tar.gz
| Download URL | cullet-0.1.0.tar.gz |
|---|---|
| Size | 108.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5b97d9229bc3f5396622a7372fb06f058560bd24af69a253991934a0932d823
|
|
BLAKE2b-256 checksum How to use checksums |
0e0a12f6345bd02e84bccf66a4ff861878c90064a6a3bd591f585fdac70fff85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / cullet-0.1.0-py3-none-any.whl
| Download URL | cullet-0.1.0-py3-none-any.whl |
|---|---|
| Size | 102.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf6029fc6b82367a02d77a1b2f2f5cb73e57250b14864ab05f862dccebe06569
|
|
BLAKE2b-256 checksum How to use checksums |
63f094c42fc7461ab002ddeb4c41b8dbc434a226e2f01a2d7320928c9361dff8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|