Astro_Info / app.py
arpit13's picture
Update app.py
dfd6008 verified
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)
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, lat, lon, tz):
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)
# Function to check Extended Horoscope
def check_extended_horoscope(horoscope_type, name, dob, tob, lat, lon, tz):
response = fetch_astrology_data(f"extended-horoscope/{horoscope_type}", dob, tob, lat, lon, tz)
if isinstance(response, str):
return gr.Markdown(response)
readable_response = f"""
### {horoscope_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)
# Function to check Horoscope(Kundali)
def check_horoscope(horoscope_kundali_type, name, dob, tob, lat, lon, tz):
response = fetch_astrology_data(f"horoscope/{horoscope_kundali_type}", dob, tob, lat, lon, tz)
if isinstance(response, str):
return gr.Markdown(response)
readable_response = f"""
### {horoscope_kundali_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 improvements
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# 🪐 Astrology Checker")
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=23)
lon = gr.Number(label="Longitude", value=78)
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("## 🌙 Extended Horoscope")
with gr.Row():
create_button("Find Moon Sign", "find-moon-sign", check_extended_horoscope)
create_button("Find Sun Sign", "find-sun-sign", check_extended_horoscope)
create_button("Find Ascendant", "find-ascendant", check_extended_horoscope)
create_button("Current Sade Sati", "current-sade-sati", check_extended_horoscope)
create_button("Extended Kundli Details", "extended-kundli-details", check_extended_horoscope)
create_button("Sade Sati Table", "sade-sati-table", check_extended_horoscope)
create_button("Friendship", "friendship", check_extended_horoscope)
create_button("Kp Houses", "kp-houses", check_extended_horoscope)
create_button("Kp Planets", "kp-planets", check_extended_horoscope)
create_button("Gem Suggestion", "gem-suggestion", check_extended_horoscope)
create_button("Numero Table", "numero-table", check_extended_horoscope)
create_button("Rudraksh Suggestion", "rudraksh-suggestion", check_extended_horoscope)
create_button("Varshapal Details", "varshapal-details", check_extended_horoscope)
create_button("Varshapal Month Chart", "varshapal-month-chart", check_extended_horoscope)
create_button("Varshapal Year Chart", "varshapal-year-chart", check_extended_horoscope)
create_button("Yoga List", "yoga-list", check_extended_horoscope)
gr.Markdown("## 💫 Horoscope")
with gr.Row():
create_button("Planet Details", "planet-details", check_horoscope)
create_button("Ascendant Report", "ascendant-report", check_horoscope)
create_button("Planet Report", "planet-report", check_horoscope)
create_button("Personal Characteristics", "personal-characteristics", check_horoscope)
gr.Markdown("### 🔍 Enter your details above and click the relevant button to analyze your astrology report!")
demo.launch()