Spaces:
Sleeping
Sleeping
File size: 2,954 Bytes
818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 818d48b ea037a1 | 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #!/usr/bin/env python3
"""
Standalone script to fetch Kalshi menu data and export as JSON.
Run this on your local machine to fetch data from Kalshi's public API.
Usage:
python fetch_kalshi_menu.py [--num-items N] [--output output.json]
Examples:
python fetch_kalshi_menu.py
python fetch_kalshi_menu.py --num-items 15 --output kalshi_data.json
python fetch_kalshi_menu.py --verbose
"""
import argparse
import json
import sys
from datetime import datetime, timezone
from pathlib import Path
# Import the generator from kalshi_data.py
from kalshi_data import KalshiDataGenerator
def main():
parser = argparse.ArgumentParser(
description="Fetch Kalshi 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="kalshi_menu_data.json",
help="Output JSON file path (default: kalshi_menu_data.json)",
)
parser.add_argument(
"--verbose",
action="store_true",
help="Print detailed menu output during fetch",
)
args = parser.parse_args()
print("🚀 Starting Kalshi menu data fetch...")
print(f" Items per section: {args.num_items}")
print(f" Output file: {args.output}")
print()
try:
# Create generator instance
generator = KalshiDataGenerator(num_items=args.num_items)
# Build menu (this fetches all data)
print("📊 Fetching menu data from Kalshi API...")
menu_entries = generator.build_menu(verbose=args.verbose)
# Format as MenuResponse structure
menu_response = {
"generated_at": datetime.now(timezone.utc).isoformat(),
"source": "Kalshi API",
"api_base": "https://api.elections.kalshi.com/trade-api/v2",
"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(" Breakdown by section:")
for cat, count in categories.items():
print(f" • {cat}: {count} items")
return 0
except KeyboardInterrupt:
print("\n⚠️ Interrupted by user")
return 1
except Exception as e:
print(f"\n❌ Error: {e}", file=sys.stderr)
import traceback
traceback.print_exc()
return 1
if __name__ == "__main__":
sys.exit(main()) |