OSX:自动将屏幕截图上传到ima​​geBin并将URL放入剪贴板

时间:2014-01-27 00:34:14

标签: macos bash file-upload automation screenshot

我想将我的OSX屏幕的一部分发送到IRC,并且最不小心。

许多应用已经这样做了:CloudApp,Droplr,DropBox,Jing等

问题是它们都没有返回实际图像的链接。他们返回包含图片的页面的链接,主要是因为他们可以获得广告。这对IRC没有好处;大多数IRC客户端都足够聪明,可以在看到图像的URL时显示图像,但是它们不够智能,无法从这样的框架页面中提取图像。

我想写一些能做到这一点。

Shift + Cmd + F3让我用鼠标选择一个矩形,并将图像存放在我的桌面上。这可以更改为另一个文件夹:http://osxdaily.com/2011/01/26/change-the-screenshot-save-file-location-in-mac-os-x/

我希望将此图片自动上传到互联网并在剪贴板中放置一个URL链接。

我找出问题的一半:以下bash脚本将上传图片并将链接放入剪贴板:

#! /bin/bash

# Imagebin Loader 
# π 27.1.2014
#
# Upload image to imagebin.org, put url to image in clipboard, make noise

filename="$1"

# http://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to-the-output-from-a-command
url_out=$(
    curl  -s \
        --form "nickname=$(hostname)" \
        --form "image=@$filename;type=$(file --brief -L --mime-type "$filename")" \
        --form "disclaimer_agree=Y" \
        --form "mode=add" \
        --form "Submit=Submit" \
    http://imagebin.org/index.php \
    -w '%{redirect_url}\n'\
    )

# e.g. http://imagebin.org/288917
echo "$url_out"

# http://mywiki.wooledge.org/BashFAQ/073
number=${url_out##*/} 

printf -v new_url "http://imagebin.org/index.php?mode=image&id=%s" $number

# e.g. http://imagebin.org/index.php?mode=image&id=288917
echo "$new_url"

#http://osxdaily.com/2007/03/05/manipulating-the-clipboard-from-the-command-line/
printf "$new_url" | pbcopy

say -v Trinoids "Fooo"

现在我该如何完成拼图的另一部分:每当新的屏幕截图到达桌面时,自动执行此脚本?

LINK:https://apple.stackexchange.com/questions/118698/free-screen-grabber-for-os-x

2 个答案:

答案 0 :(得分:1)

使用Automator Folder Action在将新项目添加到文件夹时启动脚本。您可能希望将屏幕截图重定向到桌面以外的其他位置,否则添加到桌面的所有项目都将上传。

答案 1 :(得分:1)

例如,将此plist保存为~/Library/LaunchAgents/example.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>example</string>
  <key>Program</key>
  <string>/path/to/script</string>
  <key>WatchPaths</key>
  <array>
    <string>~/Desktop/</string>
  </array>
</dict>
</plist>

然后运行launchctl load ~/Library/LaunchAgents/example.plist或注销并重新登录以加载plist。要稍后将更改应用到plist,请卸载并加载它。

无法使用WatchPaths之类的通配符,但您可以编辑脚本以跳过不是屏幕截图的文件:

for f; do
  [[ $f = Screenshot\ *.jpg ]] || continue
  echo "$f"
done

(您还需要弄清楚如何避免为同一图像多次运行脚本。)