Spaces:
Running
Running
import json | |
import random | |
import gradio as gr | |
import base64 | |
# ✅ Load JSON data | |
with open("gita_techies_18_chapters.json", "r", encoding="utf-8") as f: | |
gita_for_techies = json.load(f) | |
# ✅ Encode bg.png as base64 | |
with open("bg.png", "rb") as img_file: | |
b64_bg_img = base64.b64encode(img_file.read()).decode() | |
# ✅ Wisdom generator | |
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(20, 15, 35, 0.9); | |
padding: 25px; | |
border-radius: 16px; | |
max-width: 800px; | |
margin: 0 auto 30px auto; | |
box-shadow: 0 0 25px #ab71f7; | |
color: #f8e8ff; | |
font-family: 'Segoe UI', sans-serif; | |
animation: fadeIn 1.5s ease forwards; | |
}} | |
pre {{ | |
background: #1f2937; | |
color: #a5f3fc; | |
padding: 12px; | |
border-radius: 8px; | |
font-size: 0.95rem; | |
overflow-x: auto; | |
}} | |
h2 {{ | |
color: #d0a8ff; | |
}} | |
@keyframes fadeIn {{ | |
from {{ opacity: 0; transform: translateY(20px); }} | |
to {{ opacity: 1; transform: translateY(0); }} | |
}} | |
</style> | |
""" | |
# ✅ CSS with background image | |
css = f""" | |
body {{ | |
margin: 0; | |
padding: 20px; | |
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.5rem; | |
font-weight: 700; | |
margin-bottom: 20px; | |
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; | |
}} | |
""" | |
# ✅ Build UI | |
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() | |