Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -33,6 +33,89 @@ def get_current_time_in_timezone(timezone: str) -> str:
|
|
| 33 |
except Exception as e:
|
| 34 |
return f"Error fetching time for timezone '{timezone}': {str(e)}"
|
| 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
final_answer = FinalAnswerTool()
|
| 38 |
|
|
|
|
| 33 |
except Exception as e:
|
| 34 |
return f"Error fetching time for timezone '{timezone}': {str(e)}"
|
| 35 |
|
| 36 |
+
@tool
|
| 37 |
+
def get_movie_recommendations(genre: str = "", year: str = "", actor: str = "") -> str:
|
| 38 |
+
"""Obtém recomendações de filmes com base nos critérios fornecidos
|
| 39 |
+
Args:
|
| 40 |
+
genre: Gênero do filme (ex: ação, comédia, drama)
|
| 41 |
+
year: Ano de lançamento ou década (ex: 2023, 1990s)
|
| 42 |
+
actor: Nome de um ator ou atriz presente no filme
|
| 43 |
+
"""
|
| 44 |
+
try:
|
| 45 |
+
# Para este exemplo, usaremos a API pública do The Movie Database (TMDb)
|
| 46 |
+
# Você precisaria registrar-se para obter uma chave de API gratuita
|
| 47 |
+
api_key = "sua_chave_api_tmdb" # Substitua pela sua chave
|
| 48 |
+
base_url = "https://api.themoviedb.org/3"
|
| 49 |
+
|
| 50 |
+
# Construir os parâmetros de consulta
|
| 51 |
+
params = {
|
| 52 |
+
"api_key": api_key,
|
| 53 |
+
"language": "pt-BR",
|
| 54 |
+
"sort_by": "popularity.desc",
|
| 55 |
+
"include_adult": "false",
|
| 56 |
+
"page": 1
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
# Adicionar filtragens com base nos argumentos fornecidos
|
| 60 |
+
if genre:
|
| 61 |
+
# Converter nome do gênero para ID - simplificado para o exemplo
|
| 62 |
+
genre_map = {"ação": 28, "comédia": 35, "drama": 18, "ficção científica": 878}
|
| 63 |
+
genre_id = genre_map.get(genre.lower())
|
| 64 |
+
if genre_id:
|
| 65 |
+
params["with_genres"] = genre_id
|
| 66 |
+
|
| 67 |
+
if year:
|
| 68 |
+
if year.endswith("s"): # Década como "1990s"
|
| 69 |
+
decade = year[:-1] # Remove o 's'
|
| 70 |
+
params["primary_release_date.gte"] = f"{decade}-01-01"
|
| 71 |
+
params["primary_release_date.lte"] = f"{int(decade) + 9}-12-31"
|
| 72 |
+
else: # Ano específico
|
| 73 |
+
params["primary_release_year"] = year
|
| 74 |
+
|
| 75 |
+
if actor:
|
| 76 |
+
# Para simplicidade, assumimos que fornecemos o ID do ator
|
| 77 |
+
# Em uma implementação real, você faria uma busca pelo nome do ator primeiro
|
| 78 |
+
actor_search_url = f"{base_url}/search/person"
|
| 79 |
+
actor_params = params.copy()
|
| 80 |
+
actor_params["query"] = actor
|
| 81 |
+
actor_response = requests.get(actor_search_url, params=actor_params)
|
| 82 |
+
actor_data = actor_response.json()
|
| 83 |
+
|
| 84 |
+
if actor_data.get("results") and len(actor_data["results"]) > 0:
|
| 85 |
+
actor_id = actor_data["results"][0]["id"]
|
| 86 |
+
params["with_cast"] = actor_id
|
| 87 |
+
|
| 88 |
+
# Fazer a requisição à API
|
| 89 |
+
endpoint = f"{base_url}/discover/movie"
|
| 90 |
+
response = requests.get(endpoint, params=params)
|
| 91 |
+
data = response.json()
|
| 92 |
+
|
| 93 |
+
# Processar e formatar os resultados
|
| 94 |
+
if not data.get("results"):
|
| 95 |
+
return "Nenhum filme encontrado com esses critérios."
|
| 96 |
+
|
| 97 |
+
movies = data["results"][:5] # Limitar a 5 recomendações
|
| 98 |
+
|
| 99 |
+
recommendations = f"Aqui estão algumas recomendações de filmes para você:\n\n"
|
| 100 |
+
for i, movie in enumerate(movies, 1):
|
| 101 |
+
title = movie.get("title", "Título desconhecido")
|
| 102 |
+
release_date = movie.get("release_date", "Data desconhecida")
|
| 103 |
+
if release_date:
|
| 104 |
+
release_year = release_date.split("-")[0]
|
| 105 |
+
else:
|
| 106 |
+
release_year = "Ano desconhecido"
|
| 107 |
+
|
| 108 |
+
rating = movie.get("vote_average", "Sem avaliação")
|
| 109 |
+
overview = movie.get("overview", "Sem descrição disponível.")
|
| 110 |
+
|
| 111 |
+
recommendations += f"{i}. {title} ({release_year}) - {rating}/10\n"
|
| 112 |
+
recommendations += f" {overview[:150]}...\n\n"
|
| 113 |
+
|
| 114 |
+
return recommendations
|
| 115 |
+
|
| 116 |
+
except Exception as e:
|
| 117 |
+
return f"Erro ao buscar recomendações de filmes: {str(e)}"
|
| 118 |
+
|
| 119 |
|
| 120 |
final_answer = FinalAnswerTool()
|
| 121 |
|