/PicList-Core

modified PicGo core

Primary LanguageTypeScriptMIT LicenseMIT

PicList-Core

standard GitHub node

picgo-core

A tool for picture uploading. Both CLI & api supports. It also supports plugin system, please check Awesome-PicGo to find powerful plugins.

Based on Picgo-Core and add more features.

Typora support natively.

New Features

  • Add watermark, compress and convert image format features
    • Set watermark and compress parameters through picgo set buildin watermark and picgo set buildin compress under CLI command
    • Image processing is beforeTransform, which does not conflict with any plugin
  • Add support for advanced rename, you can set the rename rule through picgo set buildin rename under the CLI command
  • Add new built-in picbed: WebDAV, SFTP, Local path
  • Adds support for imgur account uploads
  • Built-in server just like PicList-Desktop server, you can use picgo-server to start the server
  • Fix several bugs of PicGo-Core

Installation

PicList should be installed with node.js >= 16

before install

As PicList depends on sharp, you need to install sharp before install PicList.

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

Global install

npm install piclist -g

# or

yarn global add piclist

Local install

npm install piclist -D

# or

yarn add piclist -D

Usage

Docker

You can use docker to run PicList-Core.

docker run

Change the ./piclist to your own path, this path is where you put your config.json file, and change the piclist123456 to your own secret key.

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

download docker-compose.yml from this repo, or copy the following content to docker-compose.yml:

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

You can change the ./piclist to your own path, this path is where you put your config.json file, and change the command to your own secret key.

Then run:

docker-compose up -d

Install plugins in docker

You can use docker exec to install plugins in docker.

docker exec -it piclist sh
picgo install picgo-plugin-xxx

Server

You can use picgo-server to start a server, default port is 36677.

Start server:

picgo-server
node ./bin/picgo-server

It's highly recommended to add --key to avoid unauthorized access. Example: picgo-server --key 123456

Show help:

$ picgo-server -h

  Usage: picgo-server [options]

  Options:

    -h, --help          Print this help message
    -c, --config        Set config path
    -p, --port          Set port, default port is 36677
    --host              Set host, default host is 0.0.0.0
    -k, --key           Set secret key to avoid unauthorized access
    -v, --version       Print version number

  Examples:
    picgo-server -c /path/to/config.json
    picgo-server -k 123456
    picgo-server -c /path/to/config.json -k 123456

endpoints

  • /upload?picbed=xxx&key=xxx upload picture, picbed to set pic-bed, key to set secret key
  • /heartbeat heartbeat

Use in CLI

PicList-Core uses SM.MS as the default upload pic-bed.

Show help:

$ 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
    -h, --help                    output usage information

  Commands:

    install|add <plugins...>             install picgo plugin
    uninstall|rm <plugins...>            uninstall picgo plugin
    update <plugins...>                  update picgo plugin
    set|config <module> [name]           configure config of picgo modules
    upload|u [input...]                  upload, go go go
    use [module]                         use modules of picgo
    init [options] <template> [project]  create picgo plugin\'s development templates

Upload a picture from path

picgo upload /xxx/xx/xx.jpg

Upload a picture from clipboard

picture from clipboard will be converted to png

picgo upload

Use in node project

Common JS

const { PicGo } = require('piclist')

ES Module

import { PicGo } from 'piclist'

API usage example

const picgo = new PicGo()

// upload a picture from path
picgo.upload(['/xxx/xxx.jpg'])

// upload a picture from clipboard
picgo.upload()

Documentation

For more details, you can checkout documentation of PicGo-Core.