Add dalle emoji support to annna. - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
commit dc0e577401b734bc1513078f7af1d0f1b741dc46 | |
parent 3b6c6e5e060a71796cb0decdf0bdcbc6e2b37511 | |
Author: Annna Robert-Houdin <[email protected]> | |
Date: Fri, 1 Jul 2022 19:56:28 +0200 | |
Add dalle emoji support to annna. | |
Diffstat: | |
M annna-message-common | 31 ++++++++++++++++++++---------… | |
A dalle-gen-emoji | 66 +++++++++++++++++++++++++++++… | |
2 files changed, 86 insertions(+), 11 deletions(-) | |
--- | |
diff --git a/annna-message-common b/annna-message-common | |
@@ -992,6 +992,15 @@ then | |
fi | |
case "${text}" in | |
+::*::) | |
+ { | |
+ emojiuri="$(dalle-gen-emoji "${text}")" | |
+ if [ -n "${emojiuri}" ]; | |
+ then | |
+ annna-say -s "${server}" -c "${channel}" "${emojiuri}" | |
+ fi | |
+ } & | |
+ ;; | |
*\#nospoil*) | |
;; | |
*rfc[0-9]*) | |
@@ -1040,6 +1049,17 @@ else | |
done | |
fi | |
+# Always keep the karma / shame last! | |
+case "${text}" in | |
+*"-shaming"*) | |
+ shametext="$(printf "%s\n" "${text}" | sed 's,.* \(.*-shaming\).*,\1,'… | |
+ shame "${shametext}" | |
+ ;; | |
+*++|*--) | |
+ karma "${text}" | |
+ ;; | |
+esac | |
+ | |
# Membership Level. | |
ismember=0 | |
for member in $brmembers; | |
@@ -1064,14 +1084,3 @@ case "${text}" in | |
;; | |
esac | |
-# Always keep the karma / shame last! | |
-case "${text}" in | |
-*"-shaming"*) | |
- shametext="$(printf "%s\n" "${text}" | sed 's,.* \(.*-shaming\).*,\1,'… | |
- shame "${shametext}" | |
- ;; | |
-*++|*--) | |
- karma "${text}" | |
- ;; | |
-esac | |
- | |
diff --git a/dalle-gen-emoji b/dalle-gen-emoji | |
@@ -0,0 +1,66 @@ | |
+#!/usr/bin/env python | |
+# coding=utf-8 | |
+# | |
+# Kiss me when you can. | |
+# by annna | |
+# | |
+ | |
+import os | |
+import os.path | |
+import sys | |
+import getopt | |
+import requests | |
+import base64 | |
+ | |
+def usage(app): | |
+ app = os.path.basename(app) | |
+ print("usage: %s [-h] [::]some-emoji[:key=value...][::]" % (app), | |
+ file=sys.stderr) | |
+ sys.exit(1) | |
+ | |
+def main(args): | |
+ try: | |
+ opts, largs = getopt.getopt(args[1:], "h") | |
+ except getopt.GetoptError as err: | |
+ print(str(err)) | |
+ usage(args[0]) | |
+ | |
+ for o, a in opts: | |
+ if o == "-h": | |
+ usage(args[0]) | |
+ else: | |
+ assert False, "unhandled option" | |
+ | |
+ if len(largs) < 1: | |
+ usage(args[0]) | |
+ | |
+ emoji = " ".join(largs) | |
+ emoji = emoji.strip("::") | |
+ emoji = emoji.replace(":", " ").replace(",", " ").replace("=", " ").\ | |
+ replace(".", " ").replace("/", " ") | |
+ | |
+ emojifile = "%s.jpg" % (emoji.replace(" ", "-")) | |
+ | |
+ filebase = "/br/ai/dalle/dalle-results/" | |
+ emojiuribase = "gopher://bitreich.org/9/memecache/dalle/" | |
+ imguri = "http://127.0.0.1:32553/dalle" | |
+ jsonreq = {"text": emoji, "num_images": 1} | |
+ | |
+ filepath = "%s%s" % (filebase, emojifile) | |
+ if not os.path.exists(filepath): | |
+ try: | |
+ answer = requests.post(imguri, json=jsonreq) | |
+ except: | |
+ return 1 | |
+ | |
+ fd = open(filepath, "wb") | |
+ fd.write(base64.b64decode(answer.json()[0])) | |
+ fd.close() | |
+ | |
+ print("%s%s" % (emojiuribase, emojifile)) | |
+ | |
+ return 0 | |
+ | |
+if __name__ == "__main__": | |
+ sys.exit(main(sys.argv)) | |
+ |