File size: 4,391 Bytes
d61af77
 
 
c6ebf38
 
8916b04
c6ebf38
 
d61af77
 
 
 
c6ebf38
 
d61af77
79f91c5
d61af77
79f91c5
c6ebf38
fa17637
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6ebf38
 
 
79f91c5
c6ebf38
36096df
d61af77
8916b04
 
 
44dc108
 
8916b04
 
47e0838
d61af77
44dc108
fa17637
 
47e0838
d61af77
c6ebf38
d61af77
79f91c5
 
4d2567b
8916b04
c6ebf38
79f91c5
 
 
 
 
c6ebf38
8916b04
c6ebf38
4d2567b
 
 
 
36096df
 
 
 
 
 
 
 
c6ebf38
8916b04
fa17637
c6ebf38
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
import gradio as gr
import requests

API_KEY = "d6cf6f2e-301e-5f63-a988-b0a3aefd0896"

# Function to fetch astrology data
def fetch_astrology_data(endpoint, dob, tob, lat, lon, tz):
    url = f"https://api.vedicastroapi.com/v3-json/{endpoint}?dob={dob}&tob={tob}&lat={lat}&lon={lon}&tz={tz}&api_key={API_KEY}&lang=en"
    response = requests.get(url)
    
    if response.status_code == 200:
        data = response.json()
        if data.get("status") == 200 and "response" in data:
            return data["response"]
        else:
            return f"Invalid response from API: {data.get('message', 'No message provided')}"
    else:
        return f"Error fetching data: {response.status_code} - {response.text}"

# Function to check Dosha
def check_dosha(dosha_type, name, dob, tob, lat, lon, tz):
    response = fetch_astrology_data(f"dosha/{dosha_type}", dob, tob, lat, lon, tz)
    if isinstance(response, str):
        return gr.Markdown(response)
    
    factors = response.get("factors", {})
    dosha_present = response.get("is_dosha_present", False)
    bot_response = response.get("bot_response", "No information available")
    score = response.get("score", "N/A")
    
    readable_response = f"""
    ### {dosha_type.replace('-', ' ').title()} Analysis for {name}
    
    **Dosha Presence:** {'Yes' if dosha_present else 'No'}
    **Score:** {score}%
    
    **Detailed Analysis:**
    - **Moon Influence:** {factors.get('moon', 'Not mentioned')}
    - **Saturn Influence:** {factors.get('saturn', 'Not mentioned')}
    - **Rahu Influence:** {factors.get('rahu', 'Not mentioned')}
    
    **Astrological Suggestion:** {bot_response}
    """
    return gr.Markdown(readable_response)

# Function to check Dasha
def check_dasha(dasha_type, name, dob, tob, lat, lon, tz):
    response = fetch_astrology_data(f"dashas/{dasha_type}", dob, tob, lat, lon, tz)
    if isinstance(response, str):
        return gr.Markdown(response)
    
    return gr.Markdown(f"### {dasha_type.replace('-', ' ').title()} Analysis for {name}\n\n" + str(response))

# Gradio UI with improvements
with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown("# 🪐 Astrology Checker - Find Your Dosha & Dasha 🪐")
    
    with gr.Row():
        name = gr.Textbox(label="Name", placeholder="Enter your name")
        dob = gr.Textbox(label="DOB (DD/MM/YYYY)", placeholder="21/04/2021")
        tob = gr.Textbox(label="Time of Birth (HH:MM)", placeholder="11:40")
    
    with gr.Row():
        lat = gr.Number(label="Latitude", value=11)
        lon = gr.Number(label="Longitude", value=77)
        tz = gr.Number(label="Timezone (e.g., 5.5 for India)", value=5.5)
    
    result = gr.Markdown()
    
    def create_button(label, dosha_type, fn):
        return gr.Button(label, variant="primary").click(fn, inputs=[gr.State(dosha_type), name, dob, tob, lat, lon, tz], outputs=result)
    
    gr.Markdown("## 🌟 Dosha Analysis")
    with gr.Row():
        create_button("Mangal Dosh", "mangal-dosh", check_dosha)
        create_button("Kaalsarp Dosh", "kaalsarp-dosh", check_dosha)
        create_button("Manglik Dosh", "manglik-dosh", check_dosha)
        create_button("Pitra Dosh", "pitra-dosh", check_dosha)
        create_button("Papasamaya", "papasamaya", check_dosha)
    
    gr.Markdown("## 🔮 Dasha Analysis")
    with gr.Row():
        create_button("Mahadasha", "maha-dasha", check_dasha)
        create_button("Mahadasha Predictions", "maha-dasha-predictions", check_dasha)
        create_button("Antardasha", "antar-dasha", check_dasha)
        create_button("Char Dasha Current", "char-dasha-current", check_dasha)
        create_button("Char Dasha Main", "char-dasha-main", check_dasha)
        create_button("Char Dasha Sub", "char-dasha-sub", check_dasha)
        create_button("Current Mahadasha Full", "current-mahadasha-full", check_dasha)
        create_button("Current Mahadasha", "current-mahadasha", check_dasha)
        create_button("Paryantar Dasha", "paryantar-dasha", check_dasha)
        create_button("Specific Dasha", "specific-sub-dasha", check_dasha)
        create_button("Yogini Dasha Main", "yogini-dasha-main", check_dasha)
        create_button("Yogini Dasha Sub", "yogini-dasha-sub", check_dasha)
    
    gr.Markdown("### 🔍 Enter your details above and click the relevant button to analyze your astrology report!")
    
    demo.launch()