Tools / src /execution_tracker.py
jebin2's picture
refactor: Centralize logger import to src.logger_config across various modules.
f20025d
from datetime import datetime
from src.config import get_config_value
from google_src.google_sheet import GoogleSheetReader
from src.logger_config import logger
def load_executed_from_gsheet(setup_type=None, job_index=None):
"""Load executed scripts from Google Sheets logs.
Returns a list of Source Data values (all entries are considered executed).
Args:
setup_type: Optional. If provided, only count rows where Final URL contains this value.
job_index: Optional. If provided, only count rows for this specific job.
"""
try:
reader = GoogleSheetReader.get_log_reader(worksheet_name=get_config_value("logs_worksheet"))
df = reader.get_dataframe()
if "Source Data" in df.columns:
result_df = df
# Optional: filter by job_index
if job_index is not None and "Job" in df.columns:
result_df = result_df[result_df["Job"] == str(job_index)]
# Optional: filter by setup_type in Final URL
if setup_type and "Final URL" in df.columns:
result_df = result_df[result_df["Final URL"].str.contains(setup_type, na=False)]
executed = result_df["Source Data"].tolist()
logger.debug(f"Loaded {len(executed)} executed entries from Google Sheets")
return executed
else:
logger.warning("Google Sheets missing required column (Source Data)")
return []
except Exception as e:
logger.error(f"Failed to load from Google Sheets: {e}")
return []
def log_progress_to_gsheet(result: dict, job_index: int, commit=False):
"""Log progress to Google Sheets by appending rows."""
if not commit:
return
gsheet_name = get_config_value("logs_worksheet")
try:
reader = GoogleSheetReader.get_log_reader(worksheet_name=gsheet_name)
reader.create_or_update_sheet(
worksheet_name=gsheet_name,
header=["Timestamp", "Job", "Source Data", "Drive URL", "Final URL", "GCS Filename", "Delete Entry"],
values=[{
"Timestamp": datetime.now().isoformat(),
"Job": str(job_index if job_index is not None else 0),
"Source Data": get_config_value("original_tts_script"),
"Drive URL": result.get("drive_url", ""),
"Final URL": result.get("final_url", ""),
"GCS Filename": result.get("gcs_filename", ""),
"Delete Entry": "False",
}],
)
logger.debug(f"✓ Logged progress to Google Sheet for job {job_index}")
except Exception as e:
logger.error(f"❌ Failed to log to Google Sheet: {e}")