actual initial commit
fairly poorly written, as most of it was copy+pasted from regular iron
This commit is contained in:
parent
bb22fa8236
commit
afd6191836
94
iron-spmenu
Executable file
94
iron-spmenu
Executable file
|
@ -0,0 +1,94 @@
|
|||
#!/bin/sh
|
||||
# iron-spmenu
|
||||
# simple rautafarmi client using spmenu
|
||||
# Licensed under GNU General Public License version 3.0
|
||||
|
||||
WDIR="${WDIR:-$HOME/.local/share/spmenu}"
|
||||
INSTANCE="${INSTANCE:-https://donut.eu.org/rautafarmi}"
|
||||
LINECOUNT="${LINECOUNT:-40}"
|
||||
CKEY="${CKEY:-30}"
|
||||
RUNLAUNCHER="${RUNLAUNCHER:-spmenu}"
|
||||
RUNLAUNCHER_ARGS="${RUNLAUNCHER_ARGS:- -l $LINECOUNT -is 500 -g 1}"
|
||||
# ansi escape codes, by default we use 6 colors
|
||||
[ -z "$NOCOLOR" ] && \
|
||||
COLOR_01="$(printf '\033[0m')" \
|
||||
COLOR_02="$(printf '\033[0;33m')" \
|
||||
COLOR_03="$(printf '\033[0;35m')" \
|
||||
COLOR_04="$(printf '\033[0;36m')" \
|
||||
COLOR_05="$(printf '\033[0;33m')" \
|
||||
COLOR_06="$(printf '\033[0;32m')"
|
||||
|
||||
get_msg() {
|
||||
curl -so "$WDIR/iron-spmenu-api" "$INSTANCE/api.php"
|
||||
jq -e ".posts[] .username" "$WDIR/iron-spmenu-api" > "$WDIR/iron-spmenu-username"
|
||||
jq -e ".posts[] .message" "$WDIR/iron-spmenu-api" > "$WDIR/iron-spmenu-message"
|
||||
jq -e ".posts[] .time" "$WDIR/iron-spmenu-api" > "$WDIR/iron-spmenu-messagetime"
|
||||
jq -e ".posts[] .postID" "$WDIR/iron-spmenu-api" > "$WDIR/iron-spmenu-messageid"
|
||||
jq -e ".posts[] .imageURL" "$WDIR/iron-spmenu-api" > "$WDIR/iron-spmenu-messageimg"
|
||||
|
||||
for i in $(seq "$LINECOUNT"); do
|
||||
username="$(head -n "$i" "$WDIR/iron-spmenu-username" | tail -n 1 | sed 's/""/Anonymous/g')"
|
||||
message="$(head -n "$i" "$WDIR/iron-spmenu-message" | tail -n 1 | sed "s/%/%%/g; s/>>/DISREPLY/g; s/>/DISGTEXT/g; s/DISREPLY/${COLOR_04}>>/g; s/DISGTEXT/${COLOR_06}>/g; s/\" \"//g")"
|
||||
time="$(head -n "$i" "$WDIR/iron-spmenu-messagetime" | tail -n 1)"
|
||||
id="$(head -n "$i" "$WDIR/iron-spmenu-messageid" | tail -n 1)"
|
||||
|
||||
# download the image
|
||||
curl -so "$WDIR/iron-spmenu-image-$id.png" "$(sed "${i}q;d" "$WDIR/iron-spmenu-messageimg" | sed 's/"//g')"
|
||||
IMG="IMG:$WDIR/iron-spmenu-image-$id.png"
|
||||
[ ! -f "$WDIR/iron-spmenu-image-$id.png" ] && IMG=""
|
||||
|
||||
# print it
|
||||
if [ "$IMG" != "" ]; then
|
||||
printf "$IMG\t"
|
||||
printf "${COLOR_04}$id - ${COLOR_05}$username${COLOR_02} at ${COLOR_03}$time:${COLOR_01}\n" | sed 's/"//g' | sed "s/.*/${COLOR_01}&${COLOR_01}/"
|
||||
printf "$IMG\t"
|
||||
printf "$message${COLOR_01}\n" | sed 's/"//g' | sed "s/.*/${COLOR_01}&${COLOR_01}/"
|
||||
else
|
||||
printf "${COLOR_04}$id - ${COLOR_05}$username${COLOR_02} at ${COLOR_03}$time:${COLOR_01}\n$message${COLOR_01}\n" | sed 's/"//g' | sed "s/.*/${COLOR_01}&${COLOR_01}/"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
send_msg() {
|
||||
[ -z "$1" ] && printf "You must specify a message to send.\n" && exit 1
|
||||
|
||||
curl -sX POST $INSTANCE/post.php -F "message=$1" -F "captcha=$CKEY" > /dev/null && STATUS=sent
|
||||
|
||||
if [ "$STATUS" = "sent" ]; then
|
||||
printf "Message '%s' sent successfully!\n" "$1" && exit 0
|
||||
else
|
||||
printf "Message '%s' failed to send.\n" "$1" && exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
help() {
|
||||
cat << EOF
|
||||
usage: iron-spmenu [-h] [-s message]
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
rm -f "$WDIR/iron-spmenu-*"
|
||||
}
|
||||
|
||||
read_args() {
|
||||
[ -z "$1" ] && get_msg | iconv -f utf-8 -t utf-8 | $RUNLAUNCHER $RUNLAUNCHER_ARGS && cleanup && exit 0
|
||||
|
||||
case "$1" in
|
||||
"-s") send_msg "$2" ;;
|
||||
"-h") help ;;
|
||||
"") exit 0 ;;
|
||||
*) printf "Unrecognized argument: $1\n" && exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main() {
|
||||
[ ! -x "$(command -v jq)" ] && printf "jq not found in \$PATH\n" && exit 1
|
||||
mkdir -p "$WDIR"
|
||||
|
||||
read_args "$@"
|
||||
cleanup
|
||||
}
|
||||
|
||||
main "$@"
|
Loading…
Reference in a new issue