buonzz/scalp

命令行工具,用于分析和存储媒体文件的元数据

v2.1.2 2018-01-07 11:38 UTC

This package is auto-updated.

Last update: 2024-08-29 04:12:30 UTC


README

命令行工具,用于分析和存储媒体文件的元数据。

你或你的组织是否有一堆图片/视频堆放在某个硬盘上?如果这些文件以非结构化的方式存储,比如没有真正的组织结构(按日期、按相册等),那么进行分析和检索一组文件将非常困难。

Scalp 允许您从这些媒体文件中分析和提取大量信息,并从中构建“某些东西”。它是一个纯后端工具,旨在支持您可能在该提取信息之上开发的任何类型的应用程序。

以下是一些可能有用的情况

  • 构建一个私有搜索引擎,允许用户输入特定关键字并返回匹配该关键字的文件列表
  • 用作 CMS 的后端存储
  • 生成缩略图(小/中/大)并将处理后的文件托管到 CDN

以下是 Scalp 的工作概述

scalp architecture diagram

  • 您的媒体文件可以存储在同一服务器或专用的 NAS 服务器上(需要将其挂载到 Scalp 可以访问的位置)
  • Scalp 读取文件并从中提取元数据(表示为 JSON 对象)
  • Scalp 生成缩略图(小/中/大)
  • 处理后的数据可以转发到任何支持的后端存储(文件、ElasticSearch、S3、BackBlaze 等)
  • 您的应用程序通过这些后端存储访问处理后的数据

优点

  • 您可以在不实际移动文件的情况下不断重新组织文件以供用户查看。因为表示可以由应用程序本身抽象化
  • 您的原始图像/视频保持不变(Scalp 永远不会移动、调整大小或修改其属性)
  • 节省大量带宽,因为您不需要在浏览项目时提供原始图像。您只需使用 Scalp 创建的缩略图,并且只有当用户请求时才访问原始(通常很大的)图像文件。

要求

  • 基于 Linux 的服务器(Debian/RHEL 等)
  • PHP 5.4 或更高版本

安装

将 Scalp 作为 CLI 工具安装非常简单
通过 wget

wget https://downloads.buonzz.com/scalp.phar
sudo mv scalp.phar  /usr/local/bin/scalp
chmod +x /usr/local/bin/scalp

通过 curl

curl -o scalp.phar 'https://downloads.buonzz.com/scalp.phar'
sudo mv scalp.phar  /usr/local/bin/scalp
chmod +x /usr/local/bin/scalp

之后,scalp 命令在您的计算机的任何位置都可用。要检查 Scalp 是否安装正确,只需执行

scalp -V

这将输出

Scalp Metadata Extraction Tool by Darwin Biler version v2

通过 Composer - 全局

您可以在您的机器上全局安装 scalp

composer global require 'buonzz/scalp=dev-master'

只需将此目录添加到您的 ~/.bash_profile(或 ~/.bashrc)中的 PATH,如下所示

export PATH=~/.composer/vendor/bin:$PATH

通过 Composer - 每个项目

只需在您的 composer 项目中引入 buonzz/scalp 即可

{
"require":{
    "buonzz/scalp": "1.*"
  }
}

用法

Scalp 可以从您的媒体文件中提取元数据信息并将其导出到以下内容

  • 静态 JSON 文件
  • 缩略图

首先,您需要创建一个名为 .env 的配置文件。这将用于 Scalp 获取某些信息

元数据提取

要生成静态 JSON 文件

scalp metadata:extract

示例提取的元数据

{
   "last_modified":"2017-03-25T12:10:39+00:00",
   "last_accessed":"2017-04-09T12:07:11+00:00",
   "file_permissions":"0644",
   "date_indexed":"2017-04-10T03:04:23+00:00",
   "human_filesize":"974.83 kB",
   "filepath":"IMG_1123.JPG",
   "path_tags":[

   ],
   "filesize":"998225",
   "fileformat":"jpg",
   "filename":"IMG_1123.JPG",
   "mime_type":"image\/jpeg",
   "exif":{
      "DateTimeDigitized":"2016-05-17T16:19:26+00:00",
      "ExposureTime":0.016666666666667,
      "FNumber":4,
      "ISOSpeedRatings":200,
      "ShutterSpeedValue":6,
      "ApertureValue":4,
      "FocalLength":20
   },
   "date_tags":[
      "Tue",
      "17th",
      "Tuesday",
      "May",
      "May",
      "2016",
      "4pm",
      "UTC",
      "17"
   ],
   "file_contents_hash":"4c7e796bc250b14fe7964694c4db5852eca34ddee24991371f848c3e8097436d",
   "width":"1920",
   "height":"1280"
}

缩略图创建

scalp thumbnail:create

在后台运行

如果您有一个相对较大的媒体文件集合,这个过程可能需要数小时才能完成。您可以将其放在后台,这样即使您在终端中注销,它也会继续执行。

nohup scalp metadata:extract > scalp.log &
nohup scalp thumbnail:create > scalp.log &

后端存储

处理后的数据可以以多种方式存储。这使您可以自由地使用其数据,以满足您的用例。

文件

最简单的后端是文件存储。它只是将所有内容简单地存放到你在 .env 文件中定义的 OUTPUT_FOLDER 配置中。你可以使用生成的文件并在你的 web 服务器/CDN 上托管,或者将其传递给应用程序进行进一步处理。

ElasticSearch

当使用 ElasticSearch 作为后端时,请确保在你的 .env 文件中提供以下条目

加载到 ElasticSearch

scalp es:index

将缩略图保存到 ElasticSearch

scalp thumb:save
查看缩略图

你可以使用 PHP 内置的 web 服务器预览这些缩略图

php -S localhost:8080 /usr/local/bin/scalp

然后在本地主机上,只需在搜索命令给出的 URL 后面添加。

BackBlaze 的 B2 云存储

B2 是存储元数据和缩略图的好方法,如果你计划在流量大的网站上提供这些数据。它比其他替代方案便宜得多,并且它为你提供免费的 10GB 初始存储空间,所以除非你决定上传更多内容,否则你实际上不需要支付任何费用。

在使用 BackBlaze 之前,在 .env 文件中提供以下条目

然后执行以下操作以提取、创建缩略图并将数据上传到 B2

scalp b2:upload scalp-test dist

第一个参数(scalp-test)是在你的 BackBlaze 账户中创建的存储桶名称,第二个参数是待上传文件所在的文件夹。

AWS S3

待办事项