Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
from datetime import datetime | |
from geopy.geocoders import Nominatim | |
import geocoder | |
# Set page config | |
st.set_page_config(page_title="π Temple Language Corpus", layout="centered") | |
# Title | |
st.markdown("## π Temple Language Corpus Collection") | |
st.write("Collect sacred stories, audio, and videos from temple environments with location tagging.") | |
# Create submission folder in /tmp | |
submission_dir = "/tmp/submissions" | |
os.makedirs(submission_dir, exist_ok=True) | |
with st.form("corpus_form", clear_on_submit=True): | |
st.markdown("### π€ User Information") | |
name = st.text_input("Name") | |
email = st.text_input("Email (Optional)") | |
phone = st.text_input("Phone (Optional)") | |
st.markdown("### π Corpus Details") | |
title = st.text_input("Title") | |
description = st.text_area("Description") | |
category = st.selectbox("Category", ["Temple History", "Mythological Story", "Devotional Song", "Festival Ritual", "Others"]) | |
language = st.text_input("Language") | |
st.markdown("### π Location (Auto or Manual)") | |
col1, col2 = st.columns([1, 1]) | |
with col1: | |
latitude = st.text_input("Latitude") | |
with col2: | |
longitude = st.text_input("Longitude") | |
col3, _ = st.columns([1, 5]) | |
with col3: | |
auto_detect = st.form_submit_button("π Auto Detect Location") | |
if auto_detect: | |
g = geocoder.ip('me') | |
if g.ok: | |
latitude = str(g.latlng[0]) | |
longitude = str(g.latlng[1]) | |
st.success(f"π Location detected: ({latitude}, {longitude})") | |
else: | |
st.error("β Location detection failed. Please enter manually.") | |
st.markdown("### π Upload Media") | |
image = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"]) | |
media = st.file_uploader("Upload Audio or Video", type=["mp3", "wav", "m4a", "mp4", "mov", "mpeg4"]) | |
submitted = st.form_submit_button("π Submit") | |
if submitted: | |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") | |
user_folder = os.path.join(submission_dir, f"{name.replace(' ', '_')}_{timestamp}") | |
os.makedirs(user_folder, exist_ok=True) | |
# Save form data to a text file | |
with open(os.path.join(user_folder, "info.txt"), "w") as f: | |
f.write(f"Name: {name}\nEmail: {email}\nPhone: {phone}\n") | |
f.write(f"Title: {title}\nDescription: {description}\nCategory: {category}\nLanguage: {language}\n") | |
f.write(f"Latitude: {latitude}\nLongitude: {longitude}\n") | |
if image: | |
with open(os.path.join(user_folder, image.name), "wb") as f: | |
f.write(image.getbuffer()) | |
if media: | |
with open(os.path.join(user_folder, media.name), "wb") as f: | |
f.write(media.getbuffer()) | |
st.success("β Submission Successful!") | |
# Show uploaded content | |
if image: | |
st.image(image, caption="π· Uploaded Image", use_container_width=True) | |
if media: | |
filetype = media.type | |
if "audio" in filetype: | |
st.audio(media) | |
elif "video" in filetype: | |
st.video(media) | |