File size: 6,339 Bytes
5a1a2bc a40065e 5a1a2bc a40065e 5a1a2bc a40065e 5a1a2bc a40065e 5a1a2bc a40065e 5a1a2bc a40065e 8a27e64 5a1a2bc 8a27e64 5a1a2bc a40065e 5a1a2bc a40065e 5a1a2bc |
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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
#!/usr/bin/env python3
"""
Hugging Face Spaces Entry Point for Corpus Collection Engine
AI-powered platform for preserving Indian cultural heritage
"""
import gradio as gr
import subprocess
import threading
import time
import sys
import os
def launch_streamlit():
"""Launch Streamlit app in background"""
try:
# Launch the Streamlit app from the corpus_collection_engine directory
subprocess.Popen([
sys.executable, "-m", "streamlit", "run",
"corpus_collection_engine/main.py",
"--server.port=7861",
"--server.address=0.0.0.0",
"--server.headless=true"
])
except Exception as e:
print(f"Error launching Streamlit: {e}")
def create_interface():
"""Create Gradio interface that embeds the Streamlit app"""
# Launch Streamlit in background
streamlit_thread = threading.Thread(target=launch_streamlit, daemon=True)
streamlit_thread.start()
# Wait for Streamlit to start
time.sleep(10)
# Create Gradio interface
with gr.Blocks(
title="๐ฎ๐ณ Corpus Collection Engine",
theme=gr.themes.Soft(),
css="""
.gradio-container {
max-width: 100% !important;
padding: 0 !important;
}
iframe {
border-radius: 10px !important;
}
"""
) as demo:
# Header
gr.HTML("""
<div style="text-align: center; padding: 25px; background: linear-gradient(135deg, #FF6B35, #F7931E); color: white; margin-bottom: 25px; border-radius: 15px; box-shadow: 0 4px 15px rgba(255,107,53,0.3);">
<h1 style="margin: 0; font-size: 2.8em; font-weight: bold;">๐ฎ๐ณ Corpus Collection Engine</h1>
<p style="margin: 15px 0 0 0; font-size: 1.3em; opacity: 0.95;">AI-powered platform for preserving Indian cultural heritage</p>
<p style="margin: 10px 0 0 0; font-size: 1em; opacity: 0.8;">No login required โข Start contributing immediately</p>
</div>
""")
# Main app iframe
gr.HTML("""
<div style="background: white; border-radius: 15px; overflow: hidden; box-shadow: 0 8px 25px rgba(0,0,0,0.1); margin-bottom: 25px;">
<iframe
src="http://localhost:7861"
width="100%"
height="850px"
frameborder="0"
style="border-radius: 15px;"
allow="camera; microphone; clipboard-write"
></iframe>
</div>
""")
# Features showcase
gr.HTML("""
<div style="background: linear-gradient(135deg, #f8f9fa, #e9ecef); padding: 25px; border-radius: 15px; margin-top: 20px;">
<h3 style="text-align: center; margin: 0 0 20px 0; color: #333; font-size: 1.5em;">๐ฏ Cultural Activities Available</h3>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-top: 20px;">
<div style="text-align: center; padding: 20px; background: white; border-radius: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);">
<div style="font-size: 3em; margin-bottom: 10px;">๐ญ</div>
<h4 style="margin: 0 0 8px 0; color: #FF6B35;">Meme Creator</h4>
<p style="margin: 0; color: #666; font-size: 0.9em;">Create culturally relevant memes in Indian languages</p>
</div>
<div style="text-align: center; padding: 20px; background: white; border-radius: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);">
<div style="font-size: 3em; margin-bottom: 10px;">๐</div>
<h4 style="margin: 0 0 8px 0; color: #FF6B35;">Recipe Collector</h4>
<p style="margin: 0; color: #666; font-size: 0.9em;">Share traditional family recipes with cultural context</p>
</div>
<div style="text-align: center; padding: 20px; background: white; border-radius: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);">
<div style="font-size: 3em; margin-bottom: 10px;">๐</div>
<h4 style="margin: 0 0 8px 0; color: #FF6B35;">Folklore Archive</h4>
<p style="margin: 0; color: #666; font-size: 0.9em;">Preserve stories, legends, and oral traditions</p>
</div>
<div style="text-align: center; padding: 20px; background: white; border-radius: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);">
<div style="font-size: 3em; margin-bottom: 10px;">๐๏ธ</div>
<h4 style="margin: 0 0 8px 0; color: #FF6B35;">Landmark Identifier</h4>
<p style="margin: 0; color: #666; font-size: 0.9em;">Document historical and cultural landmarks</p>
</div>
</div>
<div style="text-align: center; margin-top: 25px; padding: 20px; background: rgba(255,107,53,0.1); border-radius: 10px;">
<h4 style="margin: 0 0 10px 0; color: #FF6B35;">๐ Platform Features</h4>
<p style="margin: 0; color: #555; line-height: 1.6;">
<strong>๐ 11 Indian Languages</strong> โข
<strong>๐ฑ Mobile Responsive</strong> โข
<strong>๐ Privacy-First Design</strong> โข
<strong>๐ Real-time Analytics</strong> โข
<strong>๐ Achievement System</strong> โข
<strong>โก Offline Support</strong>
</p>
</div>
</div>
""")
# Footer
gr.HTML("""
<div style="text-align: center; padding: 20px; margin-top: 20px; color: #666; border-top: 1px solid #eee;">
<p style="margin: 0; font-size: 0.9em;">
Built with โค๏ธ for preserving Indian cultural heritage โข
<strong>Start contributing today!</strong>
</p>
</div>
""")
return demo
if __name__ == "__main__":
# Create and launch the Gradio interface
demo = create_interface()
demo.launch(
server_port=7860,
server_name="0.0.0.0",
share=False,
show_error=True,
show_api=False
) |