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
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
上傳了重複的圖片,會返回如下內容:
{
"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...
本文系原創,轉載請註明出處。
參考: