Teo-CD
63944ba313
TODO: -Process d'OAuth2 complet -Gestion des sous-dossiers pour le fichier uploadé (Deuxième argument optionnel? +regex?)
60 lines
2.2 KiB
Bash
Executable file
60 lines
2.2 KiB
Bash
Executable file
#! /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
|