add tshirt filter - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
commit 92d55bc9f27aaa4426da461601a42c7635ad8071 | |
parent b222826ef4b61793d0324c90da2316948cbec91d | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 17 Jan 2023 09:01:30 +0100 | |
add tshirt filter | |
Signed-off-by: Annna Robert-Houdin <[email protected]> | |
Diffstat: | |
M annna-message-common | 8 ++++++-- | |
A tshirt-design | 75 +++++++++++++++++++++++++++++… | |
2 files changed, 81 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/annna-message-common b/annna-message-common | |
@@ -930,6 +930,7 @@ case "${text}" in | |
"${ircuser}, please technodrugs #"*|\ | |
"${ircuser}, please thin #"*|\ | |
"${ircuser}, please torture #"*|\ | |
+"${ircuser}, please tshirt #"*|\ | |
"${ircuser}, please trumpapprove #"*|\ | |
"${ircuser}, please wat #"*|\ | |
"${ircuser}, please widen #"*|\ | |
@@ -949,7 +950,7 @@ case "${text}" in | |
# outfile and outpath filtering for the cache. | |
case "${filter}" in | |
- antidepressant|ritual|putin) | |
+ antidepressant|ritual|putin|tshirt) | |
outfile="${outfile%.*}.jpg" | |
outpath="${outpath%.*}.jpg" | |
;; | |
@@ -979,7 +980,7 @@ case "${text}" in | |
if [ -s "${outpath}" ]; | |
then | |
annna-say -s "${server}" -c "${channel}" "${user}, gop… | |
- exit 0 | |
+ exit 0 | |
fi | |
case "${filter}" in | |
@@ -992,6 +993,9 @@ case "${text}" in | |
putin) | |
putin-os "${inpath}" "${outpath}" 2>&1 >/dev/null | |
;; | |
+ tshirt) | |
+ tshirt-design "${inpath}" "${outpath}" 2>&1 >/dev/null | |
+ ;; | |
*) | |
ffmpeg-effect "${filter}" "${inpath}" "${outpath}" 2>&… | |
;; | |
diff --git a/tshirt-design b/tshirt-design | |
@@ -0,0 +1,75 @@ | |
+#!/bin/sh | |
+ | |
+mediadir=/home/annna/bin/modules/filter-media | |
+ | |
+die() { | |
+ printf '%s\n' "$1" >&2 | |
+ exit 1 | |
+} | |
+ | |
+if test $# -ne 2; then | |
+ die "usage: ${0##*/} <file> <outimagefile>" | |
+fi | |
+ | |
+mimetype="$(file -ib "$1")" | |
+case "$mimetype" in | |
+ video/*) | |
+ in="$(mktemp).jpg" | |
+ ffmpeg -i "$1" -frames:v 1 "$in";; | |
+ image/*) | |
+ in="$1";; | |
+ *) | |
+ die "file type '${mimetype}' not supported";; | |
+esac | |
+ | |
+shirt="$(shuf -n 1 -e "${mediadir}"/tshirt*.jpg)" | |
+ | |
+case "$shirt" in | |
+ */tshirt1.jpg) | |
+ size=400x600 | |
+ geometry=+0+50 | |
+ rotate=-3 ;; | |
+ */tshirt2.jpg) | |
+ size=350x400 | |
+ geometry=-10-75 | |
+ rotate=0 ;; | |
+ */tshirt3.jpg) | |
+ size=180x350 | |
+ geometry=+0+50 | |
+ rotate=-2 ;; | |
+ */tshirt4.jpg) | |
+ size=200x450 | |
+ geometry=-10+50 | |
+ rotate=0 ;; | |
+ */tshirt5.jpg) | |
+ size=200x450 | |
+ geometry=+5+100 | |
+ rotate=0 ;; | |
+ */tshirt6.jpg) | |
+ size=300x450 | |
+ geometry=+5-50 | |
+ rotate=0 ;; | |
+ */tshirt7.jpg) | |
+ size=400x550 | |
+ geometry=+5+0 | |
+ rotate=0 ;; | |
+ */tshirt8.jpg) | |
+ size=300x500 | |
+ geometry=-15+80 | |
+ rotate=-2 ;; | |
+ *) | |
+ die "unknown tshirt: $tshirt";; | |
+esac | |
+ | |
+convert "$shirt" \ | |
+ \( "${in}" \ | |
+ -matte \ | |
+ -virtual-pixel transparent \ | |
+ -background transparent \ | |
+ -resize "$size" \ | |
+ -transparent white \ | |
+ -rotate "$rotate" \ | |
+ \) \ | |
+ -geometry "$geometry" \ | |
+ -gravity center \ | |
+ -composite "$2" |