Spaces:
Sleeping
Sleeping
File size: 2,180 Bytes
47cb94a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 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
|