104 lines
2.2 KiB
Plaintext
104 lines
2.2 KiB
Plaintext
|
#!/bin/bash
|
||
|
#
|
||
|
# Von Tim Peters, https://z3h.de/url-shortener
|
||
|
##############################################
|
||
|
|
||
|
HOST=
|
||
|
API_KEY=
|
||
|
APP_NAME="URL Shortener"
|
||
|
FILE_CONFIG=~/.urlshortener
|
||
|
|
||
|
addUrl() {
|
||
|
|
||
|
local data=
|
||
|
local result=
|
||
|
local link=
|
||
|
local error=
|
||
|
|
||
|
[ -n "$1" ] && data="${data}\"target\": \"$1\""
|
||
|
[ -n "$2" ] && data="${data},\"customurl\": \"$2\""
|
||
|
[ -n "$3" ] && data="${data},\"reuse\": $3"
|
||
|
[ -n "$4" ] && data="${data},\"expire_in\": \"$4\""
|
||
|
[ -n "$5" ] && data="${data},\"password\": \"$5\""
|
||
|
[ -n "$6" ] && data="${data},\"description\": \"$6\""
|
||
|
|
||
|
result="$( \
|
||
|
curl \
|
||
|
-s -H "X-API-KEY: $API_KEY" \
|
||
|
-H "Content-Type: application/json" \
|
||
|
--data "{$data}" \
|
||
|
"$HOST/api/v2/links"
|
||
|
)"
|
||
|
|
||
|
link="$( echo "$result" | jq .link | tr -d \" )"
|
||
|
error="$( echo "$result" | jq .error | tr -d \" )"
|
||
|
|
||
|
if [ "$link" != "null" ]; then
|
||
|
echo -n "$link" | xclip -selection c
|
||
|
notify-send -t 5000 "$link wurde in die Zwischenablage kopiert"
|
||
|
elif [ "$error" != "null" ]; then
|
||
|
notify-send -t 10000 "$error"
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
addConfig() {
|
||
|
|
||
|
yad \
|
||
|
--form \
|
||
|
--title="URL Shortener" \
|
||
|
--text="Ersteinrichtung" \
|
||
|
--field="URL" \
|
||
|
--field="API-KEY" > "$FILE_CONFIG" || exit
|
||
|
|
||
|
}
|
||
|
|
||
|
getConfig() {
|
||
|
|
||
|
while true; do
|
||
|
[ -r "$FILE_CONFIG" ] || addConfig
|
||
|
HOST="$( cut -d\| -f1 < "$FILE_CONFIG" )"
|
||
|
API_KEY="$( cut -d\| -f2 < "$FILE_CONFIG" )"
|
||
|
if [ -z "$HOST" ] && [ -z "$API_KEY" ]; then
|
||
|
addConfig
|
||
|
else
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
getUrlFromClipboard() {
|
||
|
|
||
|
xclip -o | grep -E "^https*://"
|
||
|
|
||
|
}
|
||
|
|
||
|
getConfig
|
||
|
FORM="$( \
|
||
|
yad \
|
||
|
--form \
|
||
|
--title="$APP_NAME" \
|
||
|
--text="URL und Einstellmöglichkeiten" \
|
||
|
--field="URL" \
|
||
|
--field="Kurzlink" \
|
||
|
--field="Wiederverwendung:CB" \
|
||
|
--field="Verfallszeit:CBE" \
|
||
|
--field="Passwort:H" \
|
||
|
--field="Beschreibung" \
|
||
|
"$( getUrlFromClipboard )" \
|
||
|
"" \
|
||
|
"true\!false" \
|
||
|
"\!7d\!30d\!180d\!365d" \
|
||
|
"" \
|
||
|
"" \
|
||
|
)"
|
||
|
|
||
|
[ -n "$FORM" ] && \
|
||
|
addUrl \
|
||
|
"$( echo "$FORM" | cut -d\| -f1 )" \
|
||
|
"$( echo "$FORM" | cut -d\| -f2 )" \
|
||
|
"$( echo "$FORM" | cut -d\| -f3 )" \
|
||
|
"$( echo "$FORM" | cut -d\| -f4 )" \
|
||
|
"$( echo "$FORM" | cut -d\| -f5 )" \
|
||
|
"$( echo "$FORM" | cut -d\| -f6 )"
|