利用七牛 qshell 和 Automator 打造快捷上傳服務

來源

早前訂閱了一個圖片上傳工具 iPic,單單就圖片上傳這一功能來講它無疑是很是優秀的。無奈我有的時候要上傳一些非圖片小文件,雖然這個只是個小功能,一個小小的腳本就能夠作到,可是想一想用到這個功能的時候還要打開terminal,emmmm…(縱然本人身爲程序員terminal一直不會關)。git

而後某一天看到了七牛的SDK有命令行工具 qshell (七牛雲有免費對象存儲空間),而 macOS 的 Automator 又是支持運行 shell 腳本的,再加上早前利用 Automator 作過一項彩色圖轉灰度圖的功能,知道這些功能是能夠作成系統服務的…...我有一個大膽的想法。程序員

實踐想法

打開 Automator 選擇服務github

service

而後選擇 運行 Shell 腳本 拖拽到右邊,程序能夠選 finder 或者 任何應用程序shell

run

shell 類型務必選擇 /bin/bash !即便你安裝了 zsh 也不要用!瀏覽器

以前在服務器上安裝了 zsh ,結果 PM2 部署項目死活不成功,找了一圈也沒答案,大概沒有我這麼無聊的人,把服務器配置成 zsh ?

shell

code

這裏咱們先查閱一下 qshell 上傳文件的文檔和使用示例:bash

# 上傳本地文件/Users/jemy/Documents/qiniu.jpg到空間if-pbl裏面
$ qshell fput if-pbl qiniu.jpg /Users/jemy/Documents/qiniu.jpg

這裏主要是對 Key 的構造,即上傳文件在七牛存儲中的文件名,我選擇的構造規則是[日期]-[時間戳MD5值]-[文件名],能夠有效規避文件名重複的問題,完整代碼以下:服務器

urlencode() {
  local length="${#1}"
  for (( i = 0; i < length; i++ )); do
    local c="${1:i:1}"
    case $c in
      [a-zA-Z0-9.~_-]) printf "$c" ;;
    *) printf "$c" | xxd -p -c1 | while read x;do printf "%%%s" "$x";done
  esac
done
}

for f in "$@"

do
    if [ -f $f ]; then
        Key=$(date +%F)-$(date +%s | md5 | head -c 8)-$(basename $f)
        /usr/local/bin/qshell fput static "$Key" $f
        link="//static.domain.me/$(urlencode $Key)"
        if [ "$links" == "" ]; then
            links=$link
        else
            links=$links"\n"$link
        fi
    fi
done

echo -ne $links | pbcopy

這裏須要解釋的幾個點:dom

  • pbcopy 命令會把 echo 中的內容放置到系統粘貼板中;
  • 關於 urlencode :在上傳測試過程當中,發現一旦選擇的文件列表中含有中文命名的文件,就會致使文件連接構造異常,最後也到不了系統粘貼板中,具體緣由不明,因此在構造連接時作一次編碼就好,反正瀏覽器自己也會對編碼的連接自行識別;
  • if [ -f $f ] 是爲了判斷文件與文件夾;
  • 考慮到MD5值太長,我只截取了8位;
  • echo 的兩個參數能夠參考該文
  • 請把資源連接的域名改爲你對應的。

test

寫完腳本以後能夠運行測試,Automator 界面右上角有一個運行,在運行以前咱們先模擬選中了一些文件。工具

select file

添加文件:測試

select file

測試的時候請把 /usr/local/bin/qshell fput static "$Key" $f 刪除。

運行成功以後粘貼板中應該會有以下內容:

//static.domain.me/2017-10-16-9f26b83d-img2%e7%9a%84%e5%89%af%e6%9c%ac.jpg
//static.domain.me/2017-10-16-9f26b83d-image.png

到這裏,只剩下下載安裝 qshell 就大功告成:

$ mv ~/Downloads/qshell /usr/local/bin
$ chmod 755 /usr/local/bin/qshell
$ qshell account AccessKey SecretKey

這裏還用到了修改權限命令,有興趣的話能夠查看我另外一篇文章服務器搭建—Linux基礎知識

完結

如今你能夠剛纔測試時添加的 finder 去掉,命名並保存,就能夠像這樣使用:

example

下面能夠完善一下上傳結束後的通知:

通知

除此以外,你還能夠在系統設置中爲該服務添加快捷鍵,好了,我去取消訂閱 iPic 了......

還有值得一提的是,七牛的對象存儲免費額度還挺大的,拿來作私家圖牀仍是很不錯的,我還配置了CDN美滋滋?。

相關文章
相關標籤/搜索