Json 通过curl+scrot+xclip上传图像/发出发帖请求
我试图编写一个简单的bash脚本,其工作原理与类似,但使用源代码 基本上,imgur屏幕截图所做的是当脚本初始化时,它会打开scrot-select-select选项,用鼠标以交互方式选择窗口或矩形。然后,一旦您拍摄了定义区域的屏幕截图,它会将保存的屏幕截图上传到imgur,或者在我的情况下,使用ziggi/zimg主机上传到我的自托管站点,然后使用xclip将所需的结果数据最终通过URL链接复制到您的剪贴板 这是我的基本bash脚本,我现在要执行这个目标:Json 通过curl+scrot+xclip上传图像/发出发帖请求,json,bash,post,curl,Json,Bash,Post,Curl,我试图编写一个简单的bash脚本,其工作原理与类似,但使用源代码 基本上,imgur屏幕截图所做的是当脚本初始化时,它会打开scrot-select-select选项,用鼠标以交互方式选择窗口或矩形。然后,一旦您拍摄了定义区域的屏幕截图,它会将保存的屏幕截图上传到imgur,或者在我的情况下,使用ziggi/zimg主机上传到我的自托管站点,然后使用xclip将所需的结果数据最终通过URL链接复制到您的剪贴板 这是我的基本bash脚本,我现在要执行这个目标: #!/bin/bash funct
#!/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部分,然后throwhttp://ziggisite.com 在它的开始,所以复制到我的剪贴板上的最终数据看起来像是什么likehttp://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg.
如果有人能提供一些资源或帮助,那就太好了 根据OP的评论,我认为他/她可以使用jq之类的JSON解析器。那么,在jq中有一个解决方案。假设我们将示例响应放在response.json中,然后 当
这里-r选项用于原始输出,即不带JSON的引号。获取JSON解析器。我最喜欢的是。@4ae1e1我抓起jq并试图用它来解析URL值,但是我能得到的最接近的结果是整个结果,其中包括{URL:ccc762c11f.jpg}。我正在使用jq“[0]{url}”。我怎样才能把它改成只抓取ccc762c11f.jpg你读过说明书了吗?jq的DSL非常简单。当你面对DSL时,你不会猜测或发明你自己的语法;相反,您可以阅读f*手册。无论如何,我会为你的具体情况写一个答案。
<response.json jq -r '.[0].url'
ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg
<response.json jq -r '"http://ziggisite.com/" + .[0].url'
http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg