Typora中自定義命令上傳圖片

Typora是我常常用的一款Markdown編輯器,簡潔的風格、實用的功能,口碑真的很贊。最近發現Typora支持自定義上傳圖片的功能,原先上傳圖片須要使用第三方應用,好比iPicuPic等,如今有了自定義功能就能上傳圖片到任意圖牀了。功能以下圖: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

  • 使用awksed
  • 第三方庫jq
  • 調用其餘腳本解析器,如pythonnodephp

最後剩下Typora上的配置,看上面的第一張圖,Command裏面是shell腳本的文件位置,而後能夠測試了:api

若是看到Validation Succeed就說明上傳成功了,如今當咱們Command+V複製一張圖片進來時,會自動將圖片上傳到SM.MS,真的方便了不少,寫做原本就應該這麼簡單嘛!bash

至此,上面就是我今天要講的如何使用Typora的自定義功能上傳圖片到sm.ms,稍微修改shell代碼還能將圖片上傳到七牛雲、阿里雲、又拍雲等。curl

文章首發:https://xydida.com/2021/5/4/T...

本文系原創,轉載請註明出處。


參考:

相關文章
相關標籤/搜索