diff options
Diffstat (limited to 'imgur')
-rw-r--r-- | imgur | 123 |
1 files changed, 0 insertions, 123 deletions
@@ -1,123 +0,0 @@ -#!/bin/sh - -# Imgur script by Bart Nagel <bart@tremby.net> -# Improvements by Tino Sino <robottinosino@gmail.com> -# Made POSIX-compliant by John Ankarström <john@ankarstrom.se> -# Version 6 or more -# I release this into the public domain. Do with it what you will. -# The latest version can be found at https://github.com/tremby/imgur.sh - -# API Key provided by Bart; -# replace with your own or specify yours as IMGUR_CLIENT_ID envionment variable -# to avoid limits -default_client_id=c9a6efb3d7932fd -client_id="${IMGUR_CLIENT_ID:=$default_client_id}" - -# Function to output usage instructions -usage() { - echo "Usage: $(basename $0) [<filename|URL> [...]]" >&2 - echo - 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 - echo "A filename can be - to read from stdin. If no filename is given, stdin is read." >&2 - echo - echo "If xsel, xclip, pbcopy, or clip is available," >&2 - echo "the URLs are put on the X selection or clipboard for easy pasting." >&2 -} - -# Function to upload a path -# First argument should be a content spec understood by curl's -F option -upload() { - curl -s -H "Authorization: Client-ID $client_id" -H "Expect: " -F "image=$1" https://api.imgur.com/3/image.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. -} - -# Check arguments -if [ x"$1" = x"-h" -o x"$1" = x"--help" ]; then - usage - exit 0 -elif [ $# -eq 0 ]; then - echo "No file specified; reading from stdin" >&2 - exec "$0" - -fi - -# Check curl is available -type curl 2>&1 >/dev/null || { - echo "Couldn't find curl, which is required." >&2 - exit 17 -} - -clip="" -errors=false - -# Loop through arguments -while [ $# -gt 0 ]; do - file="$1" - shift - - # Upload the image - case "$file" - http://*|https://*) - # URL -> imgur - response=$(upload "$file") 2>/dev/null - ;; - *) - # File -> imgur - # Check file exists - if [ x"$file" != x"-" -a ! -f "$file" ]; then - echo "File '$file' doesn't exist; skipping" >&2 - errors=true - continue - fi - response=$(upload "@$file") 2>/dev/null - esac - - if [ $? -ne 0 ]; then - echo "Upload failed" >&2 - errors=true - continue - elif echo "$response" | grep -q 'success="0"'; then - echo "Error message from imgur:" >&2 - msg="${response##*<error>}" - echo "${msg%%</error>*}" >&2 - errors=true - continue - fi - - # Parse the response and output our stuff - url="${response##*<link>}" - url="${url%%</link>*}" - delete_hash="${response##*<deletehash>}" - delete_hash="${delete_hash%%</deletehash>*}" - echo $url | sed 's/^http:/https:/' - echo "Delete page: https://imgur.com/delete/$delete_hash" >&2 - - # Append the URL to a string so we can put them all on the clipboard later - clip+="$url" - if [ $# -gt 0 ]; then - clip+=$'\n' - fi -done - -# Put the URLs on the clipboard if we can -if type pbcopy 2>&1 >/dev/null; then - echo -n "$clip" | pbcopy -elif type clip 2>&1 >/dev/null; then - echo -n "$clip" | clip -elif [ $DISPLAY ]; then - if type xsel 2>&1 >/dev/null; then - echo -n "$clip" | xsel -i - elif type xclip 2>&1 >/dev/null; then - echo -n "$clip" | xclip - else - echo "Haven't copied to the clipboard: no xsel or xclip" >&2 - fi -else - echo "Haven't copied to the clipboard: no \$DISPLAY or pbcopy or clip" >&2 -fi - -if $errors; then - exit 1 -fi |