#!/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")