首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过curl + scrot + xclip上传图像/发出Post请求

通过curl + scrot + xclip上传图像/发出Post请求
EN

Stack Overflow用户
提问于 2015-06-10 05:55:07
回答 1查看 240关注 0票数 0

我正在尝试编写一个简单的bash脚本,它的工作方式类似于jomo/imgur-screenshot,但使用的是ziggi/zimg-host源代码。

本质上,imgur-screenshot所做的是当脚本被初始化时,它打开scrot -select ( -select选项用鼠标交互地选择一个窗口或矩形)。一旦你截取了指定区域的截图,它就会将保存的截图上传到imgur (或者在我的例子中,是使用ziggi/zimg-host的我的自托管站点),然后使用xclip将所需的结果数据(最终是URL链接)复制到你的剪贴板。

这是我的(非常基本的) bash脚本,我现在可以执行这个目的:

代码语言:javascript
复制
#!/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-host响应如下所示:

代码语言:javascript
复制
[
    {
        "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

如果有人能提供一些资源或帮助,那就太好了!

EN

回答 1

Stack Overflow用户

发布于 2015-06-10 09:33:24

从OP的评论中,我假设他/她可以使用像jq这样的JSON解析器。然后在jq中有一个解决方案。假设我们将示例响应放在response.json中,然后

代码语言:javascript
复制
<response.json jq -r '.[0].url'

收益率

代码语言:javascript
复制
ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg

代码语言:javascript
复制
<response.json jq -r '"http://ziggisite.com/" + .[0].url'

收益率

代码语言:javascript
复制
http://ziggisite.com/ccc762c11f336cfa9fdbcc1b7ea4c1a3.jpg

这里的-r选项用于原始输出,即没有JSON的引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30743520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档