diff --git a/Perso/LAU.sh b/Perso/LAU.sh new file mode 100755 index 0000000..9f5e88d --- /dev/null +++ b/Perso/LAU.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +#trotFunky's Linux Auto Uploader (LAU) +#Uses dropbox HTTP API through curl to upload a file and copy shareable link into clipboard +#NEEDS : curl, xclip + +if [ -z "$DROPBOX_TOKEN" ]; then + echo "No token provided." + echo "Please set the env variable DROPBOX_TOKEN to the dropbox authorization token" + exit -1 +fi + +if [ $# -lt 1 ]; then + echo "Too few arguments. Expecting one agument: File name" + exit -1 +elif [ $# -gt 1 -a "$2" != "debug" ]; then + echo "Too many arguments. Expecting only one argument: File name" + exit -1 +elif [ ! -f "$1" ]; then + echo "File does not exist or is not uploadable" + exit -1 +fi + +filePath=$1 + +if [[ $filePath = */* ]]; then #If the string contains a / + fileName="/${filePath##*/}" #Or you know, just remove the largest possible string matching */ and a / at the beginning (Keeping the other for reference) + #fileName="${filePath#"${filePath%/*}"}" #Variable expansion. Innermost bracket reads "Get what does not match the /* anchored at the end". +else #The outermost bracket then removes it from the original string (By doing the same as above but anchored to the start) + fileName="/$filePath" +fi + +if [ -n "$2" ]; then + echo $filePath + echo $fileName +fi + +#CF curl's and dropbox API's documentations + +upload=$(curl --silent https://content.dropboxapi.com/2/files/upload \ + -H "Authorization: Bearer $DROPBOX_TOKEN" \ + -H 'Dropbox-API-Arg: {"path": "'"$fileName"'", "mode": "add", "autorename": true, "mute": false}' \ + -H "Content-type: application/octet-stream" \ + --data-binary @"$filePath" ) + +link=$(curl --silent https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings \ + -H "Authorization: Bearer $DROPBOX_TOKEN" \ + -H "Content-type: application/json" \ + -d '{"path": "'"$fileName"'"}' ) + +if [ -n "$2" ]; then + echo $upload + echo $link +fi + +tmpShareLink="$(echo -n $link | cut -d, -f2 | cut -d: -f2-3)" #According to the returned data, this is where the URL is +tmpShareLink="${tmpShareLink#*\"}" #Removes everything matching *" +tmpShareLink="${tmpShareLink%\"*}" #Removes everything matching "* +shareLink="${tmpShareLink/https:\/\/www/https:\/\/dl}" #Replaces www by dl for direct link +echo -n "$shareLink" | xclip -selection clipboard