Spaces:
Running
Running
| """ | |
| Test script for Event Tags Generator API | |
| """ | |
| import requests | |
| import json | |
| # API endpoint | |
| BASE_URL = "http://localhost:8001" | |
| def test_generate_tags(): | |
| """Test single event tag generation""" | |
| print("=" * 60) | |
| print("Testing Event Tags Generator") | |
| print("=" * 60) | |
| # Test data | |
| event_data = { | |
| "event_name": "Vietnam Music Festival 2025", | |
| "category": "Âm nhạc", | |
| "short_description": "Lễ hội âm nhạc quốc tế lớn nhất Việt Nam năm 2025", | |
| "detailed_description": """ | |
| Vietnam Music Festival 2025 là sự kiện âm nhạc đỉnh cao quy tụ các nghệ sĩ | |
| nổi tiếng trong nước và quốc tế. Sự kiện diễn ra trong 3 ngày với hơn 50 | |
| nghệ sĩ tham gia, từ nhạc pop, rock, EDM đến acoustic. Đặc biệt có sự góp | |
| mặt của các DJ hàng đầu thế giới. Không gian festival rộng 10,000m2 tại | |
| trung tâm Hà Nội với hệ thống âm thanh ánh sáng hiện đại. Dự kiến thu hút | |
| hơn 30,000 khán giả mỗi ngày. | |
| """, | |
| "max_tags": 12, | |
| "language": "vi" | |
| } | |
| print("\n📤 REQUEST:") | |
| print(json.dumps(event_data, indent=2, ensure_ascii=False)) | |
| try: | |
| # Call API | |
| response = requests.post( | |
| f"{BASE_URL}/generate-tags", | |
| json=event_data, | |
| headers={"Content-Type": "application/json"} | |
| ) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print("\n✅ SUCCESS!") | |
| print("\n📥 RESPONSE:") | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| print("\n" + "=" * 60) | |
| print("GENERATED METADATA:") | |
| print("=" * 60) | |
| print(f"\n🏷️ TAGS ({len(result['generated_tags'])} tags):") | |
| for tag in result['generated_tags']: | |
| print(f" • {tag}") | |
| print(f"\n📁 PRIMARY CATEGORY: {result['primary_category']}") | |
| if result['secondary_categories']: | |
| print(f"\n📂 SECONDARY CATEGORIES:") | |
| for cat in result['secondary_categories']: | |
| print(f" • {cat}") | |
| if result['keywords']: | |
| print(f"\n🔍 SEO KEYWORDS:") | |
| for kw in result['keywords']: | |
| print(f" • {kw}") | |
| if result['hashtags']: | |
| print(f"\n#️⃣ HASHTAGS:") | |
| for ht in result['hashtags']: | |
| print(f" • {ht}") | |
| if result['target_audience']: | |
| print(f"\n👥 TARGET AUDIENCE:") | |
| for aud in result['target_audience']: | |
| print(f" • {aud}") | |
| print(f"\n😊 SENTIMENT: {result['sentiment']}") | |
| print(f"💯 CONFIDENCE: {result['confidence_score']}") | |
| print(f"⏱️ GENERATION TIME: {result['generation_time']}") | |
| print(f"🤖 MODEL USED: {result['model_used']}") | |
| else: | |
| print(f"\n❌ ERROR: {response.status_code}") | |
| print(response.text) | |
| except requests.exceptions.ConnectionError: | |
| print("\n❌ ERROR: Cannot connect to API") | |
| print("Make sure the server is running: python event_tags_generator.py") | |
| except Exception as e: | |
| print(f"\n❌ ERROR: {str(e)}") | |
| def test_batch_generation(): | |
| """Test batch event tag generation""" | |
| print("\n\n" + "=" * 60) | |
| print("Testing Batch Tag Generation") | |
| print("=" * 60) | |
| events = [ | |
| { | |
| "event_name": "Tech Summit Vietnam 2025", | |
| "category": "Công nghệ", | |
| "short_description": "Hội nghị công nghệ lớn nhất Đông Nam Á", | |
| "detailed_description": "Sự kiện quy tụ các chuyên gia AI, Blockchain, Cloud Computing từ Google, Microsoft, Amazon...", | |
| "max_tags": 10, | |
| "language": "vi" | |
| }, | |
| { | |
| "event_name": "Food Festival Saigon", | |
| "category": "Ẩm thực", | |
| "short_description": "Lễ hội ẩm thực đường phố Sài Gòn", | |
| "detailed_description": "Khám phá hơn 100 món ăn đường phố đặc trưng của Sài Gòn với các đầu bếp nổi tiếng...", | |
| "max_tags": 8, | |
| "language": "vi" | |
| } | |
| ] | |
| print(f"\n📤 Generating tags for {len(events)} events...") | |
| try: | |
| response = requests.post( | |
| f"{BASE_URL}/generate-tags/batch", | |
| json=events, | |
| headers={"Content-Type": "application/json"} | |
| ) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print(f"\n✅ Batch completed!") | |
| print(f" Total: {result['total']}") | |
| print(f" Successful: {result['successful']}") | |
| print(f" Failed: {result['failed']}") | |
| for item in result['results']: | |
| if item['success']: | |
| print(f"\n✓ {item['event_name']}") | |
| print(f" Tags: {', '.join(item['data']['generated_tags'][:5])}...") | |
| else: | |
| print(f"\n✗ {item['event_name']}") | |
| print(f" Error: {item['error']}") | |
| else: | |
| print(f"\n❌ ERROR: {response.status_code}") | |
| print(response.text) | |
| except Exception as e: | |
| print(f"\n❌ ERROR: {str(e)}") | |
| if __name__ == "__main__": | |
| import os | |
| uvicorn.run( | |
| "main:app", | |
| host="0.0.0.0", | |
| port=int(os.environ.get("PORT", 7860)), | |
| reload=False, | |
| log_level="info" | |
| ) |