feat: main entry point wiring all components
This commit is contained in:
parent
f1a021dedd
commit
3fcd457639
67
main.py
Normal file
67
main.py
Normal 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()
|
||||
Loading…
x
Reference in New Issue
Block a user