Responder a: ExpatError ao carregar infos do video do youtube no projeto1

Home Fóruns Domine LLMs com LangChain ExpatError ao carregar infos do video do youtube no projeto1 Responder a: ExpatError ao carregar infos do video do youtube no projeto1

#50543
Gabriel Alves
Moderador

    Olá Aline!

    Para evitar esse erro, ao invés de executar esses códigos:

    video_loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=II28i__Tf3M", language = ["pt", "pt-BR", "en"],)
    infos = video_loader.load()
    transcricao = infos[0].page_content

    Use esse código abaixo:

    from youtube_transcript_api import YouTubeTranscriptApi
    from youtube_transcript_api.formatters import TextFormatter
    
    # ID do vídeo do YouTube. Verifique pela URL, é o que vem logo após /watch?v=
    id_video = "II28i__Tf3M"
    
    # Busca a transcrição, tentando em português e inglês
    result = YouTubeTranscriptApi().fetch(id_video, languages=["pt", "pt-BR", "en"])
    
    #Formata a transcrição como texto
    formatter = TextFormatter()
    transcricao = formatter.format_transcript(result)
    
    # opcional: Substitui quebras de linha por espaços para manter tudo em uma só linha (Se não quiser isso, remova essa linha abaixo)
    transcricao = transcricao.replace('\n', ' ')
    print(transcricao)
    

    Importante: para isso é necessário que use pelo menos a versão 1.1.0 do youtube-transcript-api, o que pode ser garantido executando esse comando antes dos imports em seu código: !pip install youtube-transcript-api==1.1.0

    (tudo isso já está atualizado no Colab dessa seção, pode conferir aqui se preferir)

     

    Recentemente, o YouTube passou a exigir o uso de um novo tipo de token, o que afeta diretamente bibliotecas que dependem da API de transcrição, como a youtube-transcript-api (mais detalhes aqui). Para lidar com isso, é necessário utilizar uma versão atualizada dessa biblioteca.

    Porém, a biblioteca Langchain ainda não é compatível com a nova versão da youtube-transcript-api. Internamente, o YoutubeLoader do Langchain utiliza essa biblioteca, mas está vinculado a uma versão anterior, o que leva a erros de execução ao tentar obter a transcrição de vídeos recentes. Até o momento, a equipe do Langchain ainda não anunciou uma previsão de atualização para resolver essa incompatibilidade.

    Por esse motivo nós decidimos achar um modo de implementar o processo de forma direta, utilizando os métodos da própria biblioteca youtube-transcript-api, o que nos permite maior controle e compatibilidade com a versão mais recente.

    Além disso, utilizamos a classe TextFormatter, que ajuda a extrair a transcrição limpa, sem timestamps ou metadados (somente o texto). Para tornar o texto ainda mais fluido, como adicional nós removemos as quebras de linha (\n), unificando toda a transcrição em um único bloco contínuo, igual como é obtido quando usava pelo método YoutubeLoader do Langchain.