2015-06-09 75 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引号。