node-ytdl-core
node-ytdl-core copied to clipboard
ytdl.getInfo(...).videoDetails.title does not always honor lang
ytdl.getInfo does not always return the correct localized title even when it is provided the lang option. I created a gist to demonstrate this using the localized response from ytpl as a reference and using the videos in this playlist: PLB6Mfu4v-kdUKpNVGykSxx5CpnTP2_rcB
(in this example playlistResponse comes from ytpl)
As I dug into the issue further, I discovered that the correct localized title is stored in the response object, but it is buried.
This is where the expected values of .videoDetails.title and .videoDetails.description are located.
.videoDetails.title should be the value of .response.contents.twoColumnWatchNextResults.results.results.contents[0].videoPrimaryInfoRenderer.title.runs[0].text

.videoDetails.description should (probably) be the value of .response.contents.twoColumnWatchNextResults.results.results.contents[1].videoSecondaryInfoRenderer.description.runs[0].text
(update .response.contents.twoColumnWatchNextResults.results.results.contents[1].videoSecondaryInfoRenderer.description.runs contains an array of the lines in the localized description)
I created another gist to demonstrate using this workaround for the title field.
TLDR; the correct localized title and description are being fetched by ytdl.getInfo, but ytdl.getInfo(...).videoDetails doesn't contain them, and instead, they are buried in the response object.