應用場景
用 Markdown 寫部落格的苦惱就是不能方便的在文章中插入圖片,所以需要一個好的圖床來幫助我們儲存圖片返回圖片連結,比如七牛雲。但是為了插入一張圖片,我們需要:
- 拿到圖片
- 開啟七牛雲網站上傳圖片
- 複製圖片外鏈地址
- 在 Markdown 檔案中使用
![]()
插入圖片 - 填寫圖片地址
當遇到部落格內容需要插入大量圖片時,真是心力交瘁,非常的不方便。所以需要一個工作流來幫助我們完成這些複雜的機械化工作。
預備工作
開始之前需要先安裝必要的軟體,並且註冊七牛賬號。
- 安裝 Alfred with Powerpack
如果你的電腦還沒有安裝
Alfred
,需要先到 官網 下載,因為需要用到提供的 workflow 功能,所以需要購買,當然網上也有破解版的。 - 安裝 qshell qshell 是七牛提供的命令列工具,以幫助大家更好的使用七牛服務。如何安裝下載 qshell,參考 官方文件 。
- 註冊七牛賬號 七牛是一個雲服務商,很多部落格都用七牛的物件儲存服務來做圖床。不過現在測試域名只有30天的使用許可權,如果想長期使用,還需要一個自己的備案域名。
開始安裝
準備工作都已經完成之後,下面開始安裝配置 workflow。
-
github 下載 qimage-mac 最新的 release 版本。 下載下來之後,解壓進入資料夾下雙擊
點選 import。 其中Qiniu.alfredworkflow
檔案安裝 workflow 。Hostkey
為快捷鍵配置,Run Script
為 AppleScript 指令碼,最右邊兩個為貼上板和系統通知。 -
配置 workflow 環境變數。 點選上圖示出的環境變數圖示,看到如下四個配置項。
AccessKey & SecretKey:這是 qshell 操作個人賬號的憑證,登陸 七牛雲 之後在管理控制檯 -> 個人中心 -> 金鑰管理
中可以看到 AccessKey 和 SecretKey。也可以直接開啟 portal.qiniu.com/user/key 看到。 bucket & bucketDomain:在物件儲存 -> 儲存空間列表
中選擇或者新建一個儲存空間即 bucket,點選該 bucket 可以看到右側有測試域名。不過目前測試域名有效期為 30天,長期使用的話需要繫結一個已經備案的域名。域名即為 bucketDomain。 -
設定快捷鍵並且關聯應用。 雙擊
這裡設定的是Hotkey
模組,設定自己習慣的快捷鍵用於觸發該 workflow 執行。option + command + v
。 -
因為 qshell 更新,需要更新
Run Script
指令碼。雙擊Run Script
,在編輯器中替換程式碼。-- config start property bucket : (system attribute "bucket") property bucketDomain : (system attribute "bucketDomain") property AccessKey : (system attribute "AccessKey") property SecretKey : (system attribute "SecretKey") property Account : (system attribute "Account") -- config end -- md5(date) as file name set fileName to do shell script "date \"+%Y%m%d%H%M%S\" | md5" -- see if clipboard is a file set filePath to "" try set clipPath to the clipboard as «class furl» set filePath to clipPath as alias -- like "/Users/jverson/Pictures/igarss/IMG_20140720_221838.jpg" set filePath to quoted form of POSIX path of filePath set filePath to second item of my theSplit(filePath, "'") set tempArray to my theSplit(filePath, ".") -- like "jpg" or "png" or "gif" or "mp4" set fileType to last item of tempArray end try if filePath is not "" then set fileName to fileName & "." & fileType set markdownUrl to my upload(fileName, filePath, fileType) return markdownUrl --end end if -- see if clipboard is image data set jpegDATA to "" try set jpegDATA to the clipboard as JPEG picture end try if jpegDATA is not "" then set tempPath to "/tmp/" set fileName to fileName & ".jpg" set filePath to tempPath & fileName set theFile to open for access filePath with write permission write jpegDATA to theFile close access theFile set markdownUrl to my upload(fileName, filePath, "jpg") -- delete temp file do shell script "rm " & filePath return markdownUrl end if beep 1 display dialog ¬ "No file or image data found on the clipboard." with icon ¬ note buttons {"Whatever"} default button 1 return -- string split function -- ref: http://erikslab.com/2007/08/31/applescript-how-to-split-a-string/ on theSplit(theString, theDelimiter) -- save delimiters to restore old settings set oldDelimiters to AppleScript's text item delimiters -- set delimiters to delimiter to be used set AppleScript's text item delimiters to theDelimiter -- create the array set theArray to every text item of theString -- restore the old setting set AppleScript's text item delimiters to oldDelimiters -- return the result return theArray end theSplit -- upload image to qiniu on upload(fileName, filePath, fileType) -- compress image todo.. -- qiniu account set set account_commond to "/usr/local/bin/qshell account -w " & AccessKey & " " & SecretKey & " " & Account do shell script account_commond -- upload to qiniu set upload_command to "/usr/local/bin/qshell fput " & bucket & " " & fileName & " " & filePath do shell script upload_command -- strcat url set resourceUrl to bucketDomain & fileName if (fileType is "png") or (fileType is "jpg") or (fileType is "gif") or (fileType is "bmp") or (fileType is "jpeg") then set markdownUrl to "![](" & resourceUrl & ")" return markdownUrl else return resourceUrl end if end upload -- ref:https://discussions.apple.com/thread/2379870?start=0&tstart=0 複製程式碼
並點選圖中環境變數圖示,新增變數
Account
,值為你七牛的使用者名稱。 -
開始使用。 現在就可以開始使用了,如果不按預期正常工作,可以點選 debug 按鈕,檢視控制檯報錯。
使用
- 截圖之後圖片儲存到貼上板中。
- 在 Markdown 檔案中需要插入的地方,使用之前設定的快捷鍵
option + command + v
,圖片地址就被插入貼上板中了,在需要使用的地方使用ctrl + v
貼上就可以了。
遇到的問題
- 控制檯提示
execution error: sh: /usr/local/bin/qshell: No such file or directory (127)
解決:需要給 qshell 能夠在任何位置都可以執行,需要把 qshell 所在的目錄加到環境變數$PATH
中去,或者將 qshell 執行檔案複製到/usr/local/bin
資料夾下。