langchainjs icon indicating copy to clipboard operation
langchainjs copied to clipboard

TypeError: Cannot read properties of undefined (reading 'transcriptBodyRenderer') using YoutubeLoader

Open Annahcj opened this issue 10 months ago • 10 comments

Checked other resources

  • [X] I added a very descriptive title to this issue.
  • [X] I searched the LangChain.js documentation with the integrated search.
  • [X] I used the GitHub search to find a similar question and didn't find it.
  • [X] I am sure that this is a bug in LangChain.js rather than my code.
  • [X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

Example Code

const loader = YoutubeLoader.createFromUrl(url, {
  language: 'en',
  addVideoInfo: true,
});

return loader.load();

Error Message and Stack Trace (if applicable)

Error: Failed to get YouTube video transcription: [YoutubeTranscript] 🚨 TypeError: Cannot read properties of undefined (reading 'transcriptBodyRenderer')
    at YoutubeLoader.load (/Users/annaan/Documents/JS/langchain2/server/node_modules/langchain/dist/document_loaders/web/youtube.cjs:100:19)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Description

I'm using the YoutubeLoader from LangChain to load Youtube transcripts into documents. Getting this error with any youtube URL. This issue comes from the library youtube-transcript which is used under the hood - https://github.com/Kakulukian/youtube-transcript/issues/19 I believe Youtube's API has changed

System Info

Platform: Mac Node version: 18.18.2 npm version: 9.8.1 langchain: ^0.1.31 youtube-transcript: ^1.1.0 youtubei.js: ^9.2.0

Annahcj avatar Apr 05 '24 23:04 Annahcj

Hey there @Annahcj! Nice to see you back. Hope all is well on your end.

Thank you for providing detailed information about the issue you're encountering. The error message you're seeing is typically indicative of a change in the structure of the response from YouTube's API. This could mean that the transcriptBodyRenderer property, which the YoutubeLoader feature in LangChain expects to find, is no longer present in the same location within the response object.

Given that the error is likely within the dependencies (youtube-transcript or youtubei.js), here are some steps you can take to troubleshoot and potentially resolve the issue:

  1. Check for Updates: Make sure that all dependencies are up to date. If there have been changes to YouTube's API, it's possible that these libraries have already released updates to accommodate these changes.

  2. Review Dependency Documentation: Check the documentation for youtube-transcript and youtubei.js for any recent changes or updates that might be relevant to your issue. If YouTube's API has changed, these libraries may have updated their documentation to reflect these changes.

  3. Inspect API Responses: If possible, add some logging to your code to inspect the raw API responses from YouTube. This can help you identify any changes in the structure of the response that might be causing your issue.

  4. Adjust Code According to API Changes: If you identify changes in the API response structure, you may need to adjust your code to correctly handle these changes. This could involve changing how you access certain properties or handle the response data.

  5. Contact Dependency Maintainers: If the issue persists and you're unable to resolve it based on the available documentation, consider reaching out to the maintainers of youtube-transcript and youtubei.js. They may be able to provide further guidance or updates on the issue.

  6. Fallback to Alternative Methods: If the current dependencies do not quickly adapt to the API changes, consider using alternative methods or libraries for fetching YouTube transcripts and metadata as a temporary workaround.

I hope these steps help you in resolving the issue. If you have any further questions or need more assistance, feel free to ask.

Sources

About Dosu

This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

If you want to continue the conversation, start your reply with @dosu-bot.

dosubot[bot] avatar Apr 05 '24 23:04 dosubot[bot]

Same issue here. youtube-transcript or youtubei.js just released a new version and they might change something in their API structure.

tonymanh-dev avatar Apr 07 '24 02:04 tonymanh-dev

having the same issue

siddharthd0 avatar Apr 09 '24 04:04 siddharthd0

Same here

pjsofts avatar Apr 09 '24 08:04 pjsofts

Same here

olefirenko avatar Apr 10 '24 01:04 olefirenko

Having the same issue here as well.

alejandrochacinortega avatar Apr 11 '24 07:04 alejandrochacinortega

For a temporary workaround until this is fixed upstream, you can:

npm i https://github.com/sinedied/youtube-transcript\#a10a073ac325b3b88018f321fa1bc5d62fa69b1c

This will use my fork that use a compatible drop-in code replacement from https://github.com/Kakulukian/youtube-transcript/issues/19, all the code credits goes to the folks there.

When the issue is fixed upstream, you can simply:

npm rm youtube-transcript

and it will return to the upstream version.

sinedied avatar Apr 11 '24 15:04 sinedied

Same issue here with youtube-transcript

prash-murali avatar Apr 12 '24 04:04 prash-murali

For a temporary workaround until this is fixed upstream, you can:

npm i https://github.com/sinedied/youtube-transcript\#a10a073ac325b3b88018f321fa1bc5d62fa69b1c

This will use my fork that use a compatible drop-in code replacement from Kakulukian/youtube-transcript#19, all the code credits goes to the folks there.

When the issue is fixed upstream, you can simply:

npm rm youtube-transcript

and it will return to the upstream version.

Thank you so much @sinedied , it worked.

SahilPulikal avatar Apr 12 '24 17:04 SahilPulikal

For a temporary workaround until this is fixed upstream, you can:

npm i https://github.com/sinedied/youtube-transcript\#a10a073ac325b3b88018f321fa1bc5d62fa69b1c

This will use my fork that use a compatible drop-in code replacement from Kakulukian/youtube-transcript#19, all the code credits goes to the folks there.

When the issue is fixed upstream, you can simply:

npm rm youtube-transcript

and it will return to the upstream version.

Thank you.

artias13 avatar Apr 24 '24 14:04 artias13