外链论坛

 找回密码
 立即注册
搜索
查看: 67|回复: 2

加强效率!早早下班!Sharp+Picgo实现压缩后上传并替换外链的命令行工具

[复制链接]

2939

主题

176

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099321
发表于 2024-7-26 15:47:52 | 显示全部楼层 |阅读模式

引言

大众好啊, 我是枣把儿!

近期写作比较多,而要发平台又好几个,插进照片的时候就很不方便。一起始我是白嫖掘金的照片位置然则每一个平台都会自动打个水印上去...

于是我又把之前写的命令行工具拿出来翻新了有些,加入了Sharp照片压缩、Picgo上传图床、markdown文件内容替换这三大内容,极重的改善了我的发帖体验,并且感觉在平常比较实用。和大众分享一下~

功能一览

1. 国际化文件翻译 - translate

1. 日前用于机构内部批量翻译国际化文件, 因此需要遵循必定的规则

2. 基于百度翻译, 需要自定义自己的appId和key

3. 支持指定单个文件翻译

4. 支持指定文件夹, 批量翻译所有文件

2.压缩文件 - tiny

  1. 基于sharp, sharp支持的文件(png/jpeg/jpg/gif等等)都能够压缩

  2. 输出目录: 所有参数下, 压缩后文件都会输出到同级目录中

3. 输出时表示体积及压缩比例 如: ✔ 190.4 KB => 115.2 KB (↓39.52%)【 demo1-zz-tiny-1702631665830.gif 】

  4. 支持自定义名叫作输出 --name=xxx.png

  5. 支持自定义压缩质量 --quality=70 (1-100)

  6. 支持单个文件压缩 --file=xxx.png

  7. 支持批量文件压缩

• 模糊匹配 所有包括abc且支持的文件类型都会被压缩

• 倘若指定--dir , 则--condition会在当前目录下查询

• 模糊匹配到的内容, 会标红处理

• 支持相对路径

• 支持绝对路径

• 指定文件夹 --dir=./demo (基于当前命令运行的目录)

• 指定文件名 --condition=abc

• 若批量压缩时, 指定了name(第四条), 则自定义名叫作后会自动拼接一个序号, 避免覆盖

8. 支持和picgo联动, 压缩完后直接上传到图床

1. 需要先安装picgo, 起步, 并配置好图床配置

2. 限制文件体积, 超过 max 的文件不会被上传

3. 经过 Picgo 上传到图床 - picgo

1. 支持指定文件 -f 上传

2. 支持指定文件夹 -d 批量上传所有

3. 支持限制体积 -m 默认只上传60kb以内的照片

4. 支持模糊匹配 -co 文件名中含有co的照片, 且满足体积限制, 都会被上传

4. 究极联动: tiny压缩 -> 自动传给picgo -> 自动把obsidian里的本地照片链接替换为上传后的url

安装

先安装sharp的两个前置依赖包。@img/sharp-darwin-arm64@0.33.0 、 @img/sharp-win32-x64@0.33.0

我的系统是macos M2,因此需要安装@img/sharp-darwin-arm64

npm i -g @img/sharp-darwin-arm64@0.33.0

windows10/11 (win32-x64)用户请安装 @img/sharp-win32-x64@0.33.0

 npm i -g @img/sharp-win32-x64@0.33.0

而后安装工具本体

npm i -g zzoffduty-cli@latest

运行 -h 瞧瞧是不是成功

zz -h

tiny命令 实现压缩

运用help命令查看所有支持的功能

zz tiny --help

  -f, --file              要压缩的照片文件 (default: null)

  -d, --dir 

               压缩文件夹内所有文件 (default: null)

  -co, --condition 压缩文件夹内所有名叫作包括[--condition]的照片文件 (default: null)

  -q, --quality        压缩质量(1-100) (default: 75)

  -c, --colours        GIF色彩保存(2-256) (default: 128)

  -n, --name              指定文件名输出 (default: "")

  -m, --max 限制要上传的文件体积(kb)(仅当开启 --picgo 时会用到) (default: 50)

  --picgo [type]                调用picgo (无参数) (default: null)

--no-picgo [type]             不调用picgo (无参数) (default: null)

  -h, --help                    display help for command

压缩功能演示:

• 指定目录压缩,并指定名叫作输出

picgo命令 实现上传图床

PicGo在2.2.0版本起始内置了一个小型的服务器,用于接收来自其他应用的HTTP请求来上传照片

默认监听位置: 127.0.0.1,默认监听端口:36677

以POST请求去上传

• method: OST

• url: http://127.0.0.1:36677/upload (此处以默认配置为例)

• request body: {list: [xxx.jpg]} 必须是JSON格式

返回的数据:

{

  "success"true// or false  "result": ["url"

]

}

因此此功能经过Http请求的方式调用Picgo Server, 因此需要本地已然安装并起步Picgo, 并已然配置好了图床

倘若运用picgo-core的话,手动配置json文件我觉得更痛苦有些因此还是基于已然有了Picgo客户端的状况下,简化有些流程

运用help命令查看所有支持的功能

Options:

  -f, --file              要上传的照片文件 (default: null)

  -d, --dir 

               上传文件夹内所有照片文件 (default: null)

  -co, --condition 上传文件夹内所有名叫作包括[--condition]的照片文件 (default: null)

  -m, --max                大于指定体积(kb)的照片不会被上传 (default: 50)

  -h, --help                    display help for command

上传文件夹内所有体积符合限制的照片文件

上传所有名叫作中含有指定文字且体积符合限制的照片文件。匹配到会有提示

tiny 联动 picgo

在tiny命令后运用--picgo 开启压缩后调用picgo

• 压缩单个照片文件 并 经过picgo上传 (这儿校验了max)

zz tiny -f ./demo/demo2.png --picgo

• 压缩文件夹内所有照片文件,并经过picgo上传所有符合体积限制的照片文件

zz tiny -d ./demo --picgo

• 压缩文件夹内名叫作含有指定文字的,且符合体积限制的照片,并经过picgo上传

zz tiny -d ./demo -co mo2 --picgo

• 压缩文件夹内名叫作含有指定文字的,且符合体积限制的照片,并指定输出的文件名,并经过picgo上传

ps: 由于叫作含有指定文字这个指令是个批量操作,因此输出文件名必定会带一个后缀防止重复

zz tiny -d ./demo -co mo2 -n 自定义 --picgo

究极联动,一条龙服务

压缩 => 上传 => 自动替换markdown照片链接

./src/index.js tiny -d ./demo/md/配图 --picgo --replace -ref ./demo/md/demo4.md

此命令日前支持替换Obsidian里的Wiki链接, 即 ![[demo2.png]] 如下图所示:

被压缩的照片里只要有demo2.png 就会替换成demo2.png压缩后的,上传到图床的url。 ![[demo2.png]] 替换为 ![](http://www.baidu.com/demo2.png)

尤其重视,有有些Obsidian配置的前置要求

1. 需要开启Wiki链接。由于日前版本我只实现了替换wiki链接对应的文本

2. Obsidian默认状况下,粘贴来的照片表示成 paste img 2023123123.png 这种格式。因此意见安装 paste image rename 这个插件。原由是:

• 由于它名叫作自带空格,和命令行工具没法兼容!倘若你批量上传过程中,有一个文件不符合体积限制,被上传,没被替换。此时你想运用zz tiny -f ./paste img 2023123123.png -m 100 --picgo --repalce -ref ../xxx.md 继续放大限制,上传+替换时,文件就没法被解析了!

• 况且本身的名字比较长,欠好

以下是我的插件配置

当我截图后粘贴到md中时表示如下:

在粘贴照片时,文件存放路径配置:

在目录中展示为:

ok,以上便是我的obsidian配置,及我是怎样运用zzoffduty-cli的所有内容!

zz tiny -d ./ -q 60 -m 100 --picgo --replace -ref ../

回复

使用道具 举报

55

主题

488

回帖

1622

积分

金牌会员

Rank: 6Rank: 6

积分
1622
发表于 2024-8-24 12:54:47 | 显示全部楼层
“沙发”(SF,第一个回帖的人)‌
回复

使用道具 举报

2926

主题

1万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099376
发表于 7 天前 | 显示全部楼层
i免费外链发布平台 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-18 12:06 , Processed in 0.070792 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.