Typora
是我常常用的一款Markdown
编辑器,简洁的风格、实用的功能,口碑真的很赞。最近发现Typora
支持自定义上传图片的功能,原先上传图片须要使用第三方应用,好比iPic
、uPic
等,如今有了自定义功能就能上传图片到任意图床了。功能以下图:php
因而就打算本身写一个上传脚本,先看下Typora
的文档说明:html
重点红色框中已经标出来了,上传后的返回结果须要这种格式,Typora
才能识别是否上传成功。这里图床,我使用了SM.MS
,用了好久了,不担忧跑路。看接口:node
若是Authorization
不传,就是匿名的。python
好了,如今上代码:linux
#!/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 fi done if [ ${#arr[@]} -eq $# -a $# -gt 0 ] then echo 'Upload Success:' for a in "${arr[@]}" do echo $a done else echo 'Upload Failed' fi
代码就是这样,shell
脚本是我现学的,不是很复杂,固然也有一些特殊状况没有考虑,好比SM.MS
上传了重复的图片,会返回以下内容:shell
{ "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
处理,固然还有其余方法:好比:json
awk
和sed
jq
python
、node
、php
等最后剩下Typora
上的配置,看上面的第一张图,Command
里面是shell
脚本的文件位置,而后能够测试了:api
若是看到Validation Succeed
就说明上传成功了,如今当咱们Command+V
复制一张图片进来时,会自动将图片上传到SM.MS
,真的方便了不少,写做原本就应该这么简单嘛!bash
至此,上面就是我今天要讲的如何使用Typora
的自定义功能上传图片到sm.ms
,稍微修改shell
代码还能将图片上传到七牛云、阿里云、又拍云等。curl
文章首发:https://xydida.com/2021/5/4/T...
本文系原创,转载请注明出处。
参考: