scripts: Add file upload script
Uses 0x0.st as a file host for quick uploading and sharing from the commandline. Use `sharefile` and select a file with `fzf`.
This commit is contained in:
parent
79735f9bae
commit
a69cc0a517
1 changed files with 62 additions and 0 deletions
62
scripts/.local/bin/sharefile
Executable file
62
scripts/.local/bin/sharefile
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env sh
|
||||
#
|
||||
# Select a file and share it through 0x0.st
|
||||
#
|
||||
# Examples:
|
||||
# `sharefile`
|
||||
# calling without arguments allows you to first select a folder and then
|
||||
# a file from the folder to share.
|
||||
# `sharefile ~/my-file.zip`
|
||||
# calling with a file as argument automatically uploads the file and copies
|
||||
# share link to clipboard.
|
||||
# When called with a folder as argument allows you to select file within, uploads it and copies share link.
|
||||
|
||||
OXO_URL="https://0x0.st"
|
||||
|
||||
folderpicker() {
|
||||
selected=$(find "${1:-$HOME}" -type d | fzf)
|
||||
[ "$?" -eq 130 ] && exit 130
|
||||
echo "$selected"
|
||||
}
|
||||
|
||||
filepicker() {
|
||||
selected=$(find "${1:-$HOME}" -type f | fzf)
|
||||
[ "$?" -eq 130 ] && exit 130
|
||||
echo "$selected"
|
||||
}
|
||||
|
||||
filetooxo() {
|
||||
curl -F"file=@$1" "$OXO_URL"
|
||||
}
|
||||
|
||||
# exit on escape pressed
|
||||
exit_check() {
|
||||
[ "$1" -eq 130 ] && exit 130
|
||||
}
|
||||
|
||||
main() {
|
||||
if [ $# -eq 0 ]; then
|
||||
foldpick=$(folderpicker "")
|
||||
exit_check $?
|
||||
picked=$(filepicker "$foldpick")
|
||||
elif [ -f "$1" ]; then
|
||||
picked="$1"
|
||||
elif [ -d "$1" ]; then
|
||||
picked=$(filepicker "$1")
|
||||
else
|
||||
printf "Please only provide a folder or file as the optional argument to sharefile." >&2
|
||||
exit 1
|
||||
fi
|
||||
exit_check $?
|
||||
|
||||
url=$(filetooxo "$picked")
|
||||
echo "$url"
|
||||
if command -v notify-send >/dev/null; then
|
||||
notify-send "Upload finished" "URL: $url"
|
||||
fi
|
||||
# printf "%s" "$url" | nohup xclip -i -selection clipboard -r -verbose -loops 2 >/dev/null 2>&1
|
||||
printf "%s" "$url" | xsel --clipboard
|
||||
exit
|
||||
}
|
||||
|
||||
main "$@"
|
Loading…
Reference in a new issue