2015-06-09 106 views
0

我正在嘗試編寫一個簡單的bash腳本,其作用類似於jomo/imgur-screenshot,但使用了ziggi/zimg-host源代碼。上傳圖片/通過curl + scrot + xclip發佈帖子請求

基本上imgur-screenshot所做的是當腳本初始化時,它打開scrot -select(-select選項交互式地用鼠標選擇一個窗口或矩形)。然後,一旦你截取了定義區域的截圖,它會將保存的截圖上傳到imgur(或者在我的情況下,我的自託管網站使用ziggi/zimg-host),然後用xclip將所需的結果數據(最終URL鏈接)到您的剪貼板。

這是我的(很基地)bash腳本,我現在必須執行此通緝目的:

#!/bin/bash 

function uploadImage { 
     curl -s -F files[]="@$1" http://ziggisite.com/upload.php 
} 

if [ "$#" -ne 1 ]; then 
     notify-send "Upload error" 
else 
     uploadImage $1 | xclip -selection c 
     notify-send "Upload complete" 
fi 

當我使用下面的命令啓動此腳本:scrot -e './img.sh $f',其上傳的截圖成功,但XCLIP呢不要將正確的數據複製到我的剪貼板 - 而是複製所有輸出的內容。

以供參考,ziggi/zimg主機響應看起來是這樣的:

[ 
    { 
     "name":"image1.jpg", 
     "type":2, 
     "size": 
     { 
      "width":420, 
      "height":336, 
      "filesize":26834 
     }, 
     "error": 
     { 
      "upload":0, 
      "type":0, 
      "size":0 
     }, 
     "url":"ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg" 
    } 
] 

基本上一旦劇本跑,我需要它來複制響應的「URL」部分,並拋出http://ziggisite.com在它的開始,所以複製到我的剪貼板的最終數據看起來像http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg

如果有人可以拋出一些資源或援助,那會很棒!

+0

獲取JSON解析器。我最喜歡的是[stedolan/jq](https://github.com/stedolan/jq)。 – 4ae1e1

+0

@ 4ae1e1我抓住jq並嘗試用它來解析URL值,但是我能得到的最接近的結果是包含'{「url」:「ccc762c11f.jpg」}'的整個結果。我正在使用'jq'。[0] | {URL}''。我怎樣才能改變這只是抓住'ccc762c11f.jpg' – amy

+0

你看過手冊嗎? 'jq'的DSL非常簡單。當你面對DSL時,你不會猜測或發明自己的語法;相反,你去RTFM(閱讀f *手冊)。無論如何,我會爲你的具體情況寫一個答案。 – 4ae1e1

回答

0

從OP的評論中我假設他/她可以使用JSON解析器如jq。那麼這裏有一個解決方案,在jq。假設我們把響應實例中response.json,然後

<response.json jq -r '.[0].url' 

產生

ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg 

<response.json jq -r '"http://ziggisite.com/" + .[0].url' 

產量

http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg 

這裏-r選項是原始輸出,即沒有JSON引號。