16 个版本

0.2.5 2023年12月4日
0.2.4 2023年9月22日
0.1.0 2023年9月6日

#824命令行工具

Download history 2/week @ 2024-03-28 3/week @ 2024-04-04

每月168 次下载

AGPL-3.0

95KB
2K SLoC

Clineup

Clineup(发音为"clean up")是"CLI"(命令行界面)和"clean up"的结合。

它是一个基于 Rust 的 CLI 工具,旨在提供实用的可编程媒体整理。

Elodie 启发,但有一些不同和额外的功能。

  • 多个反向地理编码 API
  • 多个变量回退
  • 能够复制/移动或创建符号链接
  • 用 Rust 编写

安装

cargo install clineup

从发布版下载二进制文件

您可以从 发布页面 下载您平台预构建的二进制文件。

例如,对于 Linux,您可以使用以下命令

curl -L https://github.com/antscloud/clineup/releases/download/<clineup-version>/clineup-<clineup-version>-linux-x86_64.tar.gz | tar -xz -C <where-you-want-to-install-it>

不要忘记将其添加到您的 PATH 中,这样您就可以在任何地方使用它

docker

docker run -v <ABSOLUTE-PATH-OF-YOUR-SOURCE-FOLDER>:/source -v <ABSOLUTE-PATH-OF-YOUR-DESTINATION-FOLDER>:/destination antscloud/clineup --source /source --destination /destination [YOUR-OPTIONS-HERE]

用法

Clineup 
Utility tool for organizing media

USAGE:
    clineup [FLAGS] [OPTIONS] --destination <DESTINATION> --source <SOURCE>

FLAGS:
        --drop-duplicates            
            Drop duplicates depending on the strategy 
            
                            - Copy : Do not copy the duplicates 
            
                            - Symlink : Do not symlink the duplicates 
            
                            - Move : Do not move the duplicates
                            
        --dry-run                    
            Performs a dry run without actually moving or renaming any files

        --dry-run-number-of-files    
            Specifies the number of files to be processed by the dry run

        --folder-format              
            Specifies the folder format to create

        --gps-optimization           
            Round the lat ang long to 1 decimal places. It becomes less accurate (about 1 kilometer) but can save a lot
            of API calls.
    -h, --help                       
            Prints help information

        --recursive                  
            Performs the organization process recursively on subdirectories

    -V, --version                    
            Prints version information

    -v                               
            Sets the log level to increase verbosity


OPTIONS:
        --destination <DESTINATION>
            Specifies the destination directory where the organized photos will be stored

        --exclude-extension <EXTENSION>            
            Excludes photos with the specified file extensions

        --exclude-regex <EXCLUDE-REGEX>            
            
                            The regex is matched against the full path of the file, including the parent folders.
            
                            For example, to exclude all files containing 'IMG', use the regex '.*IMG.*
        --extension <EXTENSION>                    
            Filters photos based on file extensions

        --filename-format <filename-format>        
            Specifies the filename format to create

        --include-regex <INCLUDE-REGEX>            
            
                            The regex is matched against the full path of the file, including the parent folders.
            
                            For example, to include all files containing 'IMG', use the regex '.*IMG.*
        --nominatim-email <nominatim-email>
            Email to use for nominatim API. This is mandatory following the nominatim usage policy

        --reverse-geocoding <reverse-geocoding>    
            Reverse geocoding provider to use [possible values: nominatim]

        --size-greater <SIZE>
            Filters photos greater than the specified size. Use 'KB', 'MB', 'GB', 'TB' or 'PB'

        --size-lower <SIZE>
            Filters photos lower than the specified size. Use 'KB', 'MB', 'GB', 'TB' or 'PB'

        --source <SOURCE>                          
            Specifies the source directory or file to be organized

        --strategy <strategy>
            Specifies the organization strategy [default: copy]  [possible values: copy, symlink, move]

标签

标签 含义
%year 修改日期的年份
%month 修改日期的月份
%day 修改日期的日期
%width 媒体宽度
%height 媒体高度
%camera_model 相机型号
%camera_brand 相机品牌
%country 照片拍摄的国家
%state 照片拍摄所在的州
%county 照片拍摄所在的县
%municipality 照片拍摄所在的城市
%city 照片拍摄所在的城市
%original_folder 媒体所在的原始文件夹
%original_filename 媒体的原始文件名
%ctimeyear 媒体创建日期的年份
%ctimemonth 媒体创建日期的月份
%ctimeday 媒体创建日期的日期
%mtimeyear 媒体修改日期的年份
%mtimemonth 媒体修改日期的月份
%mtimeday 媒体修改日期的日期

语法

要遵守的语法如下

  1. 直接占位符:您可以直接使用 % 符号后跟标签名称,如 %year 或 %month。

  2. 转义占位符:如果您想转义标签并防止意外解释,可以使用大括号{}。例如,{%year}_{%month}将被视为独立的占位符%year和%month。

  3. 后备占位符:您可以使用管道|符号为占位符定义后备值。如果主标签未找到,库将自动尝试下一个后备标签,依此类推。如果所有后备标签都失败,库将使用指定的后备字符串。例如,{%year|%camera_brand|Unknown year}将尝试%year,然后%camera_brand,如果两者都失败,它将使用后备字符串"Unknown year"。

示例

{%year}/{%month|Custom month}/%camera_brand/{%city|Unknown city}可以替换为以下方式

  • 2023/08/SomeBrand/Paris
  • 2023/08/SomeBrand/Unknown city
  • 2023/08/Unknown camera brand/Unknown city
  • Unknown year/Custom month/Unknown camera brand/Unknown city
  • 等等

待办事项

  • 实现其他逆向地理编码服务
  • 添加事件占位符
  • 文件排除或包含模式
  • 添加测试
  • 添加TOML配置文件

依赖关系

~10–24MB
~374K SLoC