Files
crawle-snapp/config.py
T
2026-06-15 19:42:03 +03:30

39 lines
1.4 KiB
Python

from __future__ import annotations
import os
from dataclasses import dataclass, field
from dotenv import load_dotenv
load_dotenv()
@dataclass
class Config:
target_url: str = os.getenv("TARGET_URL", "https://example.com")
admin_username: str = os.getenv("ADMIN_USERNAME", "admin")
admin_password: str = os.getenv("ADMIN_PASSWORD", "changeme")
admin_host: str = os.getenv("ADMIN_HOST", "127.0.0.1")
admin_port: int = int(os.getenv("ADMIN_PORT", "8000"))
db_path: str = os.getenv("DB_PATH", "data/tracker.db")
headless: bool = os.getenv("HEADLESS", "true").lower() == "true"
chrome_binary: str | None = os.getenv("CHROME_BINARY")
# Scenario 1 — SMS-OTP: list of phone numbers (one per line in env or comma-separated)
phone_numbers: list[str] = field(default_factory=list)
# Flow steps — ordered list of step names to execute after login
# Override in .env as: FLOW_STEPS=step_home,step_browse,step_checkout
flow_steps: list[str] = field(default_factory=lambda: ["step_home"])
def __post_init__(self) -> None:
raw_phones = os.getenv("PHONE_NUMBERS", "")
if raw_phones:
self.phone_numbers = [p.strip() for p in raw_phones.split(",") if p.strip()]
raw_steps = os.getenv("FLOW_STEPS", "")
if raw_steps:
self.flow_steps = [s.strip() for s in raw_steps.split(",") if s.strip()]
config = Config()