File size: 2,758 Bytes
54639e8
9d54dfd
54639e8
f20025d
54639e8
 
 
 
 
 
 
 
 
 
9c42c43
54639e8
 
 
 
 
 
 
 
 
 
 
 
 
 
503d4ac
54639e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9c42c43
54639e8
 
 
d667d16
54639e8
 
 
 
d667d16
54639e8
 
 
 
 
 
503d4ac
54639e8
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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}")