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:
+19
-6
@@ -2,6 +2,8 @@
|
||||
"""Erstellt einen kombinierten Wetterbericht für den letzten Kalendermonat."""
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
import smtplib
|
||||
import tempfile
|
||||
from collections import defaultdict
|
||||
@@ -18,6 +20,10 @@ from dotenv import 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")
|
||||
MAIL_SERVER = os.getenv("MAIL_SERVER")
|
||||
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")
|
||||
ax.legend(framealpha=0.8)
|
||||
|
||||
# Watermark im letzten Chart
|
||||
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])
|
||||
fig.tight_layout(rect=[0.015, 0.055, 0.985, 0.975])
|
||||
|
||||
# Rahmen um die gesamte Figure
|
||||
border = mpatches.FancyBboxPatch(
|
||||
@@ -166,6 +167,18 @@ def create_combined_chart(start: datetime, end: datetime, label: str) -> bytes:
|
||||
)
|
||||
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:
|
||||
fig.savefig(f.name, dpi=150, bbox_inches="tight")
|
||||
path = f.name
|
||||
|
||||
Reference in New Issue
Block a user