Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement