#!/usr/bin/env python3
"""
Example script to test the content evaluation tool.
This creates sample text images and evaluates them with progress tracking.
"""

from PIL import Image, ImageDraw, ImageFont
import os
import sys

print("🚀 Starting Suno Content Evaluation Demo")
print("=" * 50)

# Add src to path for imports
sys.path.insert(0, 'src')

print("📦 Importing modules...")
try:
    from src.content_evaluator import ContentEvaluator
    from src.report_generator import ReportGenerator
    print("   ✅ All modules imported successfully")
except ImportError as e:
    print(f"   ❌ Import failed: {e}")
    print("   💡 Try installing dependencies with: pip install -r requirements_minimal.txt")
    sys.exit(1)

def create_sample_images():
    """Create sample images with different text content for testing"""
    print("\n🎨 Creating sample images...")

    os.makedirs('examples/images', exist_ok=True)
    print("   📁 Created examples/images directory")

    # Sample texts
    samples = [
        {
            'text': 'Suno: Empowering musicians to create amazing music\nthrough breakthrough technology that puts artists first',
            'filename': 'approved_example.png',
            'description': 'Music-first messaging (should be APPROVED)'
        },
        {
            'text': 'Our AI music company leverages cutting-edge algorithms\nto democratize music and disrupt the industry',
            'filename': 'rejected_example.png',
            'description': 'AI-first messaging (should be REJECTED)'
        },
        {
            'text': 'Join our community of creators and explore new ways\nto express your musical imagination',
            'filename': 'community_example.png',
            'description': 'Community-focused messaging (should be APPROVED)'
        }
    ]

    print(f"   🖼️  Generating {len(samples)} sample images...")

    # Create images
    for i, sample in enumerate(samples, 1):
        print(f"     Creating {i}/{len(samples)}: {sample['filename']}")
        print(f"       Content: {sample['description']}")

        # Create image with text
        img = Image.new('RGB', (600, 200), color='white')
        draw = ImageDraw.Draw(img)

        try:
            # Try to use a nicer font
            font = ImageFont.truetype("/System/Library/Fonts/Arial.ttf", 24)
        except:
            # Fallback to default font
            font = ImageFont.load_default()

        # Calculate text position
        lines = sample['text'].split('\n')
        y_offset = 50

        for line in lines:
            draw.text((50, y_offset), line, fill='black', font=font)
            y_offset += 40

        # Save image
        img_path = os.path.join('examples/images', sample['filename'])
        img.save(img_path)
        print(f"       ✅ Saved: {img_path}")

    print(f"   🎉 All {len(samples)} sample images created!")

def run_evaluation():
    """Run the evaluation on sample images"""

    print("\n" + "="*60)
    print("🔍 RUNNING SUNO CONTENT EVALUATION")
    print("="*60)

    print("\n🔧 Initializing evaluation system...")
    # Initialize evaluator
    try:
        evaluator = ContentEvaluator('config/suno_guidelines.txt')
        report_generator = ReportGenerator()
        print("   ✅ Evaluation system ready!")
    except Exception as e:
        print(f"   ❌ System initialization failed: {e}")
        return

    print("\n📂 Starting directory evaluation...")
    # Evaluate images
    results = evaluator.evaluate_directory('examples/images')
    summary = evaluator.generate_summary(results)

    # Display results
    print(f"\n📊 EVALUATION RESULTS")
    print("-" * 40)
    print(f"📈 Total images: {summary['total_images']}")
    print(f"✅ Approved: {summary['approved']}")
    print(f"❌ Rejected: {summary['rejected']}")
    print(f"📊 Approval rate: {summary['approval_rate']:.1%}")

    print(f"\n🔍 DETAILED RESULTS:")
    print("=" * 60)

    for i, result in enumerate(results, 1):
        status = "✅ APPROVED" if result['approved'] else "❌ REJECTED"
        filename = os.path.basename(result['link'])
        confidence = result.get('confidence', 0)

        print(f"\n{i}. {filename}")
        print(f"   Status: {status} (confidence: {confidence:.2f})")
        print(f"   Reason: {result['reason']}")
        if result.get('text_extracted'):
            text_preview = result['text_extracted'][:80]
            print(f"   Text found: \"{text_preview}{'...' if len(result['text_extracted']) > 80 else ''}\"")

        # Show key matches if available
        key_matches = result.get('guideline_matches', [])
        if key_matches:
            print(f"   Key matches:")
            for match in key_matches[:2]:  # Show top 2 matches
                print(f"     • {match['category']} ({match['type']}, {match['confidence']:.2f})")

    # Generate report
    print(f"\n💾 Generating final report...")
    report_json = report_generator.generate_json_report(results, summary)
    output_path = report_generator.save_report(report_json, 'reviews/sample_report.json')

    print(f"\n📄 Full report saved to: {output_path}")

    # Final summary
    approved_count = sum(1 for r in results if r['approved'])
    print("\n" + "="*60)
    print("🎯 FINAL SUMMARY")
    print("="*60)
    if approved_count == len(results):
        print("🎉 ALL CONTENT APPROVED!")
    elif approved_count == 0:
        print("⚠️  NO CONTENT APPROVED - All rejected")
    else:
        print(f"⚡ MIXED RESULTS: {approved_count}/{len(results)} approved")

    print(f"📊 Success rate: {approved_count/len(results):.1%}")
    print("="*60)

if __name__ == "__main__":
    print("Step 1: Creating sample images...")
    create_sample_images()

    print("\nStep 2: Running content evaluation...")
    run_evaluation()

    print("\n🎉 DEMO COMPLETE!")
    print("📄 Check reviews/sample_report.json for full JSON results.")
    print("🔧 Try: python -m src.main --images-dir examples/images")