aboutsummaryrefslogtreecommitdiff
path: root/scuttle
diff options
context:
space:
mode:
Diffstat (limited to 'scuttle')
-rwxr-xr-xscuttle79
1 files changed, 79 insertions, 0 deletions
diff --git a/scuttle b/scuttle
new file mode 100755
index 0000000..e065b48
--- /dev/null
+++ b/scuttle
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Post a link to a scuttle service.
+#
+
+# Thanks https://gist.github.com/cdown/1163649
+function urlencode() {
+ # urlencode <string>
+ 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 <url> <tags> [description]"
+ 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`"
+CALL="$SCUTTLE_URL/api/posts/add"
+
+# 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
+ # See http://stackoverflow.com/questions/3195851/ddg#3195895
+ DESC="`torify curl -L -s $URL | grep -i "<title>" | sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q' 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
+
+# Remove trailing slash which might lead to urlencode errors by curl (dunny why)
+URL="`echo $URL | sed -e 's|/$||'`"
+
+# Call curl
+# See https://stackoverflow.com/questions/296536/how-to-urlencode-data-for-curl-command#2027690
+#curl -s -K $CONF &> /dev/null
+curl -s -K $CONF -G --data-urlencode "url=$URL" --data-urlencode "tags=$TAGS" --data-urlencode "description=$DESC" &> /dev/null
+
+# Status
+STATUS="$?"
+
+# Teardown
+rm $CONF
+exit $STATUS