Skip to content
Snippets Groups Projects
Commit 38533d7f authored by Frederic Aust's avatar Frederic Aust
Browse files

Neue Funktion: Formel in Bild - Mit dem Befehl .tex wird eine Formel in ein...

Neue Funktion: Formel in Bild - Mit dem Befehl .tex wird eine Formel in ein Bild umgewandelt und zurück geschickt. Sollte das nicht funktionieren wird ein shrug face verschickt
parent 0aab9d7a
Branches
No related tags found
No related merge requests found
from sympy import latex, sympify
import matplotlib.pyplot as plt
class ModuleTex:
def __init__(self, log):
self.tag = "%20s - " % ("mTex")
self.log = log
self.log.debug(f"{self.tag}Modul Tex geladen")
def create_formula(self, formula):
try:
filename = f'/home/pi/signalbot/formula.png'
formula = formula.strip()
formula_splitted = formula.split("=")
full_formula=""
is_first=True
for f in formula_splitted:
full_formula+=latex(sympify(f, evaluate=False))+"="
full_formula=full_formula[:-1] # delete last =
# Ende Formel parsen
fig = plt.figure()
ax = fig.add_subplot(111)
ax.axis('off')
ax.text(0, 0, '$%s$' % full_formula, size=50, color="black", ha='center', va='center')
# Epic hacks for getting renderer
fig.savefig(filename,bbox_inches='tight')
renderer = fig.axes[0].get_renderer_cache()
fig.axes[0].set_ylim(renderer.height,-renderer.height)
fig.axes[0].set_xlim(renderer.width,-renderer.width)
fig.savefig(filename,bbox_inches='tight')
return filename
except Exception as ex:
self.log.error(f"{self.tag} Failed creating Image of formula: {formula} with error: {ex}")
return f"/home/pi/signalbot/shrug_face.png"
shrug_face.png

5.88 KiB

...@@ -14,6 +14,7 @@ from mod_quotes import ModuleQuotes ...@@ -14,6 +14,7 @@ from mod_quotes import ModuleQuotes
from mod_freegames import ModuleFreeGames from mod_freegames import ModuleFreeGames
from mod_challenge import ModuleChallenge from mod_challenge import ModuleChallenge
from mod_birthdayreminder import ModuleBirthdayReminder from mod_birthdayreminder import ModuleBirthdayReminder
from mod_tex import ModuleTex
import random import random
from threading import Thread from threading import Thread
import paho.mqtt.client as mqtt # EPL V1.0 import paho.mqtt.client as mqtt # EPL V1.0
...@@ -65,7 +66,7 @@ quotes = None ...@@ -65,7 +66,7 @@ quotes = None
games = None games = None
challenges = None challenges = None
birthday_reminder = None birthday_reminder = None
tex = None
CONFIG = {} CONFIG = {}
FUN_DICT = {} FUN_DICT = {}
...@@ -194,8 +195,11 @@ def handle_action(timestamp, source, groupID, message, attachments): ...@@ -194,8 +195,11 @@ def handle_action(timestamp, source, groupID, message, attachments):
get_all_birthdays(receiver) get_all_birthdays(receiver)
elif(action == "nextbirthday"): elif(action == "nextbirthday"):
get_next_birthday(receiver) get_next_birthday(receiver)
elif(action=="tex"):
get_tex_formula(receiver, " ".join(str(x)
for x in msg_splitted[1:]))
else: else:
log.debug("Unknown action: "+message) unknown_command(receiver, message)
except Exception as ex: except Exception as ex:
log.critical( log.critical(
f'Unknown error:"{ex}", timestamp="{timestamp}", source="{source}", groupID="{groupID}", message="{message}", attachments="{attachments}"') f'Unknown error:"{ex}", timestamp="{timestamp}", source="{source}", groupID="{groupID}", message="{message}", attachments="{attachments}"')
...@@ -250,6 +254,7 @@ def help(receiver): ...@@ -250,6 +254,7 @@ def help(receiver):
".saveBirthday Person, dd.mm Speichert eine Geburtstagsangabe für automatische Glückwünsche Bsp.: Karl, 03.02\n"\ ".saveBirthday Person, dd.mm Speichert eine Geburtstagsangabe für automatische Glückwünsche Bsp.: Karl, 03.02\n"\
".allBirthdays Gibt eine Liste sämtlicher Geburtstage aus\n"\ ".allBirthdays Gibt eine Liste sämtlicher Geburtstage aus\n"\
".nextBirthday Gibt den nächsten Geburtstage an\n"\ ".nextBirthday Gibt den nächsten Geburtstage an\n"\
".tex - Wandle Text in eine Formel um Bsp.: (1/x_0)+sqrt(3*x^4/2)\n"\
".request Wunsch" ".request Wunsch"
send(message, receiver) send(message, receiver)
...@@ -418,6 +423,13 @@ def get_next_birthday(receiver): ...@@ -418,6 +423,13 @@ def get_next_birthday(receiver):
message = birthday_reminder.get_next_birthday() message = birthday_reminder.get_next_birthday()
send(message, receiver) send(message, receiver)
def unknown_command(receiver, message):
log.debug("Unknown action: "+message)
send(f"Das habe ich nicht verstanden:'{message}'", receiver)
def get_tex_formula(receiver, message):
send_a(message, receiver, tex.create_formula(message))
def on_mqtt_message(client, userdata, msg): def on_mqtt_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload)) print(msg.topic + " " + str(msg.payload))
...@@ -464,8 +476,8 @@ if __name__ == "__main__": ...@@ -464,8 +476,8 @@ if __name__ == "__main__":
quotes = ModuleQuotes('quotes.csv',log) quotes = ModuleQuotes('quotes.csv',log)
games = ModuleFreeGames(FREE_GAMES_SUBSCRIBER, send_a, log) games = ModuleFreeGames(FREE_GAMES_SUBSCRIBER, send_a, log)
challenges = ModuleChallenge('/home/pi/signalbot/challenge.json', log) challenges = ModuleChallenge('/home/pi/signalbot/challenge.json', log)
birthday_reminder = ModuleBirthdayReminder('birthdays.csv', GROUPS["ntp"],send, log ) birthday_reminder = ModuleBirthdayReminder('birthdays.csv', GROUPS["ntp"],send, log )
tex = ModuleTex(log)
loop = GLib.MainLoop() loop = GLib.MainLoop()
bus = SystemBus() bus = SystemBus()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment