#!/bin/bash # # Post a link to a scuttle service. # # Thanks https://gist.github.com/cdown/1163649 function urlencode() { # urlencode old_lc_collate=$LC_COLLATE LC_COLLATE=C local length="${#1}" for (( i = 0; i < length; i++ )); do local c="${1:i:1}" case $c in [a-zA-Z0-9.~_-]) printf "$c" ;; *) printf '%%%02X' "'$c" ;; esac done LC_COLLATE=$old_lc_collate } # Parameters BASENAME="`basename $0`" URL="$1" TAGS="$2" shift 2 DESC="$*" TMP="${TMP:=/tmp}" # Syntax if [ -z "$TAGS" ]; then echo "usage: $BASENAME " exit fi # Config source "$HOME/.custom/scuttle" || exit 1 # See http://www.wired.com/2010/02/using_the_delicious_api/ CALL="$SCUTTLE_URL/api/posts/add?url=`urlencode $URL`" # Tags TAGS="`echo $TAGS | sed -e 's/,/ /g'`" TAGS="`urlencode "$TAGS"`" TAGS="`echo $TAGS | sed -e 's/%2C/,/g'`" CALL="$CALL&tags=$TAGS" # Description if [ -z "$DESC" ]; then DESC="`curl -s $URL | grep -i "" | sed -e 's|<title>\(.*\)|\1|' 2> /dev/null`" echo "Fetched description: $DESC" fi # Full API call CALL="$CALL&description=`urlencode "$DESC"`" # Write config CONF="`mktemp -t scuttle.XXXXXXXXXX -p $TMP`" echo "url = $CALL" > $CONF echo "user = $SCUTTLE_USER:$SCUTTLE_PASS" >> $CONF # Call curl curl -s -K $CONF &> /dev/null # Status STATUS="$?" # Teardown rm $CONF exit $STATUS