fix: load Teams main before meeting URL to resolve username
This commit is contained in:
parent
01785d6ddc
commit
2c948914ea
15
main.py
15
main.py
@ -69,12 +69,8 @@ def main():
|
|||||||
|
|
||||||
page = context.new_page()
|
page = context.new_page()
|
||||||
|
|
||||||
if meeting_url:
|
# Always load Teams main first so user-name selectors are available
|
||||||
page.goto(meeting_url)
|
page.goto(TEAMS_URL)
|
||||||
else:
|
|
||||||
page.goto(TEAMS_URL)
|
|
||||||
print("\nKeine Meeting-URL gefunden — bitte im Browser zur Chat-Seite navigieren.")
|
|
||||||
print("Tipp: Meeting-Link aus Teams kopieren, dann Skript neu starten.\n")
|
|
||||||
|
|
||||||
monitor = Monitor(page=page, current_user="")
|
monitor = Monitor(page=page, current_user="")
|
||||||
print("Lese eingeloggten Nutzer...")
|
print("Lese eingeloggten Nutzer...")
|
||||||
@ -82,6 +78,13 @@ def main():
|
|||||||
monitor._current_user = current_user
|
monitor._current_user = current_user
|
||||||
print(f"Eingeloggt als: {current_user}")
|
print(f"Eingeloggt als: {current_user}")
|
||||||
|
|
||||||
|
if meeting_url:
|
||||||
|
print(f"\nNavigiere zur Meeting-Chat-Seite...")
|
||||||
|
page.goto(meeting_url)
|
||||||
|
else:
|
||||||
|
print("\nKeine Meeting-URL gefunden — bitte im Browser zur Chat-Seite navigieren.")
|
||||||
|
print("Tipp: Meeting-Link aus Teams kopieren, dann Skript neu starten.\n")
|
||||||
|
|
||||||
print("\nPoste '!start \"Name des Vortragenden\"' im Chat um zu beginnen.\n")
|
print("\nPoste '!start \"Name des Vortragenden\"' im Chat um zu beginnen.\n")
|
||||||
|
|
||||||
window = monitor.run()
|
window = monitor.run()
|
||||||
|
|||||||
@ -46,13 +46,30 @@ class Monitor:
|
|||||||
print("Chat erkannt.")
|
print("Chat erkannt.")
|
||||||
|
|
||||||
def get_current_user_display_name(self) -> str:
|
def get_current_user_display_name(self) -> str:
|
||||||
el = self._page.query_selector("[data-tid='me-control-display-name']")
|
# Wait for the Teams main UI to render (not a lobby/join page)
|
||||||
if el:
|
try:
|
||||||
return el.inner_text().strip()
|
self._page.wait_for_selector(
|
||||||
el = self._page.query_selector("[aria-label*='Profilbild']")
|
"[data-tid='me-control-display-name'], [aria-label*='Profilbild'], [aria-label*='Profile picture']",
|
||||||
if el:
|
timeout=15_000,
|
||||||
return (el.get_attribute("aria-label") or "").replace("Profilbild", "").strip()
|
)
|
||||||
raise RuntimeError("Konnte den Namen des eingeloggten Nutzers nicht ermitteln.")
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
for selector, transform in [
|
||||||
|
("[data-tid='me-control-display-name']", lambda el: el.inner_text().strip()),
|
||||||
|
("[aria-label*='Profilbild']", lambda el: (el.get_attribute("aria-label") or "").replace("Profilbild", "").strip()),
|
||||||
|
("[aria-label*='Profile picture']", lambda el: (el.get_attribute("aria-label") or "").replace("Profile picture", "").strip()),
|
||||||
|
]:
|
||||||
|
el = self._page.query_selector(selector)
|
||||||
|
if el:
|
||||||
|
name = transform(el)
|
||||||
|
if name:
|
||||||
|
return name
|
||||||
|
|
||||||
|
name = input("Benutzername nicht erkannt. Bitte deinen Teams-Anzeigenamen eingeben: ").strip()
|
||||||
|
if not name:
|
||||||
|
raise RuntimeError("Kein Benutzername angegeben.")
|
||||||
|
return name
|
||||||
|
|
||||||
def poll_new_messages(self) -> list[ChatMessage]:
|
def poll_new_messages(self) -> list[ChatMessage]:
|
||||||
elements = self._page.query_selector_all(_MSG_SELECTOR)
|
elements = self._page.query_selector_all(_MSG_SELECTOR)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user