79 lines
3.9 KiB
Python
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"
|