Spaces:
Runtime error
Runtime error
import gradio as gr | |
import json | |
from fuzzywuzzy import process | |
import requests | |
url = "https://csrlc421nb.execute-api.us-east-2.amazonaws.com/dev/predict" | |
# Load stations data from the JSON file | |
with open('stations.json') as f: | |
stations_data = json.load(f) | |
stations = stations_data['stations'] | |
# Create a mapping from station name to station ID | |
station_name_to_id = {station['name']: station['station_id'] for station in stations} | |
# Define a function to find the closest matching station | |
def find_station(user_input): | |
# Use fuzzy matching to find the top 3 closest station names | |
matches = process.extract(user_input, station_name_to_id.keys(), limit=3) | |
# If the best match has a score of 90 or above, we assume it's a good match | |
if matches[0][1] >= 90: | |
best_match = matches[0][0] | |
station_id = station_name_to_id[best_match] | |
response = requests.get(url, params={"station_id": station_id}) | |
return response.json() | |
# If ambiguous, return suggestions | |
suggestions = [match[0] for match in matches] | |
return f"Did you mean one of these stations? {', '.join(suggestions)}" | |
# Create Gradio interface | |
station_input = gr.Textbox(label="Enter Station Name") # Use gr.Textbox for input | |
output_text = gr.Textbox(label="Station ID or Suggestions") # Use gr.Textbox for output | |
# Launch the Gradio interface | |
gr.Interface(fn=find_station, inputs=station_input, outputs=output_text, title="Ebike Finder").launch() |