Tools to interface with Teknik Services.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

168 lignes
3.0 KiB

#!/bin/bash
#
# teknik - Upload files/scrots/urls to teknik.io (rip pomf & uguu ;_;7)
# This script requires maim / xclip / wget be installed.
# By onodera, modified by SirCmpwn
# Further modified by alusion
## CONFIGURATION
# Copy links to clipboard after upload (requires xclip)
clipboard=true
# Send a notification when done
notify=true
# Open URL in browser
browser=false
# Log URLs
log=false
# Log file location
logfile="$HOME/.teknik"
## FUNCTIONS
bin_there() {
if ! type "$@" >/dev/null 2>&1 ; then
echo "$@ not installed."
exit 1
fi
}
# This function sets $file to a selection scrot
selection() {
bin_there "maim"
uploadme="/tmp/scrot.png"
maim --hidecursor -s -b 3 -c 250,250,250 "$uploadme" 2> "/dev/null"
if [[ "$?" -ge 1 ]]; then
echo "Selection cancelled.">&2
exit 1
fi
word=selection
}
# This function sets $file to your clipboard contents
clipboard() {
bin_there "xclip"
uploadme="/tmp/scrot.txt"
xclip -o > "$uploadme"
word=clipboard
}
# This function sets $file an url
url() {
bin_there "wget"
type="$(echo "$location" | rev | cut -d "." -f 1 | rev)"
uploadme="/tmp/url.$type"
wget --quiet "$location" -O "$uploadme"
word=url
}
# This function sets $file a file
file() {
if [[ -f "$location" ]]; then
uploadme="$location"
else
echo "File not found.">&2
exit 1
fi
word=file
}
# This function sets $file to a full screen scrot
desktop() {
bin_there "maim"
uploadme="/tmp/scrot.png"
maim --hidecursor "$uploadme"
word=desktop
}
# This function uploads the $file
upload() {
url=$(curl --silent -F file="@$uploadme;type=image/png" "https://api.teknik.io/v1/Upload")
if [[ "${url}" =~ "error" ]]; then
printf 'error uploading file!\n'
exit 1
else
url="${url##*fileName\":\"}"
url="https://u.teknik.io/${url%%\"*}"
fi
}
# This function logs the url, copies the url to the clipboard, and/or opens the url in your browser
feedback() {
# Copy url to clipboard
if [[ "$clipboard" == true ]]; then
bin_there "xclip"
echo "$url" | xclip -selection primary
echo "$url" | xclip -selection clipboard
fi
# Log url
if [[ "$log" == true ]]; then
echo "$url" >> "$logfile"
fi
# Open url in browser
if [[ "$browser" == true ]]; then
xdg-open "$url"
fi
# Send notification
if [[ "$notify" == true ]]; then
notify-send "Upload complete: $url"
fi
echo "${url}"
}
## EXECUTE
if [[ "$#" -ge 1 ]]; then
case "$@" in
-h|--help)
echo "usage: teknik [options] [file/url]"
echo "options:"
echo " -h, --help print help and exit"
echo " -p, --paste upload your clipboard as text"
echo " -s, --selection upload selection scrot"
echo " -v, --version print version and exit"
exit 0
;;
-s|--selection)
selection
;;
-v|--version)
echo "teknik 0.1.1"
exit 0
;;
-p|--paste)
clipboard
;;
http*)
location="$@"
url
;;
*)
location="$@"
file
;;
esac
else
desktop
fi
if [[ "$#" -eq 0 ]]; then
desktop
fi
upload
feedback