#!/usr/bin/env python3 """ Demo Snapshot Downloader This script demonstrates the snapshot downloader functionality by downloading a small set of snapshots and generating an HTML report. """ import asyncio import logging import sys import os from datetime import datetime, timedelta # Add the current directory to the path so we can import modules sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from snapshot_downloader import SnapshotDownloader async def demo_snapshot_download(): """Demonstrate snapshot downloading functionality.""" print("šŸŽÆ ParentZone Snapshot Downloader Demo") print("=" * 60) # Configuration email = "tudor.sitaru@gmail.com" password = "mTVq8uNUvY7R39EPGVAm@" output_dir = "demo_snapshots" # Setup logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) try: print("\nšŸ” Step 1: Initialize Snapshot Downloader") print("-" * 40) downloader = SnapshotDownloader( output_dir=output_dir, email=email, password=password ) print(f"āœ… Downloader initialized") print(f" Output directory: {output_dir}") print(f" Authentication: Email/Password") print(f"\nšŸ“Š Step 2: Download Snapshots (Limited)") print("-" * 40) print("Downloading snapshots with limits for demo...") # Download snapshots with limits for demo html_file = await downloader.download_snapshots( type_ids=[15], # Snapshot type date_from="2024-01-01", # Start of 2024 date_to="2024-03-31", # First quarter only max_pages=3 # Limit to first 3 pages for demo ) if html_file: print(f"\nāœ… Demo completed successfully!") print(f"šŸ“„ HTML Report: {html_file}") # Print statistics print(f"\nšŸ“ˆ Demo Results:") print(f" Total snapshots: {downloader.stats['total_snapshots']}") print(f" Pages fetched: {downloader.stats['pages_fetched']}") print(f" Failed requests: {downloader.stats['failed_requests']}") print(f" Generated files: {downloader.stats['generated_files']}") print(f"\n🌐 How to View:") print(f"1. Open your file browser") print(f"2. Navigate to: {html_file}") print(f"3. Double-click the HTML file to open in browser") print(f"4. Use the search box to find specific snapshots") print(f"5. Click snapshot titles to expand/collapse details") else: print("āš ļø No snapshots found for the demo period") return True except Exception as e: print(f"āŒ Demo failed with error: {e}") import traceback traceback.print_exc() return False def show_demo_info(): """Show information about the demo.""" print("\n" + "=" * 60) print("šŸ“‹ SNAPSHOT DOWNLOADER DEMO INFO") print("=" * 60) print("\nšŸŽÆ What This Demo Does:") print("• Authenticates with ParentZone API using login credentials") print("• Downloads snapshots (daily events) from Q1 2024") print("• Generates an interactive HTML report") print("• Shows pagination handling (limited to 3 pages)") print("• Demonstrates error handling and statistics") print("\nšŸ“„ HTML Report Features:") print("• Chronological listing of all snapshots") print("• Search functionality to find specific events") print("• Collapsible sections for detailed metadata") print("• Images and attachments (if available)") print("• Mobile-responsive design") print("• Raw JSON data for each snapshot (expandable)") print("\nāš™ļø Technical Features Demonstrated:") print("• API authentication flow") print("• Pagination handling across multiple pages") print("• HTML escaping for security") print("• Date formatting and parsing") print("• Error handling and logging") print("• Statistics tracking") print("\nšŸ”§ Configuration Options Available:") print("• Date range filtering") print("• Type ID filtering (default: 15 for snapshots)") print("• Page limits for testing") print("• Custom output directories") print("• API key or email/password authentication") def main(): """Main demo function.""" show_demo_info() print("\n" + "=" * 60) print("šŸš€ STARTING DEMO") print("=" * 60) success = asyncio.run(demo_snapshot_download()) if success: print("\n" + "=" * 60) print("šŸŽ‰ DEMO COMPLETED SUCCESSFULLY!") print("=" * 60) print("āœ… Snapshot downloader is working correctly") print("āœ… HTML report generated with interactive features") print("āœ… Pagination and authentication working") print("\nšŸ’” Try the full downloader with:") print(" python3 snapshot_downloader.py --email your@email.com --password yourpass") print(" python3 config_snapshot_downloader.py --config snapshot_config.json") else: print("\nāŒ Demo failed - check error messages above") return 1 return 0 if __name__ == "__main__": exit(main())