Spaces:
Running
Running
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() | |