用Python实现一个Picgo图床工具
PyPicGo
PyPicGo 是一款图床工具,是PicGo是Python版实现,并支持各种插件自定义插件,目前PyPicGo自带了gitee、github、SM.MS和七牛云图传,以及rename、notify和typora等插件,并支持从pypi中下载其他插件和Uploader
源码地址:
【gitee】https://gitee.com/Ranger313/pypicgo
【github】https://github.com/AnsGoo/PyPicGo
安装
pip install pypicgo
配置
配置文件位于/$HOME/.PyPicGo/config.yml目录下,采用YAML的方式进行配置。必须配置上传器uploader,插件plugins的数量可选
default: # 默认配置
uploader: gitee # 默认图床
plugins: # 全局插件
- module: pypicgo.plugins.rename.ReNamePlugin # 图床插件加载地址
config:
format: liunx{hash}chenghaiwen{date}-{filename}
- module: pypicgo.plugins.typora.TyporaPlugin
- module: pypicgo.plugins.compress.CompressPlugin
- module: pypicgo.plugins.notify.NotifyPlugin
uploaders: # 可用图床
smms: # sm.ms图床配置
module: pypicgo.uploaders.smms.uploader.SmmsUploader
config:
secret_token: xxx
gitee: # gitee 图床配置
module: pypicgo.uploaders.gitee.uploader.GiteeUploader
config:
domain: https://gitee.com
owner: xxx
repo: xxx
img_path: xxx
access_token: xxx
plugins:
github: # github图床配置
module: pypicgo.uploaders.github.uploader.GithubUploader
config:
domain: https://api.github.com
owner: xxx
repo: xxx
img_path: xxx
oauth_token: xxx
plugins: # github 图床私有插件
- module: pypicgo.plugins.jsdelivr.JsDelivrPlugin
qiniu: #七牛云图床配置
moduele: pypicgo.uploaders.qiniu.uploader.QiNiuUploader
config:
domain: http://demo.pypicho.com/
bucket_name: pypicgo
apis:
- http://up-z1.qiniup.com
access_key: xxx
secret_key: xxxx
更多的配置说明参考文档
使用
- 帮助信息
pypicgo -h
- 上传文件
pypicgo -f picture1 picture2 ...
- 指定上传图床
pypicgo -n github -f picture1 picture2 ...
如果系统找不到pypicgo,请检查python的Scripts文件夹是否被加入Path环境变量
支持的图床
| 图床名 | 模块地址 |
|---|---|
gitee |
pypicgo.uploaders.gitee.uploader.GiteeUploader |
七牛云 |
pypicgo.uploaders.github.uploader.QiNiuUploader |
github |
pypicgo.uploaders.qiniu.uploader.GithubUploader |
SM.MS |
pypicgo.uploaders.smms.uploader.SmmsUploader |
支持的插件
| 插件名称 | 用途 | windows | linux | mac |
|---|---|---|---|---|
| rename | 上传前重命名图片 | 支持 | 支持 | 支持 |
| notify | 上传成功失败的系统通知 | 支持 | 支持 | 支持 |
| typora | typora编辑器支持 | 支持 | 支持 | 支持 |
| compress | 图片上传前压缩 | 支持 | 支持 | 支持 |
| jsdelivr | github CDN 加速 | 支持 | 支持 | 支持 |
| clipboard | 上传完成将远程地址复制到剪切板 | 支持 | 支持 | 支持 |
Uploader上传器
uploader是具体的上传插件,用户需要继承pypicgo.core.base.uploader.CommonUploader并实现upload方法,然后在配置文件中引用即可.
插件系统
PyPicgo支持的插件分为三种before、after和final
| 插件类型 | 运行时间 | 基类类 | 示例插件 | 运行时入参 |
|---|---|---|---|---|
| before | 在图片上传前运行 | pypicgo.core.base.plugin.BeforePlugin |
rename | File |
| after | 在图片上传后运行 | pypicgo.core.base.plugin.AfterPlugin |
notify | Result |
| final | 在所有图片上传后运行 | pypicgo.core.base.plugin.FinallyPlugin |
typora | List[Result] |
如果想自定义插件只要根据要求继承任意一个基类插件,并实现execute方法,并在config.yml中配置即可使用.
开发
git clone git@github.com:AnsGoo/PyPicGo.git
cd pypicgo
pipenv shell
pipenv install
python run.py -n 图床名 -f img1.jpg img2.jpg
欢迎大家试用并提交插件
用Python实现一个Picgo图床工具的更多相关文章
- 一劳永逸,使用 PicGo + GitHub 搭建个人图床工具
原文链接: 一劳永逸,使用 PicGo + GitHub 搭建个人图床工具 经常写博客的同学都知道,有一个稳定又好用的图床是多么重要.我之前用过七牛云 + Mpic 和微博图床,但总感觉配置起来比较麻 ...
- 【原创】PicUploader: 一个还不错的图床工具
PicUploader PicUploader 是一个用php编写的图床工具,它能帮助你快速上传你的图片到云图床,并自动返回Markdown格式链接到剪贴板.配置完成后,要获取一个可用于markdow ...
- 图床工具PicGO实现七牛云图片上传
图床工具PicGO实现七牛云图片上传 我们在写博客或者网络文章时经常需要上传图片.目前最有名气的图床工具就是PicGO. 简单的界面,完整的功能,在相册里也能直接复制markdown图片链接.一直深受 ...
- PicGo图床与Typora(PicGo+Typora+GitHub的完整设置)
PicGo图床与Typora(PicGo+Typora+GitHub的完整设置) 如何更方便的用markdown写文章,接下来按照我的步骤来,你一定可以的,这个文章包含了GitHub图床配置.PicG ...
- PicGo 图床配置【工具篇】
Github图床(舍弃) step1 下载PicGo 下载链接: https://github.com/Molunerfinn/picgo/releases step2 新建仓库作为上传图片的目标地址 ...
- 发现一个微博图床API和图片上传代码
网上寻到一款微博图床的插件,然后顺藤摸瓜找到了原作者的API代码. API文件: <?php /** * 上传图片到微博图床 * @author Youngxj & mengkun &a ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...
- 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
- 利用 Python 写一个颜值测试小工具
我们知道现在有一些利用照片来测试颜值的网站或软件,其实使用 Python 就可以实现这一功能,本文我们使用 Python 来写一个颜值测试小工具. 很多人学习python,不知道从何学起.很多人学习p ...
随机推荐
- [COCI2018-2019#2] Sunčanje 题解
link 考虑简洁的 \(\text{cdq}\) 做法. 约定:第 \(i\) 个矩形左下角为 \((xl_i,yl_i)\),右上角为 \((xr_i,yr_i)\),所有坐标都已离散化. 如果 ...
- IDEA版本2020.1全局MAVEN配置
我们用IDEA打开项目有时候要每次配置maven地址,这样就很麻烦 我们可以直接设置全局的 这样所有新打开的项目都能使用
- 细聊.NET6 ConfigurationManager的实现
前言 友情提示:建议阅读本文之前先了解下.Net Core配置体系相关,也可以参考本人之前的文章<.Net Core Configuration源码探究>然后对.Net Core的Conf ...
- 【九度OJ】题目1052:找x 解题报告
[九度OJ]题目1052:找x 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1052 题目描述: 输入一个数n ...
- 【LeetCode】852. Peak Index in a Mountain Array 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 二分查找 查找最大值位置 寻找第一个下降的位置 日期 ...
- Harry Potter and the Hide Story(hdu3988)
Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 ...
- Docker 与 K8S学习笔记(八)—— 自定义容器网络
我们在上一篇中介绍了Docker中三种网络,none.host和bridge,除了这三种网络,Docker还允许我们创建自定义网络,当我们要创建自定义网络时,Docker提供了三种网络驱动供我们选择: ...
- [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎
[源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 目录 [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 0x00 摘要 0x0 ...
- ZOJ 1141:Closest Common Ancestors(LCA)
Closest Common Ancestors Time Limit: 10 Seconds Memory Limit: 32768 KB Write a program that tak ...
- Spring企业级程序设计 • 【第5章 Spring MVC快速入门】
全部章节 >>>> 本章目录 5.1 Spring MVC设计概述及其框架结构 5.1.1 Spring MVC介绍 5.1.1 Spring MVC优势 5.1.2 S ...