Client ID 생성
이미지 업로드에 사용하기 위하여 imgur 에서 Client ID
를 생성한다.
hs.settings 설정
위에서 생성한 Client ID
값을 settings 에 설정한다.
바로, 값을 사용해도 됩니다.
1 2 3 4 5 6
| local obj = {} obj.config = { ["imgurKey"] = "YOUR-CLIENT-ID", }
for key, val in pairs(obj.config) do hs.settings.set(key, val) end
|
imgur 업로드 함수
처리순서
- 클립보드에 있는 이미지를 불러온다.
- 임시파일로 저장한다.
- base64 인코딩을 한다.
- imgur Client ID 를 사용하여 https://api.imgur.com/3/upload.json 에 업로드한다.
- 결과값에서
link
를 확인한다.
- link 를 클립보드에 넣는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| local obj = {}
function obj:upload() local image = hs.pasteboard.readImage()
if image then local tempfile = "/tmp/imgur-tmp.png" image:saveToFile(tempfile) local b64 = hs.execute("base64 -i " .. tempfile) b64 = hs.http.encodeForQuery(string.gsub(b64, "\n", ""))
local url = "https://api.imgur.com/3/upload.json" local headers = { Authorization = "Client-ID " .. hs.settings.get("imgurKey") } local payload = "type='base64'&image=" .. b64
hs.http.asyncPost(url, payload, headers, function(status, body, headers) print(status, headers, body) if status == 200 then local response = hs.json.decode(body) local imageURL = response.data.link hs.urlevent.openURLWithBundle(imageURL, hs.urlevent.getDefaultHandler("http")) hs.pasteboard.setContents(imageURL) return imageURL end end) end end
return obj;
|
key binding
hs.hotkey.modal
를 사용하여 키를 할당한다.
이 부분은 나중에 다룰 예정입니다.
i
, u
키를 입력해서, imgur:upload()
를 실행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| local imgur = require("modules.imgur")
local obj = { { key = "i", desc = "image", children = { { key = "u", desc = "image upload", fn = function() imgur:upload() end }, } } }
return obj
|
출처