|
|
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 |
|
|
|
|
|
|
|
|
if job_index is not None and "Job" in df.columns: |
|
|
result_df = result_df[result_df["Job"] == str(job_index)] |
|
|
|
|
|
|
|
|
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}") |
|
|
|