DivineLoop / app.py
sreelekhaputta2's picture
Update app.py
2fe65ab verified
import json
import random
import gradio as gr
import base64
# Load JSON dataset
with open("gita_techies_18_chapters.json", "r", encoding="utf-8") as f:
gita_for_techies = json.load(f)
# Encode background image
with open("bg.png", "rb") as img_file:
b64_bg_img = base64.b64encode(img_file.read()).decode()
# Function to return one random entry
def get_gita_tech():
entry = random.choice(gita_for_techies)
return f"""
<div class="content">
<h2>📘 Chapter {entry["chapter_number"]}</h2>
<p><b>🌼 Spiritual Meaning (EN):</b><br>{entry["spiritual_meaning_en"]}</p>
<p><b>🪔 ఆధ్యాత్మిక అర్థం (TE):</b><br>{entry["spiritual_meaning_te"]}</p>
<p><b>💻 Tech Meaning (EN):</b><br>{entry["tech_meaning_en"]}</p>
<p><b>🌾 టెక్ అర్థం (TE):</b><br>{entry["tech_meaning_te"]}</p>
<p><b>🧠 Lesson for Techies:</b><br>{entry["lesson_for_techies"]}</p>
<p><b>⚙️ Tech Stack Analogy:</b><br>{entry["tech_stack_analogy"]}</p>
<p><b>🧘 Daily Reminder (EN):</b><br><i>{entry["daily_reminder_en"]}</i></p>
<p><b>🧘 రోజువారీ స్మరణ (TE):</b><br><i>{entry["daily_reminder_te"]}</i></p>
<p><b>🧾 Code Snippet:</b></p>
<pre><code>{entry["code_snippet"]}</code></pre>
<hr style="margin-top: 30px;">
<p style="text-align:center;font-size:0.9rem;">🌸 Made with 💜 by <b>Sreelekha Putta</b></p>
</div>
<style>
.content {{
background: rgba(80, 60, 120, 0.3);
padding: 20px;
border-radius: 16px;
max-width: 800px;
width: 92%;
margin: 0 auto 30px auto;
box-shadow: 0 0 30px rgba(200, 150, 255, 0.3);
font-family: 'Segoe UI', sans-serif;
font-size: 1rem;
line-height: 1.8;
word-wrap: break-word;
overflow-wrap: break-word;
text-shadow: 1px 1px 4px rgba(0, 0, 0, 1);
color: #ffffff !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}}
.content * {{
color: #ffffff !important;
text-shadow: 1px 1px 4px rgba(0, 0, 0, 1);
}}
h2 {{
font-size: 1.5rem;
margin-bottom: 16px;
color: #d9b2ff;
}}
pre, code {{
background: #1b1b30;
color: #e6f1ff !important;
padding: 12px;
border-radius: 8px;
font-size: 0.95rem;
overflow-x: auto;
box-shadow: 0 0 6px rgba(255,255,255,0.08);
text-shadow: none;
}}
</style>
"""
# CSS with background
css = f"""
body {{
margin: 0;
padding: 0;
min-height: 100vh;
background-image: url("data:image/png;base64,{b64_bg_img}");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
font-family: 'Segoe UI', sans-serif;
}}
body::before {{
content: "";
position: fixed;
inset: 0;
background: rgba(0,0,30,0.7);
z-index: -1;
}}
h1 {{
text-align: center;
color: #e7c1ff;
font-size: 2.8rem;
font-weight: 700;
margin: 30px 0 20px 0;
text-shadow: 0 0 15px #c084fc;
}}
button {{
background-color: #a855f7;
border-radius: 12px;
color: white;
font-weight: 600;
font-size: 1.3rem;
padding: 0.8rem 2.4rem;
border: none;
cursor: pointer;
margin-bottom: 30px;
box-shadow: 0 0 18px #a78bfa88;
}}
button:hover {{
background-color: #d8b4fe;
color: black;
box-shadow: 0 0 25px #f0d0ff;
}}
"""
# Gradio interface
with gr.Blocks(css=css) as app:
gr.Markdown("<h1>💻 Bhagavad Gita for Techies 💻</h1>")
output = gr.HTML()
btn = gr.Button("🔁 Get Wisdom Tip")
btn.click(fn=get_gita_tech, outputs=output)
app.launch()