#download #photo #harvest #flickr #command-line-tool #cli

app photobook

一个用于采集、整理、从云中下载并备份您的照片的命令行工具

3 个不稳定版本

0.2.0 2020年7月10日
0.1.3 2020年7月10日
0.1.2 2020年7月10日

2586命令行实用工具

CECILL-2.1GPL-3.0-or-later

72KB
1.5K SLoC

PhotoBook

一个 rust 命令行工具,用于采集、整理、从云中下载并备份您的照片。
包含 Elasticsearch 数据库和 Kibana 作为咨询界面。

安装

  • git 方法

    • 首先克隆此仓库。

    • 根据需要调整代码和配置。

    • 然后运行

        $ cargo build --release
      

      PhotoBook 二进制文件将位于项目的 target/release 目录下。

    • 最后,别忘了完成配置 photobook.toml 以获得可操作的工具(见下文)。

  • cargo 方法

    此工具已打包并发布在 crates.io 上。
    只需使用 cargo 在您的系统上安装它!

      $ cargo install photobook
    

    注意:请确保将下面的配置文件复制到您的系统尝试的地方。
    例如,在 Linux 系统上,photobook.toml 必须位于 /home/<your user>/.config/photobook/

功能

PhotoBook 提供了 4 个主要功能

  • 采集

    此命令会创建一个源中所有图片的清单,作为文件系统或 flickr 仓库,并将其存储在 Elasticsearch 数据库中。
    然后您可以根据需要查询、请求这些文档,以创建自己的相册、收藏夹等。

    采集命令允许 3 种操作

    • initialize 以根据源中的图片(重新)创建适当的索引:$ photobook harvest -o initialize -s flickr

    • update 以维护您的索引以保持最新状态(默认操作)

        $ photobook harvest -o update -s flickr
        $ photobook harvest -s flickr // update is the default operation, so could be omit            
      
    • clean 从您的索引中删除源中删除的图片

        $ photobook harvest -o clean -s flickr
      

    和 2 个源

    • local 从本地文件系统上的路径(必需)中采集

        $ photobook harvest -s local -p '/home/comtelabs/pictures/'
      
    • flickr 连接 flickr 账户并引用其存储库中的所有照片,无论其状态如何

        $ photobook harvest -o initialize -s flickr
      
  • 整理

    此命令执行目录到另一个目录的结构化和受监督的图片复制。
    整理命令因此需要两个必需参数

    • from 定义源路径
    • to 定义目标路径

    该过程仅处理源目录中的图片,通过文件类型进行过滤。
    它按年、月和日期对图片进行排序和排序,然后根据这种排序架构创建目录树,并最终根据这些标准进行存储。

    命令示例

       $ photobook organize --from '/home/comtelabs/pictures/' --to '/data/pictures/'
       $ photobook organize -f '/home/comtelabs/pictures/' -t '/data/pictures/'
    
  • 下载

    此命令专门针对云照片源,正如其名所示,将从云端下载照片到本地路径。
    要使用它,您首先需要采集所选云:PhotoBook数据库引用云上存储的所有照片,并跟随照片的生命周期。

    下载命令提供了一个源(目前为Flickr)和保存照片的目标路径。注意iCloud正在规划中!
    并允许两种下载模式

    • 完整 下载flickr用户配置的所有照片,无论其flickr状态如何,以前尚未下载(默认功能)。

        $ photobook -t '/home/comtelabs/pictures/'
      
    • 服务器 下载存储在定义的flickr服务器上的所有照片,无论其flickr状态如何,以前尚未下载。注意您可以在Kibana的专用索引中找到服务器列表。

        $ photobook -t '/home/comtelabs/pictures/' -s 936
      
  • 备份

    尚未发布

需求

PhotoBook与Elasticsearch数据库配合使用,并使用Kibana作为数据库查询工具。
ELK堆栈提供免费的应用程序和工具,如果您有简单需求的话。

对隐私使用的工具的个人开发者有两个主要优势

  • 通过docker轻松部署 - 但如果您想的话,也可以托管一个Elastic服务器
  • 带有Kibana的即用型查询工具 - 以及一个大型功能集和真正巨大的容量

如何获取Elastic?

  • 对于那些不想花很多时间创建自己的数据库,也不关心其存储方式的人,您可以在本仓库根目录中找到docker-compose.yml文件。
  • 对于其他人,请随意在本地服务器、VPS或其他地方安装自己的Elastic堆栈!
    您可以在这里找到Elastic文档。注意,PhotoBook只需要Elasticsearch和Kibana。

如何使用Elastic Docker?

  • 确保您的机器上安装了docker和docker-compose

  • 然后只需运行和重新运行即可

      $ docker-compose down && docker-compose up -d 
    
  • 您的Elastic数据库将在https://127.0.0.1:9200上监听

  • 尤其是Kibana将在任何浏览器中通过https://127.0.0.1:5601可用

不是太简单了吗?

配置

配置存储在2个文件中

  • 一个您必须在项目根目录中创建的constant.rs文件。
  • 一个默认创建在您的系统用户配置目录中的photobook.toml文件。
    • 例如,在 Linux 系统上,photobook.toml 必须位于 /home/<your user>/.config/photobook/
    • 如果您不知道文件应该存储在哪里,只需运行photobook命令,它将创建一个空默认文件,您可以在文件系统中搜索photobook.toml来找到它。
    • 要了解更多关于此功能的信息,请参阅directories库文档。

在公共仓库的/src目录中提供了一个constant_sample.rs,以展示预期的配置

  • Elasticsearch

      pub const ELASTIC_URL: &str = "https://127.0.0.1:9200";
      pub const ELASTIC_PICTURES_INDEX: &str = "pictures";
      pub const ELASTIC_FLICKR_PHOTOS_INDEX: &str = "flickr_photos";
    
  • Flickr

      pub const FLICKR_API_URL: &str = "https://api.flickr.com/services/rest";
      pub const FLICKR_NONCE: &str = "my_flickr_nonce";
    

在公共仓库的根目录中提供了一个photobook_sample.toml,它将期望这些键

 flickr_key = '<my flickr key>'
 flickr_secret = '<my flickr secret>'
 flickr_oauth_token = '<my oauth token>'
 flickr_oauth_secret = '<my oauth secret>'

注意:PhotoBook使用基于OAuth 1.0的最后一个Flickr API。
请参考Flickr API 文档获取或创建您的令牌和密钥。

用法

上面已描述了一些常见用法,广泛使用参数声明的简短形式。
如需进一步解释,请咨询 CLI 帮助:帮助由 -h--help 提供的命令或子命令之后提供。
例如

$ photobook --help
$ photobook harvest -h  

贡献

PhotoBook 是一个开源项目,所以您可以自由使用、重用、修改和丰富它。
根据 CeCILL 许可证(与 GNU 兼容),主要要求是与作者共享您的演变和修改。
如果是这样,请只需将您的代码发送到这里

路线图

  • 备份功能
  • 链式操作通常连续进行,例如:更新云源的收入,从该源下载新照片,备份目录。
  • iCloud 收集和下载选项
  • 简单的网页界面以咨询图片索引和深入挖掘

许可证说明

版权所有 Silvère Camponovo
在 CeCILL v2.1 许可证下发布代码和程序。请在使用之前阅读 LICENCE 文件。

依赖关系

~16–31MB
~521K SLoC