You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I must be doing something wrong, because this is what I see as output:
<?xml version="1.0" encoding="utf-8"?> <data type="array" success="0" status="400"><error>No image data was sent to the upload api</error><request>/3/upload.xml</request><method>POST</method></data> Delete page: <?xml version="1.0" encoding="utf-8"?> <data type="array" success="0" status="400"><error>No image data was sent to the upload api</error><request>/3/upload.xml</request><method>POST</method></data>
# parse the response and output our stuff
url=$(echo $response | sed -r 's/.*<link>(.*)<\/link>.*/\1/')
deleteurl=$(echo $response | sed -r 's/.*<link>(.*)<\/link>.*/\1/')
I managed to push kusayuzayushko and ruthtern suggestions into working script:
#!/bin/bash
# imgur script by Bart Nagel <bart@tremby.net>
# version 4.1
# I release this into the public domain. Do with it what you will.
# Required: curl
#
# Optional: xsel or xclip for automatically putting the URLs on the X selection
# for easy pasting
#
# Instructions:
# Put it somewhere in your path and maybe rename it:
# mv ~/Downloads/imgurbash.sh ~/bin/imgur
# Make it executable:
# chmod +x ~/bin/imgur
# Optional, since Alan kindly provided an API key for this script: stick your
# API key in the top:
# vim ~/bin/imgur
# Upload an image:
# imgur images/hilarious/manfallingover.jpg
# Upload multiple images:
# imgur images/delicious/cake.png images/exciting/bungeejump.jpg
# The URLs will be displayed (and the delete page's URLs will be displayed on
# stderr). If you have xsel or xclip the URLs will also be put on the X
# selection, which you can usually paste with a middle click.
# API Key provided by Alan@imgur.com
apikey="ea6c0ef2987808e"
# function to output usage instructions
function usage {
echo "Usage: $(basename $0) <filename> [<filename> [...]]" >&2
echo "Upload images to imgur and output their new URLs to stdout. Each one's" >&2
echo "delete page is output to stderr between the view URLs." >&2
echo "If xsel or xclip is available, the URLs are put on the X selection for" >&2
echo "easy pasting." >&2
}
# 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
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
elif [ $# == 0 ]; then
echo "No file specified" >&2
usage
exit 16
fi
# check curl is available
type curl >/dev/null 2>/dev/null || {
echo "Couln't find curl, which is required." >&2
exit 17
}
clip=""
errors=false
# loop through arguments
while [ $# -gt 0 ]; do
file="$1"
shift
# check file exists
if [ ! -f "$file" ]; then
echo "file '$file' doesn't exist, skipping" >&2
errors=true
continue
fi
# upload the image
response=$(curl -H "Authorization: Client-ID $apikey" -F "image=@$file" \
https://api.imgur.com/3/upload.xml)
# 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
errors=true
continue
elif [ $(echo $response | grep -c "<error_msg>") -gt 0 ]; then
echo "Error message from imgur:" >&2
echo $response | sed -r 's/.*<error_msg>(.*)<\/error_msg>.*/\1/' >&2
errors=true
continue
fi
# parse the response and output our stuff
url=$(echo $response | sed -r 's/.*<link>(.*)<\/link>.*/\1/')
deleteurl="http://i.imgur.com/delete/$(echo $response |\
sed -r 's/.*<deletehash>(.*)<\/deletehash>.*/\1/')"
echo $url
echo "Delete page: $deleteurl" >&2
# append the URL to a string so we can put them all on the clipboard later
clip="$clip$url
"
done
# put the URLs on the clipboard if we have xsel or xclip
if [ $DISPLAY ]; then
{ type xsel >/dev/null 2>/dev/null && echo -n $clip | xsel; } \
|| { type xclip >/dev/null 2>/dev/null && echo -n $clip | xclip; } \
|| echo "Haven't copied to the clipboard: no xsel or xclip" >&2
else
echo "Haven't copied to the clipboard: no \$DISPLAY" >&2
fi
if $errors; then
exit 1
fi
Activity
ruthtern commentedon Apr 10, 2016
luigino, yes
imgur is obsoleting the old API versions
Try changing 2 lines ...
apikey="ea6c0ef2987808e"curl -H "Authorization: Client-ID $apikey" -F "image=@$file" \https://api.imgur.com/3/upload.xmllgbaldoni commentedon Apr 10, 2016
I must be doing something wrong, because this is what I see as output:
<?xml version="1.0" encoding="utf-8"?> <data type="array" success="0" status="400"><error>No image data was sent to the upload api</error><request>/3/upload.xml</request><method>POST</method></data> Delete page: <?xml version="1.0" encoding="utf-8"?> <data type="array" success="0" status="400"><error>No image data was sent to the upload api</error><request>/3/upload.xml</request><method>POST</method></data>I'm modifying lines #29 and #78: is that correct?
kusayuzayushko commentedon Apr 15, 2016
lgbaldoni commentedon Apr 16, 2016
Same deal.
setaur commentedon May 17, 2016
I managed to push kusayuzayushko and ruthtern suggestions into working script:
lgbaldoni commentedon May 17, 2016
Love you man, but the delete page comes out as the image link...
setaur commentedon May 17, 2016
Right. Instead of
should be
Now it should work fine. I updated also my previous post.
lgbaldoni commentedon May 17, 2016
All ok, thank you very much!
setaur commentedon May 25, 2016
I think luigino that you should leave this ticket open, because imgurbash.sh from this repository is still not updated.
lgbaldoni commentedon May 26, 2016
Done, but I suspect this project has been abandoned.