add simulation simulator - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
commit 4d6d4eaa7f3062b998498a2f9ee90e830805a42f | |
parent 38772dee8f3c08afff361dc904b4fda097b2e67e | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 11 Jan 2022 20:52:06 +0100 | |
add simulation simulator | |
Signed-off-by: Annna Robert-Houdin <[email protected]> | |
Diffstat: | |
M annna-message-common | 12 ++++++++++++ | |
A imgsearch.sh | 61 +++++++++++++++++++++++++++++… | |
A simulate.sh | 26 ++++++++++++++++++++++++++ | |
3 files changed, 99 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/annna-message-common b/annna-message-common | |
@@ -856,6 +856,18 @@ case "${text}" in | |
} & | |
exit 0 | |
;; | |
+"${botname}, please simulate "*" simulator") | |
+ q="${text#* please simulate }" | |
+ q="${q% simulator*}" | |
+ outpath="/br/gopher/p/" | |
+ { | |
+ if outfile="$(./simulate.sh "$q")" | |
+ then | |
+ mv "${outfile}" "${outpath}/" | |
+ annna-say -s "${server}" -c "${channel}" "${user}, gop… | |
+ fi | |
+ } & | |
+ ;; | |
"${botname}, please help.") | |
# Help Message. | |
# TODO: Add multiple line support to annna-say -s "${server}" -c(1) wi… | |
diff --git a/imgsearch.sh b/imgsearch.sh | |
@@ -0,0 +1,61 @@ | |
+#!/bin/sh | |
+searxbase="https://search.stinpriza.org" | |
+maxtries=10 | |
+ | |
+die() { | |
+ printf '%s: error: %s\n' "${0%%*/}" "$1" | |
+ exit "${2:-1}" | |
+} | |
+ | |
+get_image() { | |
+ q="$(printf '%s' "$1" | sed 's/ /%20/g')" | |
+ s="$(printf '%s' "$1" | sed 's/ /_/g')" | |
+ searxuri="${searxbase}/search?q=${q}&categories=images" | |
+ curl -s "${searxuri}" \ | |
+ | xml2tsv 2>/dev/null \ | |
+ | grep img \ | |
+ | cut -f 2 \ | |
+ | grep ^src \ | |
+ | cut -d'=' -f 2- \ | |
+ | while read -r uri; | |
+ do | |
+ case "${uri}" in | |
+ /*) | |
+ uri="${searxbase}${uri}" | |
+ ;; | |
+ esac | |
+ | |
+ out="${s}.jpg" | |
+ if curl -s "${uri}" -o "$out" | |
+ then | |
+ printf '%s\n' "$out" | |
+ case "$(file -ib "$out")" in | |
+ image/jpeg) | |
+ return | |
+ ;; | |
+ image/*) | |
+ convert "$out" "${out}.tmp.jpg" | |
+ mv "${out}.tmp.jpg" "$out" | |
+ return | |
+ ;; | |
+ esac | |
+ fi | |
+ | |
+ if test "$i" -gt 0 | |
+ then | |
+ sleep 1 | |
+ fi | |
+ i=$((i + 1)) | |
+ done | |
+} | |
+ | |
+if test $# -lt 1 | |
+then | |
+ exit 0 | |
+fi | |
+ | |
+i=0 | |
+for q in "$@" | |
+do | |
+ get_image "$q" | |
+done | |
diff --git a/simulate.sh b/simulate.sh | |
@@ -0,0 +1,26 @@ | |
+#!/bin/sh | |
+ | |
+die() { | |
+ printf '%s: error: %s\n' "${0%%*/}" "$1" | |
+ exit "${2:-1}" | |
+} | |
+ | |
+for q in "$@" | |
+do | |
+ year="$(( RANDOM / 1000 + 1990 ))" | |
+ if ! img="$(./imgsearch.sh "$q")" | |
+ then | |
+ die "could not find a image for '$q'" | |
+ fi | |
+ out="${img%.*}-simulator.jpg" | |
+ convert -gravity NorthWest \ | |
+ -font "Helvetica-Narrow-Oblique" -pointsize 70 \ | |
+ -stroke '#000C' -strokewidth 2 -annotate +0+10 "$q" \ | |
+ -stroke none -fill white -annotate +0+10 "$q" \ | |
+ -stroke '#000C' -strokewidth 2 -annotate +0+80 "Simulator" \ | |
+ -stroke none -fill white -annotate +0+80 "Simulator" \ | |
+ -stroke '#000C' -strokewidth 2 -annotate +0+150 "$year" \ | |
+ -stroke none -fill white -annotate +0+150 "$year" \ | |
+ "$img" "$out" | |
+ printf '%s\n' "$out" | |
+done |