feat: main entry point wiring all components

This commit is contained in:
Oliver Hofmann 2026-05-17 11:24:09 +02:00
parent f1a021dedd
commit 3fcd457639

67
main.py Normal file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""TeamPulse — Teams meeting chat audit tool.
Usage:
.venv/bin/python main.py
Opens a browser, navigates to Teams Web. Post !start "Presenter Name" and
!stop in the meeting chat to define a time window. A Markdown memo is
saved to the current directory when the window closes.
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent / "src"))
from playwright.sync_api import sync_playwright
from teampulse.auth import create_context, ensure_logged_in
from teampulse.memo import generate_memo, save_memo
from teampulse.models import AuditEntry
from teampulse.monitor import Monitor
from teampulse.resolver import Resolver
CACHE_PATH = Path.home() / ".teampulse" / "cache.json"
def main():
with sync_playwright() as playwright:
print("Starte Browser...")
context = create_context(playwright, headless=False)
ensure_logged_in(context)
page = context.new_page()
page.goto("https://teams.microsoft.com")
monitor = Monitor(page=page, current_user="")
print("Lese eingeloggten Nutzer...")
current_user = monitor.get_current_user_display_name()
monitor._current_user = current_user
print(f"Eingeloggt als: {current_user}")
print("\nNavigiere im Browser zur Meeting-Chat-Seite.")
print("Poste dann '!start \"Name des Vortragenden\"' im Chat.\n")
window = monitor.run()
resolver = Resolver(cache_path=CACHE_PATH, page=page)
print(f"\nLöse {len(window.entries)} E-Mail-Adresse(n) auf...")
resolved_entries = []
for entry in window.entries:
email = resolver.resolve(entry.display_name)
print(f" {entry.display_name}{email}")
resolved_entries.append(AuditEntry(display_name=entry.display_name, email=email))
window.entries = resolved_entries
memo_content = generate_memo(window)
path = save_memo(memo_content)
print(f"\nMemo gespeichert: {path}")
print("\n" + memo_content)
context.close()
if __name__ == "__main__":
main()