Création du Linux Auto Uploader (LAU): script permettant d'uploader sur ma dropbox depuis la ligne de commande et d'obtenir le lien de téléchargement.
TODO: -Process d'OAuth2 complet -Gestion des sous-dossiers pour le fichier uploadé (Deuxième argument optionnel? +regex?)
This commit is contained in:
parent
03a7c14447
commit
63944ba313
1 changed files with 60 additions and 0 deletions
60
Perso/LAU.sh
Executable file
60
Perso/LAU.sh
Executable file
|
@ -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
|
Loading…
Add table
Reference in a new issue