tcp.ac/scripts/uploader.sh

94 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
####################### https://github.com/tlatsas/bash-spinner
function _spinner() {
# $1 start/stop
#
# on start: $2 display message
# on stop : $2 process exit status
# $3 spinner function pid (supplied from stop_spinner)
local on_success="DONE"
local on_fail="FAIL"
local white="\e[1;37m"
local green="\e[1;32m"
local red="\e[1;31m"
local nc="\e[0m"
case $1 in
start)
# calculate the column where spinner and status msg will be displayed
let column=$(tput cols)-${#2}-8
# display message and position the cursor in $column column
echo -ne ${2}
printf "%${column}s"
# start spinner
i=1
sp='\|/-'
delay=${SPINNER_DELAY:-0.15}
while :
do
printf "\b${sp:i++%${#sp}:1}"
sleep $delay
done
;;
stop)
if [[ -z ${3} ]]; then
echo "spinner is not running.."
exit 1
fi
kill $3 > /dev/null 2>&1
# inform the user uppon success or failure
echo -en "\b["
if [[ $2 -eq 0 ]]; then
echo -en "${green}${on_success}${nc}"
else
echo -en "${red}${on_fail}${nc}"
fi
echo -e "]"
;;
*)
echo "invalid argument, try {start/stop}"
exit 1
;;
esac
}
function start_spinner {
# $1 : msg to display
_spinner "start" "${1}" &
# set global spinner pid
_sp_pid=$!
disown
}
function stop_spinner {
# $1 : command exit status
_spinner "stop" $1 $_sp_pid
unset _sp_pid
}
################################################
echo ""
start_spinner "uploading $1..."
OUT=$(curl -s -F "upload=@$1" -u "tcpac:kuevEacshmej5" https://tcp.ac/i/put)
if ! [[ "$OUT" == *"Imgurl"* ]]; then
echo ""
echo "ERROR: $OUT"
notify-send -i network-error 'tcp.ac upload failed' "$OUT" -t 5000
stop_spinner 2
exit 2
else
CLEAN=$(echo $OUT | sed 's|\\||g' | sed 's|"{"|{"|g' | sed 's|"}"|"}|g')
echo $CLEAN | jq | tee $1.DELETEKEY
IMGURL=$(echo $CLEAN | awk -F ':' '{print $2 $3}' | awk -F ',' '{print $1}' | awk -F '}' '{print $1}' | sed 's|"||g' | sed 's|"||g' | sed 's|https|https:|g')
echo -n $IMGURL | xclip -sel clip
notify-send -i image-x-generic 'tcp.ac upload success' 'link copied to clipboard, delete key saved' -t 5000
fi
stop_spinner $?