44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""One-time interactive Telegram login — run this by hand, once, before the first
|
|
scheduled digest run.
|
|
|
|
docker compose run --rm --entrypoint python digest-engine ingest/telegram_login.py
|
|
|
|
It prompts for the phone number, the code Telegram sends, and the 2FA password if
|
|
the account has one, then writes the session to TELEGRAM_SESSION_PATH (a mounted
|
|
volume, so it survives `--rm`). telegram_ingest.py reuses that session
|
|
non-interactively from then on.
|
|
|
|
Get TELEGRAM_API_ID / TELEGRAM_API_HASH from https://my.telegram.org -> API
|
|
development tools.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
from telethon import TelegramClient
|
|
|
|
DEFAULT_SESSION_PATH = "/data/telegram.session"
|
|
|
|
|
|
def main():
|
|
api_id = os.environ.get("TELEGRAM_API_ID", "").strip()
|
|
api_hash = os.environ.get("TELEGRAM_API_HASH", "").strip()
|
|
session_path = os.environ.get("TELEGRAM_SESSION_PATH", DEFAULT_SESSION_PATH)
|
|
|
|
if not (api_id and api_hash):
|
|
print("TELEGRAM_API_ID and TELEGRAM_API_HASH must be set (see digest-engine.env.example).", file=sys.stderr)
|
|
return 1
|
|
|
|
print(f"Creating Telegram session at {session_path}")
|
|
with TelegramClient(session_path, int(api_id), api_hash) as client:
|
|
me = client.get_me()
|
|
print(f"Logged in as {me.username or me.first_name} (id {me.id}).")
|
|
|
|
print("Done. telegram_ingest.py will reuse this session non-interactively.")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|