Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import pytz | |
from datetime import datetime | |
def ts_to_str(timestamp, timezone): | |
# Create a timezone-aware datetime object from the UNIX timestamp | |
dt = datetime.fromtimestamp(timestamp, pytz.utc) | |
# Convert the timezone-aware datetime object to the target timezone | |
target_timezone = pytz.timezone(timezone) | |
localized_dt = dt.astimezone(target_timezone) | |
# Format the datetime object to the specified string format | |
return localized_dt.strftime('%Y-%m-%d %H:%M:%S (%Z)') | |
def predict(text, request: gr.Request): | |
# Get the IP address from the request object | |
ip_address = request.headers.get('x-forwarded-for', request.client.host) | |
# Call the WorldTimeAPI to get the timezone for the user's IP address | |
response = requests.get(f'https://worldtimeapi.org/api/ip/{ip_address}') | |
time_data = response.json() | |
# Extract the timezone from the API response | |
timezone_str = time_data.get('timezone', 'UTC') | |
# Get the current timestamp and convert it to the user's local time | |
timestamp = datetime.now().timestamp() | |
current_time_local = ts_to_str(timestamp, timezone_str) | |
return { | |
"ip": ip_address, | |
"user_agent": request.headers["user-agent"], | |
"current_time_local": current_time_local, | |
"timezone": timezone_str | |
} | |
demo = gr.Interface(fn=predict, inputs="text", outputs="json") | |
demo.launch() |