Kalam_Comfort / app.py
ashhal's picture
Update app.py
c110a4c verified
raw
history blame
9.1 kB
import streamlit as st
import os
import json
import random
import requests
from datetime import datetime
from dotenv import load_dotenv
st.set_page_config(page_title="Kalam Comfort", page_icon="📚")
load_dotenv()
# ---------- File Setup ----------
default_moods = {
"anxious": ["13:28", "2:286", "10:62", "20:46", "48:4"],
"sad": ["94:5", "93:6", "65:7", "9:51", "12:86"],
"hopeless": ["39:53", "12:87", "3:139", "65:2", "57:22"],
"grateful": ["14:7", "31:12", "2:152", "16:114", "76:3"],
"lonely": ["2:186", "9:40", "6:103", "50:16", "17:79"],
"angry": ["3:134", "41:34", "7:199", "42:37", "16:126"],
"lost": ["93:7", "6:122", "2:2", "24:35", "42:52"],
"tired": ["94:6", "3:200", "29:69", "52:48", "6:162"],
"afraid": ["8:46", "33:3", "2:286", "3:173", "11:56"]
}
default_duas = {
"anxious": [
("اللهم اجعل قلبي مطمئنًا بذكرك",
"O Allah, make my heart tranquil with Your remembrance.",
"یا اللہ! میرے دل کو اپنے ذکر سے اطمینان دے۔"),
("اللهم لا سهل إلا ما جعلته سهلا",
"O Allah, nothing is easy except what You make easy.",
"یا اللہ! کچھ بھی آسان نہیں سوائے اس کے جسے تُو آسان کرے۔")
],
"sad": [
("اللهم اجبر قلبي جبرا يتعجب له أهل السماوات والأرض",
"O Allah, mend my heart in a way that amazes the heavens and the earth.",
"یا اللہ! میرے دل کو ایسا سہارا دے جو زمین و آسمان کو حیران کر دے۔")
],
"hopeless": [
("رب لا تذرني فردا وأنت خير الوارثين",
"My Lord, do not leave me alone — You are the Best Inheritor.",
"یا رب! مجھے تنہا نہ چھوڑ، تو بہترین وارث ہے۔")
],
"grateful": [
("اللهم اجعلني لك شَكُورًا",
"O Allah, make me deeply grateful to You.",
"یا اللہ! مجھے شکر گزار بنا دے۔")
],
"lonely": [
("اللهم كن معي حين لا يكون أحد بجانبي",
"O Allah, be with me when no one else is.",
"یا اللہ! جب کوئی ساتھ نہ ہو، تو میرے ساتھ ہو۔")
],
"angry": [
("اللهم ارزقني الحلم عند الغضب",
"O Allah, grant me forbearance when I’m angry.",
"یا اللہ! غصے میں مجھے برداشت عطا فرما۔")
],
"lost": [
("اللهم دلّني على صراطك المستقيم",
"O Allah, guide me to Your straight path.",
"یا اللہ! مجھے اپنے سیدھے راستے پر چلا۔")
],
"tired": [
("اللهم جدد طاقتي، وارزقني راحة البال",
"O Allah, renew my energy and grant me peace of mind.",
"یا اللہ! میری طاقت کو تازہ کر اور مجھے ذہنی سکون عطا فرما۔")
],
"afraid": [
("ربِّ أعني ولا تعن عليّ",
"My Lord, support me and not against me.",
"میرے رب! میری مدد فرما، میرے خلاف نہ ہو۔")
]
}
default_hadiths = {
"anxious": [
("أَلَا بِذِكْرِ اللَّهِ تَطْمَئِنُّ الْقُلُوبُ",
"Verily, in the remembrance of Allah do hearts find rest.",
"خبردار! اللہ کے ذکر سے دلوں کو سکون ملتا ہے۔")
],
"sad": [
("إِنَّ مَعَ الْعُسْرِ يُسْرًا",
"Indeed, with hardship comes ease.",
"بیشک ہر تنگی کے ساتھ آسانی ہے۔")
],
"hopeless": [
("مَن تَوَكَّلَ عَلَى اللَّهِ فَهُوَ حَسْبُهُ",
"Whoever relies upon Allah — He is sufficient for him.",
"جو اللہ پر بھروسہ کرے، وہ اس کے لیے کافی ہے۔")
],
"grateful": [
("مَن لَا يَشْكُرُ النَّاسَ لَا يَشْكُرُ اللَّهَ",
"He who does not thank people does not thank Allah.",
"جو لوگوں کا شکر ادا نہیں کرتا، وہ اللہ کا بھی شکر نہیں کرتا۔")
],
"lonely": [
("أَنَا أَوْلَى بِالْمُؤْمِنِينَ مِنْ أَنْفُسِهِمْ",
"I am closer to the believers than their own selves.",
"میں مومنوں سے ان کی اپنی جانوں سے بھی زیادہ قریب ہوں۔")
],
"angry": [
("لَيْسَ الشَّدِيدُ بِالصُّرَعَةِ...",
"The strong man is not the one who wrestles, but controls himself in anger.",
"طاقتور وہ نہیں جو پچھاڑ دے، بلکہ وہ ہے جو غصے میں خود پر قابو رکھے۔")
],
"lost": [
("مَنْ سَلَكَ طَرِيقًا يَلْتَمِسُ فِيهِ عِلْمًا...",
"Whoever seeks a path in search of knowledge, Allah will ease his path to Paradise.",
"جو علم کے راستے پر چلے، اللہ اس کے لیے جنت کا راستہ آسان کر دیتا ہے۔")
],
"tired": [
("مَا يُصِيبُ الْمُسْلِمَ مِنْ نَصَبٍ...",
"No fatigue or disease affects a Muslim except that Allah removes sins.",
"مسلمان کو جو بھی تھکن یا مرض لاحق ہو، اللہ اس سے اس کے گناہ مٹا دیتا ہے۔")
],
"afraid": [
("احْفَظِ اللَّهَ يَحْفَظْكَ",
"Be mindful of Allah, He will protect you.",
"اللہ کا دھیان رکھو، وہ تمہاری حفاظت کرے گا۔")
]
}
# File creation if missing
if not os.path.exists("moods.json"):
with open("moods.json", "w") as f:
json.dump(default_moods, f, indent=4)
if not os.path.exists("reflections.json"):
with open("reflections.json", "w") as f:
json.dump({}, f)
# Load data
with open("moods.json", "r") as f:
moods = json.load(f)
with open("reflections.json", "r") as f:
reflections = json.load(f)
# ---------- UI ----------
st.title("📚 Kalam Comfort")
st.subheader("Find Quranic comfort by emotion 💖")
selected_mood = st.selectbox("How are you feeling today?", list(moods.keys()), index=0)
if st.button("🔁 Show another verse"):
st.rerun()
if selected_mood:
# ----------- Quranic Verse -----------
verse_list = moods[selected_mood]
verse_ref = random.choice(verse_list)
surah_num, ayah_num = verse_ref.split(":")
quran_api = f"https://api.alquran.cloud/v1/ayah/{surah_num}:{ayah_num}/editions/quran-simple,en.asad,ur.jalandhry"
response = requests.get(quran_api)
if response.status_code == 200:
data = response.json()['data']
arabic = data[0]['text']
english = data[1]['text']
urdu = data[2]['text']
surah_info = f"{data[0]['surah']['englishName']} ({data[0]['surah']['name']})"
st.markdown("### 🌙 Quranic Verse")
st.markdown(f"**Surah:** {surah_info} — Ayah {ayah_num}")
st.markdown(f"<div style='font-size:24px; direction: rtl'>{arabic}</div>", unsafe_allow_html=True)
st.markdown(f"**📖 English:** *{english}*")
st.markdown(f"**📖 Urdu:** {urdu}")
else:
st.error("❌ Failed to fetch Quranic verse.")
st.stop()
# ---------- Dua ----------
st.markdown("### 🤲 Dua")
if selected_mood in default_duas:
dua_ar, dua_en, dua_ur = random.choice(default_duas[selected_mood])
st.markdown(f"<div style='font-size:22px; direction: rtl'>{dua_ar}</div>", unsafe_allow_html=True)
st.markdown(f"**English:** {dua_en}")
st.markdown(f"**Urdu:** {dua_ur}")
# ---------- Hadith ----------
st.markdown("### 🌟 Hadith")
if selected_mood in default_hadiths:
had_ar, had_en, had_ur = random.choice(default_hadiths[selected_mood])
st.markdown(f"<div style='font-size:20px; direction: rtl'>{had_ar}</div>", unsafe_allow_html=True)
st.markdown(f"**English:** {had_en}")
st.markdown(f"**Urdu:** {had_ur}")
# ---------- Reflection ----------
st.markdown("### 📝 Your Reflection")
reflection_input = st.text_area("Write your thoughts:", placeholder="How does this verse speak to you today?")
if st.button("💾 Save Reflection"):
reflections[selected_mood] = {
"text": reflection_input,
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M")
}
with open("reflections.json", "w") as f:
json.dump(reflections, f, indent=4)
st.success("Reflection saved.")
if selected_mood in reflections:
last = reflections[selected_mood]
st.markdown("#### 📜 Last Saved Reflection:")
st.markdown(f"**{last['timestamp']}** — {last['text']}")