Typora
是我常常用的一款Markdown
编辑器,简洁的格调、实用的性能,口碑真的很赞。最近发现Typora
反对自定义上传图片的性能,原先上传图片须要应用第三方利用,比方iPic
、uPic
等,当初有了自定义性能就能上传图片到任用意床了。性能如下图:
于是就打算本人写一个上传脚本,先看下Typora
的文档阐明:
重点红色框中曾经标出来了,上传后的返回后果须要这种格局,Typora
能力辨认是否上传胜利。这里图床,我应用了SM.MS
,用了很久了,不放心跑路。看接口:
如果Authorization
不传,就是匿名的。
好了,当初上代码:
#!/bin/bash# Author: bilberry# Date: 2021-05-04# 公众号:正义的程序猿arr=()for img_path in "$@"do res=$(curl -s --location --request POST 'https://sm.ms/api/v2/upload' \ --header 'Content-Type: multipart/form-data' \ --form 'smfile=@'"${img_path}") success=`echo $res | python3 -c "import sys, json; r=json.load(sys.stdin)['success']; print(r);"` if [ "$success" == 'True' -o "$usccess" == 'true' ] then r=`echo $res | python3 -c "import sys, json; r=json.load(sys.stdin)['data']['url']; print(r);"` arr[${#arr[@]}]=$r fidoneif [ ${#arr[@]} -eq $# -a $# -gt 0 ]then echo 'Upload Success:' for a in "${arr[@]}" do echo $a doneelse echo 'Upload Failed'fi
代码就是这样,shell
脚本是我现学的,不是很简单,当然也有一些非凡状况没有思考,比方SM.MS
上传了反复的图片,会返回如下内容:
{ "success": false, "code": "image_repeated", "message": "Image upload repeated limit, this image exists at: https://i.loli.net/2021/05/04/qbrdwglp5k7cKDZMjv.png", "images": "https://i.loli.net/2021/05/04/qbrdwglp5k7cKDZMjv.png", "RequestId": "2FDCAB12-972E-4871-AFC8-921552C02AF5"}
接口返回的是JSON
格局,shell
解决JSON
还比拟麻烦,这里我间接调用了python
解决,当然还有其余办法:比方:
- 应用
awk
和sed
- 第三方库
jq
- 调用其余脚本解析器,如
python
、node
、php
等
最初剩下Typora
上的配置,看下面的第一张图,Command
外面是shell
脚本的文件地位,而后能够测试了:
如果看到Validation Succeed
就阐明上传胜利了,当初当咱们Command+V
复制一张图片进来时,会主动将图片上传到SM.MS
,真的不便了很多,写作原本就应该这么简略嘛!
至此,下面就是我明天要讲的如何应用Typora
的自定义性能上传图片到sm.ms
,略微批改shell
代码还能将图片上传到七牛云、阿里云、又拍云等。
文章首发:https://xydida.com/2021/5/4/T...
本文系原创,转载请注明出处。
参考:
- shell教程
- 应用 Shell 脚本来解决 JSON
- SM.MS上传图片文档
- Typora文档