| import os | |
| import time | |
| import pickle | |
| # comment out belwo while hosting on hf | |
| # import tempfile | |
| import pandas as pd | |
| from app.ads1.fetch_ads_data import fetch_all_data, to_dataframes | |
| from app.ads1.merge import merge_dfs | |
| from app.ads1.sample_data import generate_sample_dfs | |
| # from dotenv import load_dotenv | |
| # load_dotenv() | |
| # uncomment belwo line for hf | |
| CACHE_FILE = "/tmp/google_ads_cache.pkl" | |
| # This dynamically picks /tmp on Linux/Mac and AppData\Local\Temp on Windows | |
| # CACHE_FILE = os.path.join(tempfile.gettempdir(), "google_ads_cache.pkl") | |
| # CACHE_TTL = 3600 | |
| CACHE_TTL = 3600 # Cache data for 1 hour (3600 seconds) | |
| def load_google_ads_data(force_refresh=False): | |
| customer_id = os.getenv("GOOGLE_ADS_CUSTOMER_ID") | |
| if not customer_id: | |
| raise ValueError("GOOGLE_ADS_CUSTOMER_ID missing") | |
| # Check if a fresh disk cache exists | |
| if not force_refresh and os.path.exists(CACHE_FILE): | |
| file_mod_time = os.path.getmtime(CACHE_FILE) | |
| if (time.time() - file_mod_time) < CACHE_TTL: | |
| print("π Loading data from local disk cache...") | |
| with open(CACHE_FILE, "rb") as f: | |
| return pickle.load(f) | |
| print("π Disk cache expired or missing. Fetching live Google Ads data...") | |
| real_raw = fetch_all_data(customer_id) | |
| real_dfs = to_dataframes(real_raw) | |
| sample_dfs = generate_sample_dfs() | |
| dfs = merge_dfs(real_dfs, sample_dfs) | |
| # Save to disk cache safely | |
| with open(CACHE_FILE, "wb") as f: | |
| pickle.dump(dfs, f) | |
| return dfs | |