Skip to content

up2b/pyup2b

Repository files navigation

English

命令行管理太麻烦?试试up2b-gui吧!

UP2B

Downloads

一个能在终端中将图片上传到图床的包。

支持 Linux、macOS 和 Windows。

特点

支持以下图床自动上传:

  • sm.ms
  • imgse.com(原 imgtu.com)
  • github.com
  • imgtg.com

成功上传到github后会返回jsdelivr的 CDN 链接,加快在中国境内对图片的访问速度。

支持 jpeg/jpg 和 png 图片的自动压缩,但仅在测试阶段,可能有些小问题,如果你不想在使用此功能时出现错误或达不到预期则不建议使用。

怎么用

安装up2b包:

pip install up2b

安装后,会多出一条up2b命令:

Usage: python -m up2b [OPTIONS] COMMAND [ARGS]...

Options:
	-h, --help     显示本帮助信息
	-v, --version  显示版本信息
Commands:
	choose            选择图床
	config-watermark  配置文字水印
	current           显示正在使用的图床
	list              列出支持的所有图床
	login             保存图床登录信息
	login-git         保存 git 登录信息
	upload            上传图片

1 选择图床

第一次使用时,必须先选择图床。

up2bchoose命令的可选值为:

  • 0
    • sm.ms
  • 1
    • imgse.com
  • 2
    • github.com
  • 4
    • imgtg.com
# 如果你想选择sm.ms
up2b choose 0

你可能也注意到了,图床的 code 不连续,这是因为最初写这个项目的时候没有考虑到一些图床挂掉的可能性,删掉一些挂掉的图床后,为了使配置文件不冲突,所以图床 code 无法连续。

在 1.0 版本中,将不会再使用数字作为图床的 code,这个问题将会解决,同时会启用全新的配置文件,与 0.X.X 版本的配置文件将不通用。

2 保存认证信息

普通图床:

git 仓库本身并不算是图床,所以 git 仓库之外的图床都是普通图床。

使用普通图床时,用login命令进行认证信息的配置,如:

up2b login username password

git 仓库:

此包所指的 git 仓库包括github

使用 git 仓库作为图床,需要用或login-git命令进行认证信息的配置。

认证信息需要四个参数:

  • ACCESS_TOKEN 私密令牌
  • USERNAME 用户名
  • REPO 仓库名
  • FOLDER 想要保存在仓库里的哪个文件夹中,会自动创建不存在的文件夹

比如,我想将图片保存在image-bed仓库里的md文件夹内,输入此命令:

up2b login-git access_token username image-bed md

3 (可选) 在 typora 内填写命令

最重要的上传功能:

Usage: up2b upload [OPTIONS] [IMAGE_PATH]...

	上传图片

Options:
	-aw, --add-watermark  对要上传的图片添加文字水印
	-ac, --auto-compress  允许自动压缩图片
	-ic, --ignore-cache   忽略数据库缓存,强制上传图片
	-h, --help            Show this message and exit.

up2b upload命令填到Typora里,命令里有个参数-ac为可选参数,其作用为开启自动压缩功能,如果不加此参数,上传图片时不会自动压缩,超出图床限制大小就会报错。而添加此参数,则会自动将超限图片压缩到限制图片大小或以下,保证顺利上传。

但自动压缩功能当前没有经过严谨地测试,所以不能保证不出问题,有问题请将异常的截图发在电报群里。

开启自动压缩功能:

up2b upload -ac

不开启自动压缩功能:

up2b upload

你也可以添加文字水印:

up2b upload -aw

但需先配置文字水印的相关信息:

up2b config-watermark -50 -50 50 'test watermark' '/path/of/font/font.ttf' 48

配置示例

自行打包

如果此项目中更新了某些特性对你来说很有用,但尚未发布新的 release,那么你可以自行打包安装。

创建虚拟环境

如果你不担心对环境中的其他包产生影响,也不介意自己的 Python 库中多一些可能永远用不到的包,则可以忽略此步。

如果你使用的环境管理工具为 pthon 内置的 venv,请自行创建环境,这里不多介绍。

conda create -n up2b-temp python=3.11
conda activate up2b-temp

安装依赖

pip install build

打包

python -m build

会在项目的根目录创建dist目录,里面就有打包好的whl文件,安装即可:

pip install -U dist/up2b-*-py3-none-any.whl

TODO

鉴于图床网站凉的速度超乎想象,所以在下个大版本中我不打算再对任何图床进行支持,而是使用配置文件的方式由用户自行添加图床,并添加检测图床可用性的功能。

以下是 v1 版本的初步功能设计。

  • 设计通用配置文件规则

    • 图床类型
      • git
      • api
      • 非 api
  • 图床可用性检测及无效标记

    • 对配置文件中的图床进行可达(超时)检测
    • 对不可达(超时)的图床添加一个无效标记,并记录检测时间
    • 用户可设置检测周期,在检测周期内不会检测无效图床以节约时间
    • 用户可设置删除(软删除)无效图床配置的周期次数,当达到或超过此次数的检测周期后,将在配置文件中将此图床标记为永久失效(软删除)
    • 用户可在配置文件中删除无效标记
  • 本地网页配置

    配置文件规则复杂,为了降低用户的使用成本,为用户提供网页版可视化配置项。

    • 可配置规则
    • 可检测可用性
    • 可设置无效性检测周期
    • 可手动添加、删除无效标记

v1 版本后将不再维护 up2b-gui 项目,将可视化配置转移动网页配置中。

除以上功能外,仍需考虑的点有:

  • 技术栈的选择

    python 虽然简单,但是为了更好地支持网页配置和降低前后端维护成本,我也在考虑 node 实现。

    同时,使用图床的人中有一些普通用户,既不懂 node,也不懂 python,这种情况下需要使用可编译语言发布二进制可执行文件,所以 Go 也在考虑的范围内。当前我正在接触 rust,也不排除用 rust 实现。

  • 配置文件的类型

    当前的配置文件是 json,如果一旦规则复杂起来,json 可能就不太适合作为可编辑的配置文件了,故需在 yaml 和 toml 中作出选择。