From d1791e72e2e1442033cad2ad7ef1dd183562ddec Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 20 Aug 2024 20:42:26 -0300 Subject: Initial import --- scuttle | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 scuttle (limited to 'scuttle') 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 + 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 [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 "" | 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 -- cgit v1.2.3