61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
from __future__ import annotations
|
|
import asyncio
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from .auth import ensure_login_sync
|
|
from .extractor import (
|
|
extract_relations_for_manager,
|
|
extract_relations_for_emails,
|
|
write_relations_to_csv,
|
|
)
|
|
from .aggregator import aggregate_department_links
|
|
|
|
|
|
OUTPUT_DIR = Path("output")
|
|
OUTPUT_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
def main(argv: list[str]) -> None:
|
|
if len(argv) < 2:
|
|
print("Verwendung:")
|
|
print(" python -m app.main login <email>")
|
|
print(" python -m app.main manager <manager_email>")
|
|
print(" python -m app.main emails <email1> [<email2> ...]")
|
|
sys.exit(1)
|
|
|
|
mode = argv[1].lower()
|
|
|
|
if mode == "login":
|
|
if len(argv) != 3:
|
|
print("login-Modus benötigt genau 1 E-Mail-Adresse.")
|
|
sys.exit(1)
|
|
email = argv[2]
|
|
ensure_login_sync(email)
|
|
return
|
|
|
|
elif mode == "manager":
|
|
if len(argv) != 3:
|
|
print("manager-Modus benötigt genau 1 Manager-E-Mail.")
|
|
sys.exit(1)
|
|
manager_email = argv[2]
|
|
relations = asyncio.run(extract_relations_for_manager(manager_email))
|
|
|
|
elif mode == "emails":
|
|
if len(argv) < 3:
|
|
print("emails-Modus benötigt mindestens 1 E-Mail-Adresse.")
|
|
sys.exit(1)
|
|
emails = argv[2:]
|
|
relations = asyncio.run(extract_relations_for_emails(emails))
|
|
|
|
else:
|
|
print(f"Unbekannter Modus: {mode}")
|
|
sys.exit(1)
|
|
|
|
csv_path = OUTPUT_DIR / "relations.csv"
|
|
write_relations_to_csv(relations, csv_path)
|
|
print(f"CSV geschrieben: {csv_path}")
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|