AgentesInteligentes / youtube.py
GalvaoFilho's picture
Upload 3 files
47cb94a verified
import os
from googleapiclient.discovery import build
# Obter a chave da API
YOUTUBE_API_KEY = os.getenv("YOUTUBE_API_KEY")
if not YOUTUBE_API_KEY:
raise ValueError("A chave da API do YouTube não foi encontrada nas variáveis de ambiente.")
# Inicializar o cliente YouTube
def get_youtube_client(chave_api):
return build("youtube", "v3", developerKey=chave_api)
youtube_client = get_youtube_client(YOUTUBE_API_KEY)
def pesquisar_videos_youtube(consulta, num_resultados=5):
"""
Pesquisa vídeos no YouTube e retorna os resultados, excluindo Shorts.
Args:
consulta (str): A consulta de pesquisa.
num_resultados (int, opcional): Número máximo de vídeos. Padrão: 5.
Returns:
list: Lista de dicionários contendo título, descrição, URL e canal.
"""
try:
requisicao = youtube_client.search().list(
part="snippet",
maxResults=num_resultados * 2, # Solicita mais para compensar filtros
q=consulta,
type="video",
videoDuration="medium", # Filtra vídeos com pelo menos 4 minutos
order="relevance"
)
resposta = requisicao.execute()
except Exception as e:
print(f"Erro ao buscar vídeos no YouTube: {e}")
return []
videos = []
for item in resposta.get("items", []):
if item["id"]["kind"] == "youtube#video":
titulo = item["snippet"]["title"]
descricao = item["snippet"]["description"]
url = f"https://www.youtube.com/watch?v={item['id']['videoId']}"
canal = item["snippet"]["channelTitle"]
# Remover Shorts pelo título e descrição
if "Shorts" not in titulo and "Shorts" not in descricao:
videos.append({
"Título": titulo,
"Descrição": descricao,
"URL": url,
"Canal": canal
})
# Para evitar retornar menos vídeos do que o necessário
if len(videos) >= num_resultados:
break
return videos