在上一篇博客中,我已经搭建好了chevereto图床。最初的目的就是在markdown中使用图片。因为之前使用七牛的图床失效了。
现在图床已经搭建好了,参照我的这篇博客,我们来利用chevereto的api以及MarkdownPicPicker工具来实现图片的自动上传。
Chevereto API
API的说明可以参考官方文档,不过官方文档有点简单。这里给出我的使用方式。
按照文档中的说明,我们最好采用“POST”的形式来传数据。默认的上传url为:
http://mysite.com/api/1/upload
通过这个地址上传的图片会标记为Guest上传的,如果想要传到指定账户上,官方给出的回答是自己修改route.api.php
。很神奇,不过能解决了。如果用户为foo,那么要这样操作:
- 复制
route.api.php
为route.fooapi.php
- 将其中函数
CHV\Image::uploadToWebsite($source);
改为CHV\Image::uploadToWebsite($source,'foo');
即可 - 上传url变为:
http://mysite.com/fooapi/1/upload
下面是需要确定POST传递的数据,官网没有给出说明,通过阅读源码,应该是下面的结构:
data = {
"key": "API key",
"source":url,
"action":"upload"
}
其中,source是图片的网址,或者是本地图片转换为base64之后的结果。对于python,可以使用这个函数转换:
import base64
def tobase64(filename):
with open(filename, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
return encoded_string
这样,我们就可以通过POST提交图片了。提交之后返回JSON格式的数据,其中url可以通过JSON的result_dict.get('image',{}).get('url','')
读取出来。
提交时需要secret_key,可以在chevereto网站的设置-API页面看到
MarkdownPicPicker
根据以上原理,在MarkdownPicPicker的基础上增加了相应的uploader,地址.
已经提交给作者,等待作者生成相应的exe。
Pyinstaller
本来我是准备自己生成exe,可惜使用pyinstaller得到的exe都太大了。在虚拟环境下得到的也很大,希望知道的朋友给教一下。
bat文件
一个变通的方法是使用bat文件,这样就可以配合AutoHotKey使用。这里我的环境是,使用了Anaconda,需要使用activate
函数才能进入python环境,相应的bat文件为:
@CALL activate
python MarkdownPicPicker.py
exit
小结
到这里就可以使用chevereto图床进行markdown的写作了。