#!/bin/bash
# imgur script by Bart Nagel <bart@tremby.net>
# modified by haarp
# version 3
# I release this as public domain. Do with it what you will.
# Required: curl
#
# Optional: xsel or xclip for automatically putting the URL on the X clipboard for easy pasting
#
# Instructions:
# Put it somewhere in your path and maybe rename it:
# mv ~/Downloads/imgur.sh ~/bin/imgur
# Make it executable:
# chmod +x ~/bin/imgur
# Stick your API key in the top:
# vim ~/bin/imgur
# Upload an image:
# imgur images/hilarious/manfallingover.jpg
# The URL and the delete page's URL will be displayed. If you have xsel or xclip the URL
# will also be put on the X clipboard, which you can usually paste with a middle click.
# function to have zenity behave like echo
function echozenity {
zenity --info --no-wrap --text="$1"
}
# If we're running on from a file browser use zenity, otherwise echo
if [ $TERM = linux ]; then
echo="echozenity"
else
echo="echo"
fi
# API Key provided by Alan@imgur.com
apikey="b3625162d3418ac51a9ee805b1840452"
# check API key has been entered
if [ "$apikey" = "Your API key" ]; then
$echo "You first need to edit the script and put your API key in the variable near the top." >&2
exit 15
fi
# check arguments (zenity doesn't like <> )
usage="Usage: $(basename $0) [filename]
Upload an image to imgur and output its new URL and its delete page.
If xsel or xclip is available, the URL is put on the X clipboard."
if [ "$1" = "-h" -o "$1" = "--help" ]; then
$echo "$usage"
exit 0
elif [ $# -ne 1 ]; then
if [ $# == 0 ]; then
$echo "No file specified.
$usage" >&2
else
$echo "Unexpected arguments.
$usage" >&2
fi
exit 16
elif [ ! -f "$1" ]; then
$echo "File \"$1\" not found." >&2
exit 1
fi
# check curl is available
which curl >/dev/null 2>/dev/null || {
$echo "Couln't find curl, which is required." >&2
exit 17
}
# upload the image
response=$(curl -F "key=$apikey" -H "Expect: " -F "image=@$1" \
http://imgur.com/api/upload.xml 2>/dev/null)
# the "Expect: " header is to get around a problem when using this through the
# Squid proxy. Not sure if it's a Squid bug or what.
if [ $? -ne 0 ]; then
$echo "Upload failed!" >&2
exit 2
elif [ $(echo $response | grep -c "<error_msg>") -gt 0 ]; then
$echo "Error message from imgur:
$(echo $response | sed -r 's/.*<error_msg>(.*)<\/error_msg>.*/\1/')" >&2
exit 3
fi
# parse the response
url=$(echo $response | sed -r 's/.*<original_image>(.*)<\/original_image>.*/\1/')
deleteurl=$(echo $response | sed -r 's/.*<delete_page>(.*)<\/delete_page>.*/\1/')
# put the URL on the clipboard if we have xsel or xclip
if [ $DISPLAY ]; then
{ which xsel >/dev/null 2>/dev/null && echo -n $url | xsel && clip="The image URL has been put into the clipboard."; } \
|| { which xclip >/dev/null 2>/dev/null && echo -n $url | xclip -selection clipboard && clip="The image URL has been put into the clipboard."; } \
|| $echo "Haven't copied to the clipboard: no xsel or xclip" >&2 || clip=""
else
$echo "Haven't copied to the clipboard: no \$DISPLAY" >&2
clip=""
fi
# output our stuff
$echo "$url
Delete page: $deleteurl
$clip"