piclist
Version:
Modified PicGo core, A tool for picture uploading
259 lines (179 loc) • 7.11 kB
Markdown
# PicList-Core
[English](./README_en.md) | [简体中文](./README.md)



PicList-Core 是一个功能强大的图片上传工具,提供 CLI 和 API 两种调用方式。它在 PicGo-Core 的基础上增强了功能,同时保持插件兼容性。查看 [Awesome-PicGo](https://github.com/PicGo/Awesome-PicGo) 获取丰富的插件资源。
你可以查看 [PiclList-Core 的 DeepWiki](https://deepwiki.com/Kuingsmile/PicList-Core/) 获取更多信息。
**原生支持 Typora 集成**。
## 增强功能
- **多配置支持**:
- 每个图床支持多个配置,兼容桌面版PicList配置文件
- 通过 `picgo config-list <uploader>` 列出所有配置
- 通过 `picgo config-use <uploader> <configName>` 切换默认配置
- 通过 `picgo config-remove <uploader> <configName>` 删除配置
- 通过 `picgo config-rename <uploader> <oldName> <newName>` 重命名配置
- 通过 `picgo config-show <uploader> [configName]` 查看配置详情
- **图像处理能力**:
- 添加水印、压缩图片和转换格式
- 通过 `picgo set buildin watermark` 和 `picgo set buildin compress` CLI 命令进行配置
- 处理过程发生在 beforeTransform 阶段,确保与所有插件兼容
- **高级重命名**:
- 通过 `picgo set buildin rename` 设置自定义重命名规则
- **额外内置图床**:
- WebDAV、SFTP、本地路径、AWS S3
- 改进的 Imgur 支持,支持账户上传
- **内置服务器**:
- 类似于 PicList-Desktop 服务器
- 使用 `picgo-server` 命令启动
- **错误修复**:
- 解决了原始 PicGo-Core 的多个问题
## 安装
PicList 需要 Node.js >= 22
### 前置条件
PicList 依赖 [sharp](https://sharp.pixelplumbing.com/),请先安装它:
```bash
npm config set sharp_binary_host "https://npmmirror.com/mirrors/sharp"
npm config set sharp_libvips_binary_host "https://npmmirror.com/mirrors/sharp-libvips"
npm install sharp
```
### 全局安装
```bash
npm install piclist -g
# 或者
yarn global add piclist
```
### 本地安装
```bash
npm install piclist -D
# 或者
yarn add piclist -D
```
## 使用方法
### Docker
你可以使用Docker运行PicList-Core。
#### docker run
将`./piclist`更改为你自己的路径,该路径是放置`config.json`文件的位置,并将`piclist123456`更改为你自己的密钥。
```bash
docker run -d \
--name piclist \
--restart always \
-p 36677:36677 \
-v "./piclist:/root/.piclist" \
kuingsmile/piclist:latest \
node /usr/local/bin/picgo-server -k piclist123456
```
#### docker-compose
从本仓库下载`docker-compose.yml`,或将以下内容复制到`docker-compose.yml`:
```yaml
version: '3.3'
services:
node:
image: 'kuingsmile/piclist:latest'
container_name: piclist
restart: always
ports:
- 36677:36677
volumes:
- './piclist:/root/.piclist'
command: node /usr/local/bin/picgo-server -k piclist123456
```
你可以将`./piclist`更改为你自己的路径,该路径是放置`config.json`文件的位置,并在`command`中更改密钥。
然后运行:
```bash
docker-compose up -d
```
#### 在Docker中安装插件
你可以使用`docker exec`在Docker中安装插件。
```bash
docker exec -it piclist sh
picgo install picgo-plugin-xxx
```
#### 在Docker中更新配置
你可以使用`docker exec`在Docker中更新配置。
```bash
docker exec -it piclist sh
picgo set xxx
```
### 服务器
你可以使用`picgo-server`启动服务器,默认端口为`36677`。
启动服务器:
```bash
picgo-server
node ./bin/picgo-server
```
> 强烈建议添加`--key`参数以避免未经授权的访问。例如:`picgo-server --key 123456`
显示帮助:
```bash
$ picgo-server -h
Usage: picgo-server [options]
Options:
-h, --help 显示帮助信息
-c, --config 设置配置路径
-p, --port 设置端口,默认端口为36677
--host 设置主机,默认主机为0.0.0.0
-k, --key 设置密钥以避免未经授权的访问
-v, --version 显示版本号
Examples:
picgo-server -c /path/to/config.json
picgo-server -k 123456
picgo-server -c /path/to/config.json -k 123456
```
#### 接口
- `/upload?picbed=xxx&key=xxx` 上传图片,`picbed`用于设置图床,`key`用于设置密钥
- `/heartbeat` 心跳检测
### CLI使用
> PicList-Core使用`SM.MS`作为默认上传图床。
显示帮助:
```bash
$ picgo -h
Usage: picgo [options] [command]
Options:
-v, --version output the version number
-d, --debug debug mode
-s, --silent silent mode
-c, --config <path> set config path
-p, --proxy <url> set proxy for uploading
-h, --help display help for command
Commands:
list|ls list installed plugins
install|add [options] <plugins...> install picgo plugin
uninstall|rm <plugins...> uninstall picgo plugin
update|up [options] <plugins...> update picgo plugin
config-list <uploader> list all configs names for an uploader
config-use <uploader> <configName> set a config as default for an uploader
config-remove <uploader> <configName> remove a config for an uploader
config-rename <uploader> <oldName> <newName> rename a config for an uploader
config-show <uploader> [configName] show details of a config
set|config <module> [name] [configName] configure config of picgo modules, uploader|transformer|plugin|buildin. For uploader, configName is optional (defaults to "Default").
upload|u [input...] upload, go go go
use [module] use modules of picgo
i18n [lang] change language, zh-CN, zh-TW, en
help [command] display help for command
```
#### 从路径上传图片
```bash
picgo upload /xxx/xx/xx.jpg
```
#### 从剪贴板上传图片
> 从剪贴板获取的图片将被转换为`png`格式
```bash
picgo upload
```
### 在Node项目中使用
#### CommonJS
```js
const { PicGo } = require('piclist')
```
#### ES模块
```js
import { PicGo } from 'piclist'
```
#### API使用示例
```js
const picgo = new PicGo()
// 从路径上传图片
picgo.upload(['/xxx/xxx.jpg'])
// 从剪贴板上传图片
picgo.upload()
```