Skip to content

Instantly share code, notes, and snippets.

@vivien
Last active January 27, 2022 19:46
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save vivien/9768953 to your computer and use it in GitHub Desktop.
Save vivien/9768953 to your computer and use it in GitHub Desktop.
Shell script to upload image(s) to imgur.com
#!/bin/sh
#
# Upload image(s) to imgur.com
# Copyright (C) 2014 Vivien Didelot <vivien@didelot.org>
# Licensed under GPL version 3, see http://www.gnu.org/licenses/gpl.txt
#
# Requires "jshon":
# http://kmkeen.com/jshon/
#
# Alternatives, which suck:
# http://imgur.com/tools/imgurbash.sh
# https://raw.githubusercontent.com/JonApps/imgur-screenshot/master/imgur-screenshot.sh
#
# Usage:
# imgur <file>...
# Specify <file> as '-' for standard input.
#
# Examples:
#
# * Upload several images:
# imgur foo.png bar.png
#
# * Take a screenshot and upload it:
# import png:- | imgur -
#
# * Copy the url to clipboard:
# imgur <file> | xclip
#
# * Open the result in a web browser:
# imgur <file> | xargs firefox
#
# * Quick use (no installation):
# curl -s https://gist.githubusercontent.com/vivien/9768953/raw/imgur | sh -s <file>
# API key from Alan@imgur.com, see imgurbash.sh
KEY=b3625162d3418ac51a9ee805b1840452
die () {
echo "$1" >&2
exit 1
}
# Syntax check
[ $# -lt 1 ] && die "usage: imgur <file>... (use - for stdin)"
# Upload every file given as argument
for IMG in "$@"
do
# A more verbose version of `curl -s [...] | jshon -Q -e rsp -e image -e original_image -u`
RESP="`curl -sS -F key=$KEY -H 'Expect: ' -F "image=@$IMG" http://imgur.com/api/upload.json 2>&1`"
[ $? -ne 0 ] && die "$IMG: $RESP"
URL=`echo "$RESP" | jshon -Q -e rsp -e image -e original_image -u`
[ -z "$URL" ] && die "$IMG: `echo "$RESP" | jshon -e rsp -e image -e error_msg -u`"
echo $URL
done
# vim: et ts=2 sw=2
@amitaibu
Copy link

Thanks for that. I'm going to use that along with PhantomCSS/ PhantomJS tests and Travis-CI

@magamig
Copy link

magamig commented Nov 26, 2015

Thank you! What I was looking for 👍

@khurshid-alam
Copy link

Doesn't work for me. json read error: line 2 column 0: '[' or '{' expected near end of file

@egnappahz
Copy link

egnappahz commented Apr 26, 2017

http://imgur.com/api/upload.json will explain the status of this script.

@shmup
Copy link

shmup commented Jan 25, 2018

Noticed this was updated 8 days ago, so I assume it's still working out of the box? Same API key?

[~/Downloads]$ imgur lol.png
json read error: line 2 column 0: '[' or '{' expected near end of file
lol.png:

So I was curious of the response:

[~]$ KEY=b3625162d3418ac51a9ee805b1840452
[~]$ IMG=/home/jared/lol.png
[~]$ curl -sS -F key=$KEY -H 'Expect: ' -F "image=@$IMG" http://imgur.com/api/upload.json 2>&1

I did notice this is the correct upload API route now: https://api.imgur.com/3/upload.json

The one in the script is a 301.

edit: nevermind, I see even comments trigger the last active date up above. Likely this has long been broken.

Copy link

ghost commented Feb 15, 2018

Any updated version we could use?

edit: found a working version here go-gl/testutils#5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment