bens_moveis / app.py
fschwartzer's picture
Update app.py
78ac961 verified
raw
history blame
2.04 kB
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()