#!/usr/bin/env python3 """ Standalone script to fetch Polymarket menu data and export as JSON. Run this on your local machine to avoid network timeout issues. Usage: python fetch_menu_data.py [--num-items N] [--output output.json] """ import argparse import json import sys from datetime import datetime, timezone from pathlib import Path from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() # Import the generator from email3.py from email3 import PolymarketEmailGenerator def main(): parser = argparse.ArgumentParser( description="Fetch Polymarket menu data and export as JSON" ) parser.add_argument( "--num-items", type=int, default=10, help="Number of items per section (default: 10)", ) parser.add_argument( "--output", type=str, default="menu_data.json", help="Output JSON file path (default: menu_data.json)", ) args = parser.parse_args() print("Starting Polymarket menu data fetch...") print(f" Items per section: {args.num_items}") print() try: # Create generator instance generator = PolymarketEmailGenerator(num_items=args.num_items) # Build menu (this fetches all data including breaking news) print("Fetching menu data...") menu_entries = generator.build_menu(verbose=True) # Format as MenuResponse structure menu_response = { "generated_at": datetime.now(timezone.utc).isoformat(), "items": menu_entries, } # Write to JSON file output_path = Path(args.output) with open(output_path, "w", encoding="utf-8") as f: json.dump(menu_response, f, indent=2, ensure_ascii=False) print() print(f"Success! Menu data exported to: {output_path}") print(f" Total items: {len(menu_entries)}") # Show breakdown by category categories = {} for item in menu_entries: cat = item.get("category", "unknown") categories[cat] = categories.get(cat, 0) + 1 print(f" Categories: {categories}") return 0 except KeyboardInterrupt: print("\nInterrupted by user") return 1 except Exception as e: print(f"\nError: {e}", file=sys.stderr) import traceback traceback.print_exc() return 1 if __name__ == "__main__": sys.exit(main())