File size: 5,770 Bytes
304b31b
 
 
 
 
 
 
 
16d2f94
304b31b
 
3dde9fc
304b31b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3dde9fc
304b31b
3dde9fc
304b31b
 
 
 
 
 
3dde9fc
304b31b
 
 
 
 
 
3dde9fc
45c97a4
304b31b
 
 
 
 
 
45c97a4
304b31b
 
 
 
 
45c97a4
 
304b31b
3dde9fc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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"],
    "sad": ["94:5", "93:6", "65:7"],
    "hopeless": ["39:53", "12:87", "3:139"],
    "grateful": ["14:7", "31:12"],
    "lonely": ["2:186", "9:40"],
    "angry": ["3:134", "41:34"],
    "lost": ["93:7", "6:122"],
    "tired": ["94:6", "3:200"],
    "afraid": ["8:46", "33:3"]
}

if not os.path.exists("moods.json"):
    with open("moods.json", "w") as f:
        json.dump(default_moods, f, indent=4)
with open("moods.json", "r") as f:
    moods = json.load(f)

if not os.path.exists("reflections.json"):
    with open("reflections.json", "w") as f:
        json.dump({}, f)
with open("reflections.json", "r") as f:
    reflections = json.load(f)

if not os.path.exists(".env"):
    st.warning("⚠️ Optional: .env file not found. It's not required unless using secrets.")

# ---------- 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:
    verse_list = moods[selected_mood]
    verse_ref = random.choice(verse_list)
    surah_num, ayah_num = verse_ref.split(":")

    # 1. Quran Arabic, English, Urdu
    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 text.")
        st.stop()

    # 2. Tafsir (Urdu)
    tafsir_api = f"https://api.quranenc.com/v1/translation/tafsir?language=ur&verse_id={surah_num}:{ayah_num}"
    tafsir_text = "Tafsir not available."
    try:
        tafsir_response = requests.get(tafsir_api)
        if tafsir_response.status_code == 200:
            tafsir_text = tafsir_response.json().get("result", {}).get("tafsir", "Tafsir not found.")
    except Exception as e:
        tafsir_text = "Could not fetch tafsir."

    st.markdown("### 📘 Tafsir (Urdu)")
    st.info(tafsir_text)

    # 3. Dua (Mood-based, bilingual)
    dua_map = {
        "anxious": "اللهم اجعل قلبي مطمئنًا بذكرك\n**O Allah, make my heart tranquil with Your remembrance.**\n**یا اللہ! میرے دل کو اپنے ذکر سے اطمینان دے۔**",
        "sad": "اللهم اجبر قلبي جبرا يتعجب له أهل السماوات والأرض\n**O Allah, mend my heart in a way that amazes the heavens and earth.**\n**یا اللہ! میرے دل کو ایسا سہارا دے جو زمین و آسمان کو حیران کر دے۔**",
        "hopeless": "رب لا تذرني فردا وأنت خير الوارثين\n**My Lord, do not leave me alone — You are the Best Inheritor.**\n**یا رب! مجھے تنہا نہ چھوڑ، تو بہترین وارث ہے۔**",
        "grateful": "اللهم اجعلني لك شَكُورًا\n**O Allah, make me deeply grateful to You.**\n**یا اللہ! مجھے شکر گزار بنا دے۔**",
        "lonely": "اللهم كن معي حين لا يكون أحد بجانبي\n**O Allah, be with me when no one else is.**\n**یا اللہ! جب کوئی ساتھ نہ ہو، تو میرے ساتھ ہو۔**",
        "angry": "اللهم ارزقني الحلم عند الغضب\n**O Allah, grant me forbearance when I’m angry.**\n**یا اللہ! غصے میں مجھے برداشت عطا فرما۔**",
        "lost": "اللهم دلّني على صراطك المستقيم\n**O Allah, guide me to Your straight path.**\n**یا اللہ! مجھے اپنے سیدھے راستے پر چلا۔**",
        "tired": "اللهم جدد طاقتي، وارزقني راحة البال\n**O Allah, renew my energy and grant me peace of mind.**\n**یا اللہ! میری طاقت کو تازہ کر اور مجھے ذہنی سکون عطا فرما۔**",
        "afraid": "ربِّ أعني ولا تعن عليّ\n**My Lord, support me and not against me.**\n**میرے رب! میری مدد فرما، میرے خلاف نہ ہو۔**"
    }

    st.markdown("### 🤲 Dua (English + Urdu)")
    st.markdown(dua_map.get(selected_mood, "May Allah ease your situation."))

    # 4. Reflections
    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']}")