Footer mit E-Mail, Watermark und Version statt Chart-Watermark

Wetterstation-Text, mailto und v{VERSION} · Datum werden als
dreispaltiger Footer unterhalb des Rahmens angezeigt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
rxf
2026-05-26 11:29:59 +02:00
parent 0a30d79f71
commit 97fdc8e2ad
+19 -6
View File
@@ -2,6 +2,8 @@
"""Erstellt einen kombinierten Wetterbericht für den letzten Kalendermonat.""" """Erstellt einen kombinierten Wetterbericht für den letzten Kalendermonat."""
import os import os
import pathlib
import re
import smtplib import smtplib
import tempfile import tempfile
from collections import defaultdict from collections import defaultdict
@@ -18,6 +20,10 @@ from dotenv import load_dotenv
load_dotenv() load_dotenv()
_v = re.search(r'^version\s*=\s*"([^"]+)"',
pathlib.Path("pyproject.toml").read_text(), re.MULTILINE)
VERSION = _v.group(1) if _v else "?"
API_BASE_URL = os.getenv("API_BASE_URL", "https://stwwetter.fuerst-stuttgart.de/api") API_BASE_URL = os.getenv("API_BASE_URL", "https://stwwetter.fuerst-stuttgart.de/api")
MAIL_SERVER = os.getenv("MAIL_SERVER") MAIL_SERVER = os.getenv("MAIL_SERVER")
MAIL_PORT = int(os.getenv("MAIL_PORT", "587")) MAIL_PORT = int(os.getenv("MAIL_PORT", "587"))
@@ -150,12 +156,7 @@ def create_combined_chart(start: datetime, end: datetime, label: str) -> bytes:
plt.setp(ax.get_xticklabels(), rotation=0, ha="center") plt.setp(ax.get_xticklabels(), rotation=0, ha="center")
ax.legend(framealpha=0.8) ax.legend(framealpha=0.8)
# Watermark im letzten Chart fig.tight_layout(rect=[0.015, 0.055, 0.985, 0.975])
axes[2].text(0.99, 0.03, "Wetterstation der Sternwarte Welzheim",
ha="right", va="bottom", fontsize=9, color="#bbbbbb",
transform=axes[2].transAxes)
fig.tight_layout(rect=[0.015, 0.015, 0.985, 0.975])
# Rahmen um die gesamte Figure # Rahmen um die gesamte Figure
border = mpatches.FancyBboxPatch( border = mpatches.FancyBboxPatch(
@@ -166,6 +167,18 @@ def create_combined_chart(start: datetime, end: datetime, label: str) -> bytes:
) )
fig.add_artist(border) fig.add_artist(border)
# Footer: links E-Mail, Mitte Watermark, rechts Version + Datum
footer_y = 0.030
footer_kw = dict(va="center", fontsize=9, color="#999999",
transform=fig.transFigure)
build_date = datetime.now(timezone.utc).strftime("%d.%m.%Y")
fig.text(0.022, footer_y, "mailto:rexfue@gmail.com",
ha="left", **footer_kw)
fig.text(0.5, footer_y, "Wetterstation der Sternwarte Welzheim",
ha="center", **footer_kw)
fig.text(0.978, footer_y, f"V {VERSION} · {build_date}",
ha="right", **footer_kw)
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as f: with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as f:
fig.savefig(f.name, dpi=150, bbox_inches="tight") fig.savefig(f.name, dpi=150, bbox_inches="tight")
path = f.name path = f.name