Skip to content

As of today it stopped working #5

Open

Description

@lgbaldoni

new API perhaps?

Activity

  1. ruthtern commented on Apr 10, 2016

    @ruthtern

    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.xml

  2. lgbaldoni commented on Apr 10, 2016

    @lgbaldoni
    Author

    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?

  3. kusayuzayushko commented on Apr 15, 2016

    @kusayuzayushko
    # 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/')
    
  4. lgbaldoni commented on Apr 16, 2016

    @lgbaldoni
    Author

    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/')
    

    Same deal.

  5. setaur commented on May 17, 2016

    @setaur

    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
    
  6. lgbaldoni commented on May 17, 2016

    @lgbaldoni
    Author

    Love you man, but the delete page comes out as the image link...

  7. setaur commented on May 17, 2016

    @setaur

    Right. Instead of

    deleteurl=$(echo $response | sed -r 's/.*<link>(.*)<\/link>.*/\1/')
    

    should be

    deleteurl="http://i.imgur.com/delete/$(echo $response |\
     sed -r 's/.*<deletehash>(.*)<\/deletehash>.*/\1/')"
    

    Now it should work fine. I updated also my previous post.

  8. lgbaldoni commented on May 17, 2016

    @lgbaldoni
    Author

    All ok, thank you very much!

  9. setaur commented on May 25, 2016

    @setaur

    I think luigino that you should leave this ticket open, because imgurbash.sh from this repository is still not updated.

  10. lgbaldoni commented on May 26, 2016

    @lgbaldoni
    Author

    I think luigino that you should leave this ticket open, because imgurbash.sh from this repository is still not updated.

    Done, but I suspect this project has been abandoned.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions