#!/usr/bin/env python3 """ šŸŒ™ OVERNIGHT PRODUCTION - Automated Asset Generation Generates remaining 384 assets slowly with rate limiting Runs autonomously in background """ import time import sys from pathlib import Path # Add scripts to path sys.path.insert(0, '/Users/davidkotnik/repos/novafarma/scripts') from generate_v7_final import generate_registry, generate_image_google, setup_google_ai, OUTPUT_DIR # Configuration BATCH_SIZE = 1 # Generate 1 at a time to avoid rate limits WAIT_BETWEEN = 60 # 60 seconds between each asset COMMIT_EVERY = 20 # Git commit every 20 assets def main(): print("=" * 70) print("šŸŒ™ OVERNIGHT ASSET PRODUCTION") print("=" * 70) # Setup API if not setup_google_ai(): print("āŒ API key not configured") return print("āœ… API configured\n") # Load registry print("šŸ“‹ Loading asset registry...") ASSETS = generate_registry() print(f"šŸ“Š Total registry: {len(ASSETS)} assets\n") # Filter only missing assets missing = [a for a in ASSETS if not (OUTPUT_DIR / a["cat"] / a["file"]).exists()] print(f"šŸŽÆ Missing: {len(missing)} assets") print(f"āœ… Existing: {len(ASSETS) - len(missing)} assets\n") if not missing: print("šŸŽ‰ All assets already generated!") return print(f"ā° Estimated time: {len(missing) * WAIT_BETWEEN // 3600} hours\n") print("šŸš€ STARTING OVERNIGHT PRODUCTION...\n") success, fail = 0, 0 commit_counter = 0 for i, asset in enumerate(missing, 1): path = OUTPUT_DIR / asset["cat"] / asset["file"] print(f"[{i}/{len(missing)}] šŸŽØ {asset['file']}") try: if generate_image_google(asset["prompt"], path): print(f" āœ… SAVED to {asset['cat']}/") success += 1 commit_counter += 1 # Auto-commit every N assets if commit_counter >= COMMIT_EVERY: import subprocess subprocess.run([ "git", "-C", "/Users/davidkotnik/repos/novafarma", "add", "assets/images/" ]) subprocess.run([ "git", "-C", "/Users/davidkotnik/repos/novafarma", "commit", "-m", f"šŸŒ™ Overnight batch: {success} assets ({success}/{len(missing)})" ]) print(f"\nšŸ’¾ Git commit: {success} assets saved\n") commit_counter = 0 else: print(f" āŒ FAILED") fail += 1 except Exception as e: print(f" āš ļø ERROR: {e}") fail += 1 # Progress report every 10 if i % 10 == 0: print(f"\nšŸ“Š Progress: {i}/{len(missing)} | āœ…{success} āŒ{fail}\n") # Rate limiting pause if i < len(missing): # Don't wait after last one print(f" ā³ Waiting {WAIT_BETWEEN}s...") time.sleep(WAIT_BETWEEN) # Final commit if commit_counter > 0: import subprocess subprocess.run([ "git", "-C", "/Users/davidkotnik/repos/novafarma", "add", "assets/images/" ]) subprocess.run([ "git", "-C", "/Users/davidkotnik/repos/novafarma", "commit", "-m", f"šŸŽ‰ Overnight complete: {success} total assets" ]) print("\n" + "=" * 70) print("šŸŽ‰ OVERNIGHT PRODUCTION COMPLETE!") print(f"āœ… Success: {success} | āŒ Fail: {fail}") print("=" * 70) if __name__ == "__main__": main()