File size: 5,755 Bytes
d61af77
 
5fc7221
d61af77
c6ebf38
 
5fc7221
 
 
 
 
 
 
 
 
 
 
 
 
8916b04
c6ebf38
 
d61af77
 
 
 
c6ebf38
 
d61af77
79f91c5
d61af77
79f91c5
c6ebf38
fa17637
5fc7221
 
 
 
 
fa17637
 
 
 
 
 
 
0804605
 
fa17637
0804605
fa17637
0804605
 
d796ca3
0804605
 
 
 
 
 
 
d796ca3
0804605
fa17637
 
 
5fc7221
 
 
 
 
c6ebf38
 
79f91c5
c6ebf38
d796ca3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d61af77
5fc7221
8916b04
 
44dc108
 
8916b04
 
47e0838
d61af77
44dc108
5fc7221
47e0838
d61af77
c6ebf38
d61af77
79f91c5
5fc7221
4d2567b
8916b04
c6ebf38
79f91c5
 
 
 
 
c6ebf38
8916b04
c6ebf38
4d2567b
 
 
 
e83b832
 
 
 
 
 
 
 
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import gradio as gr
import requests
from geopy.geocoders import Nominatim

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

# Initialize Geolocator
geolocator = Nominatim(user_agent="astrology_checker")

# Function to fetch latitude and longitude based on location
def get_lat_lon(location):
    location_info = geolocator.geocode(location)
    if location_info:
        lat = location_info.latitude
        lon = location_info.longitude
        return lat, lon
    else:
        return None, None

# 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, location, tz):
    lat, lon = get_lat_lon(location)
    if lat is None or lon is None:
        return gr.Markdown("Location not found. Please check the location and try again.")
    
    response = fetch_astrology_data(f"dosha/{dosha_type}", dob, tob, lat, lon, tz)
    if isinstance(response, str):
        return gr.Markdown(response)
    
    readable_response = f"""
    ### {dosha_type.replace('-', ' ').title()} Analysis for {name}
    
    **Dosha Presence:** {'Yes' if response.get('is_dosha_present', False) else 'No'}
    **Score:** {response.get('score', 'N/A')}%
    
    **Details:**
    """
    
    for key, value in response.items():
        readable_response += f"\n- **{key.replace('_', ' ').title()}**: "
        if isinstance(value, dict):
            for sub_key, sub_value in value.items():
                readable_response += f"\n  - {sub_key.replace('_', ' ').title()}: {sub_value}"
        elif isinstance(value, list):
            for item in value:
                readable_response += f"\n  - {item}"
        else:
            readable_response += f"{value}"
    
    return gr.Markdown(readable_response)

# Function to check Dasha
def check_dasha(dasha_type, name, dob, tob, location, tz):
    lat, lon = get_lat_lon(location)
    if lat is None or lon is None:
        return gr.Markdown("Location not found. Please check the location and try again.")
    
    response = fetch_astrology_data(f"dashas/{dasha_type}", dob, tob, lat, lon, tz)
    if isinstance(response, str):
        return gr.Markdown(response)
    
    readable_response = f"""
    ### {dasha_type.replace('-', ' ').title()} Analysis for {name}
    
    **Details:**
    """
    
    for key, value in response.items():
        readable_response += f"\n- **{key.replace('_', ' ').title()}**: "
        if isinstance(value, dict):
            for sub_key, sub_value in value.items():
                readable_response += f"\n  - {sub_key.replace('_', ' ').title()}: {sub_value}"
        elif isinstance(value, list):
            for item in value:
                readable_response += f"\n  - {item}"
        else:
            readable_response += f"{value}"
    
    return gr.Markdown(readable_response)

# Gradio UI with location input for latitude/longitude
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():
        location = gr.Textbox(label="Location (City or Address)", placeholder="Enter your city or address")
        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=[dosha_type, name, dob, tob, location, 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()