""" config.py — Central configuration for Factors.AI automation. All secrets are loaded from .env (copy .env.example → .env and fill in values). """ from argparse import RawDescriptionHelpFormatter import os from pathlib import Path from dotenv import load_dotenv load_dotenv() # ── Paths ───────────────────────────────────────────────────────────────────── BASE_DIR = Path(__file__).resolve().parent DATA_DIR = BASE_DIR / "data" TEMP_DOWNLOAD_DIR = BASE_DIR / "tmp_download" LAST_CSV_PATH = DATA_DIR / "last_export.csv" LOG_PATH = BASE_DIR / "automation.log" DATA_DIR.mkdir(parents=True, exist_ok=True) TEMP_DOWNLOAD_DIR.mkdir(parents=True, exist_ok=True) # ── Factors.AI credentials ──────────────────────────────────────────────────── FACTORS_EMAIL = os.getenv("FACTORS_EMAIL", "Add_your_mail@env.com") FACTORS_PASSWORD = os.getenv("FACTORS_PASSWORD", "Admin@123") TARGET_PROJECT = os.getenv("TARGET_PROJECT", "Inbound-Tech4Biz") # ── Email / SMTP settings ───────────────────────────────────────────────────── # For Gmail: enable 2FA, create an App Password and use it as SENDER_PASSWORD. SMTP_HOST = os.getenv("SMTP_HOST", "smtp.zoho.com") SMTP_PORT = int(os.getenv("SMTP_PORT", "587")) SENDER_EMAIL = os.getenv("SENDER_EMAIL", "your_sender@gmail.com") SENDER_PASSWORD = os.getenv("SENDER_PASSWORD", "your_app_password") # Comma-separated list of recipient emails RECIPIENT_EMAILS: list[str] = [ e.strip() for e in os.getenv("RECIPIENT_EMAILS", "recipient@example.com").split(",") if e.strip() ] # ── Fields to select in the CSV export modal ────────────────────────────────── # Set to None → keep whatever boxes are pre-checked (default 5 fields). # Set to list → clear all, then check exactly these field values. # # Known field values (from the modal checkboxes): # "$6Signal_name" Company Name # "$6Signal_industry" Company Industry # "$6Signal_employee_range" Company Employee Range # "$6Signal_annual_revenue" Company Annual Revenue # "last_activity" Last Activity # "$tag_hidden" Tags Hidden # "$latest_source" Account Latest Source # "$latest_campaign" Account Latest Campaign # "$initial_campaign" Account First Campaign # "$account_activity_url" Account Activity URL # "$domain_name" Company ID # "$latest_page_url" Account Latest Page URL # # FIELDS_TO_SELECT: list[str] | None = None # None = use defaults # Uncomment ↓ to specify exact fields instead of defaults: FIELDS_TO_SELECT = [ "Company Name", # "$6Signal_name", "Company Industry", # "$6Signal_industry", "Company Employee Range", # "$6Signal_employee_range", "Company Annual Revenue", # "$6Signal_annual_revenue", "Last Activity", # "last_activity", "Company LinkedIn URL", # "$enriched_company_linkedin_url", "Company Description", # "$enriched_company_description", "Company Domain", # "$6Signal_domain", "Company HQ Address", # "$6Signal_address", "Company HQ City", # "$6Signal_city", "Company Employee Count" # "$6Signal_employee_count", ] # ── Browser settings ────────────────────────────────────────────────────────── # HEADLESS=false opens a real browser window (handy for debugging). HEADLESS = os.getenv("HEADLESS", "true").lower() == "true"