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

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #50539
    Aline Costa
    Participante

      Prezados, ao utilizar o código:

      infos = video_loader.load()
      infos

      no projeto 1, recebo o erro :

      ExpatError: no element found: line 1, column 0

      Poderiam me ajudar a solucionar esse erro?

      #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.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.