5个版本
0.1.5 | 2024年4月16日 |
---|---|
0.1.4 | 2024年2月26日 |
#156 in 图像
每月567次下载
49KB
565 行
PhotoSort
PhotoSort是一个用Rust编写的强大命令行工具,旨在简化您照片/视频收藏的管理。它通过从源目录获取图像/视频,从文件名或其EXIF/元数据数据中提取日期,然后将文件移动或复制到目标目录来工作。
PhotoSort解决了来自不同相机和设备、使用不同命名约定创建文件的图片/视频的问题。在文件浏览器中查看时可能会令人困惑,因为图片/视频没有按日期排序。PhotoSort通过根据图像/视频的EXIF/元数据数据或文件名重命名图像/视频来解决这个问题,统一了命名约定,使您能够按日期浏览图片/视频。
文档可以在这里找到:https://docs.rs/photo_sort
特性
- 自定义目标格式:您可以为重命名的文件定义自己的目标日期和文件名格式。
- 分析模式:选择如何从您的文件中提取日期。仅EXIF、仅名称或组合。
- 移动模式:选择如何将文件移动到目标目录。选项包括移动、复制、硬链接、符号链接或相对符号链接。
- 递归源目录:PhotoSort可以递归搜索源目录。
- 模拟运行模式:在不更改您的文件的情况下测试工具。工具将打印出它将采取的操作,而不会实际执行它们。
- 排序照片和视频:PhotoSort可以根据元数据对照片和视频进行排序。
使用方法
要使用PhotoSort,您需要传递一组参数以定义您想要如何排序照片。以下是一个示例
photo_sort \
--source_dir /path/to/photos \
--target_dir /path/to/sorted_photos
此命令将按顺序对 /path/to/photos
目录中的照片进行排序,根据它们的EXIF数据或名称重命名,然后移动到 /path/to/sorted_photos
目录。
另一个示例
photo_sort \
--source_dir /path/to/photos \
--recursive \
--target_dir /path/to/sorted_photos \
--analysis-mode "exif_then_name" \
--date-format "%Y-%m-%d-_%H%M%S" \
--file-format "{:date}{:?dup}" \
--extensions "png,jpg" \
--move-mode "hardlink"
此命令将对 /path/to/photos
目录及其子目录中的照片进行排序,根据它们的EXIF日期(如果找不到则使用名称)重命名,然后将它们硬链接到 /path/to/sorted_photos
目录。文件将被重命名为以下格式 YYYY-MM-DD_HHMMSS[_##]
,只有 .png
和 .jpg
文件将被处理。
要获取完整选项列表,请运行 photo_sort --help
$ photo_sort --help
A tool to rename and sort photos by its EXIF date. It tries to extract the date
from the EXIF data or file name and renames the image file according to a given
format string.
Foreach source directory all images are processed and renamed to the target directory
Usage: photo_sort [OPTIONS] --source-dir <SOURCE_DIR>... --target-dir <TARGET_DIR>
Options:
-s, --source-dir <SOURCE_DIR>... The source directory to read the photos from
-t, --target-dir <TARGET_DIR> The target directory to write the sorted photos to
-r, --recursive Whether to search the source directories recursively. If the flag is not set only immediate children of the source directories are considered
--date-format <DATE_FORMAT> Date format string to use for the target directory. The format string is passed to the `chrono` crate's `format` method [default: %Y%m%d-%H%M%S]
-f, --file-format <FILE_FORMAT> The target file format. {:date} is replaced with the date and {:name} with the original file name. {:dup} is replaced with a number if the file already exists. {:date} is replaced with the date and {:name} with the original file name. {:?dup} is replaced with _{:dup} if the file already exists [default: IMG_{:date}_{:name}{:?dup}]
-e, --extensions [<EXTENSIONS>...] A comma separated list of file extensions to include in the analysis [default: jpg,jpeg,png,tiff,heif,heic,avif,webp]
-a, --analysis-mode <ANALYSIS_MODE> The sorting mode, possible values are name_then_exif, exif_then_name, only_name, only_exif. Name analysis tries to extract the date from the file name, Exif analysis tries to extract the date from the EXIF data [default: exif_then_name]
-m, --move-mode <MOVE_MODE> The action mode, possible values are move, copy, hardlink, relative_symlink, absolute_symlink. Move will move the files, Copy will copy the files, Hardlink (alias: hard) will create hardlinks, RelativeSymlink (alias: relsym) will create relative symlinks, AbsoluteSymlink (alias: abssym) will create absolute symlinks [default: move]
-n, --dry-run Dry-run If set, the tool will not move any files but only print the actions it would take
-v, --verbose Be verbose, if set, the tool will print more information about the actions it takes. Setting the RUST_LOG env var overrides this flag
-d, --debug Debug, if set, the tool will print debug information (including debug implies setting verbose). Setting the RUST_LOG env var overrides this flag
-h, --help Print help
-V, --version Print version
When building with video support enabled (see below):
--video-extensions [<VIDEO_EXTENSIONS>...] A comma separated list of video extensions to include in the analysis [default: mp4,mov,avi]
安装
要安装PhotoSort,您需要在您的系统上安装Cargo。
cargo install photo_sort
或者
git clone https://github.com/0xCCF4/photo_sort.git
cd photo_sort
cargo install --path .
然后 photo_sort
可执行文件将可用。
要使用视频排序功能,请按照https://crates.io/crates/ffmpeg-next上的说明以及相应的wikihttps://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building。安装依赖项后,您可以启用 video
功能安装 photo_sort
可执行文件。
cargo install --features video photo_sort
或者
git clone https://github.com/0xCCF4/photo_sort.git
cd photo_sort
cargo install --features video --path .
贡献
欢迎使用对PhotoSort的贡献!如果您有功能请求、错误报告或想为代码做出贡献,请打开一个问题或拉取请求。
许可证
PhotoSort遵循GPLv3许可证。有关更多详细信息,请参阅LICENSE文件。
依赖项
~5–15MB
~166K SLoC