Spaces:
Running
Running
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()
|