import gradio as gr import requests import pandas as pd from scipy import stats def fetch_data_to_dataframe(query, limit=50): BASE_URL = "https://api.mercadolibre.com/sites/MLB/search" params = {'q': query, 'limit': limit} response = requests.get(BASE_URL, params=params) data = response.json() if 'results' in data: items = data['results'] df = pd.DataFrame(items) df = df[['title', 'price', 'currency_id', 'condition', 'permalink']] df.columns = ['Title', 'Price', 'Currency', 'Condition', 'Link'] # Calculate z-scores of `df['Price']` df['z_score'] = stats.zscore(df['Price']) # Filter out rows where z-score is greater than 2 df_filtered = df[df['z_score'] <= 2].drop(columns=['z_score']) median_price = df_filtered['Price'].median() return median_price, df_filtered else: return 0, pd.DataFrame() def gradio_app(query): median_price, df = fetch_data_to_dataframe(query, 50) return median_price, df iface = gr.Interface(fn=gradio_app, inputs=gr.Textbox(label="Insira a consulta de pesquisa"), outputs=[gr.Textbox(label="Preço mediano"), gr.Dataframe(label="Resultados da pesquisa")], title="Coletor de dados do Mercado Livre", description="Este aplicativo busca dados do Mercado Livre com base na sua consulta de pesquisa e calcula o preço médio dos resultados.") iface.launch()