FactorsAiAutomation/config.py
2026-07-01 18:00:54 +05:30

79 lines
3.9 KiB
Python

"""
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"