Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import pandas as pd | |
from difflib import get_close_matches | |
def fetch_data_to_dataframe(query, limit=50, source="mercadolibre"): | |
if source == "mercadolibre": | |
BASE_URL = "https://api.mercadolibre.com/sites/MLB/search" | |
params = {'q': query, 'limit': limit} | |
response = requests.get(BASE_URL, params=params) | |
if response.status_code == 200: | |
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'] | |
return df | |
return pd.DataFrame() | |
def filtrar_itens_similares(df, termo_pesquisa, limite=5): | |
titulos = df['Title'].tolist() | |
titulos_similares = get_close_matches(termo_pesquisa, titulos, n=limite, cutoff=0.1) | |
df_filtrado = df[df['Title'].isin(titulos_similares)] | |
return df_filtrado | |
def integrated_app(query): | |
df = fetch_data_to_dataframe(query, 50, "mercadolibre") | |
if df.empty: | |
return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame() | |
df_similares = filtrar_itens_similares(df, query) | |
if df_similares.empty: | |
return "Nenhum item similar encontrado.", pd.DataFrame() | |
else: | |
median_price = df_similares['Price'].median() | |
return f"Preço Mediano dos Itens Similares: {median_price}", df_similares | |
iface = gr.Interface(fn=integrated_app, | |
inputs=gr.Textbox(label="Digite sua consulta"), | |
outputs=[gr.Textbox(label="Preço Mediano"), gr.Dataframe(label="Resultados da Pesquisa")], | |
title="Análise Integrada de Bens", | |
description="Esta aplicação busca dados no Mercado Livre e filtra para encontrar itens com nomes similares ao termo de pesquisa, oferecendo uma análise de preços e características desses itens.") | |
iface.launch() | |