Open AlexanderBooth84 opened 1 month ago
Hi. Yes, another barrier from Youtube. There is a work around to this by spoofing an alternative client to the standard web client. I will push a PR soon.
PR #66 published. Worked when testing. Let me know if it helps.
The video downloads seem to work ok but only if you use a cookie and user-agent.
However the search functionality seems to be broken.
You can see this with the example application that yields the following.
node examples/search_test.js
Session status: OK ()
Search for 100 videos with query: "soccer"
TypeError: Cannot read properties of undefined (reading 'twoColumnSearchResultsRenderer')
at Search.fetch (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/lib/search.js:290:36)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async runVideos (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:42:2)
at async run (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:107:3)
Raw search json saved to ./examples/searchVideos.json
Search status: OK (No results)
Found 0 videos for "soccer"
Search info/videos saved to ./examples/search_videos.json
Search for 30 playlists
TypeError: Cannot read properties of undefined (reading 'twoColumnSearchResultsRenderer')
at Search.fetch (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/lib/search.js:290:36)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async runPlaylists (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:62:2)
at async run (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:108:3)
Raw search json saved to ./examples/searchPlaylists.json
Search status: OK (No results)
Found 0 results for "soccer"
Search info/results saved to ./examples/search_playlists.json
Search for 50 channels
TypeError: Cannot read properties of undefined (reading 'twoColumnSearchResultsRenderer')
at Search.fetch (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/lib/search.js:290:36)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async runChannels (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:82:2)
at async run (/Users/russt/dev/src/zerolabs/gizmos/src/modules/ytcog/node_modules/ytcog/examples/search_test.js:109:3)
Raw search json saved to ./examples/searchChannels.json
Search status: OK (No results)
Found 0 channels for "soccer"
Search info/channels saved to ./examples/search_channels.json
Session complete.
Around the end of last month, Youtube started making it increasingly necessary to have a logged-in cookie to access video info. It is not a problem unique to ytcog.
As for search, there are quite a lot of similar problems in this project that I will patch shortly in v2.6
In the meantime, I am working on a new innertube project that will eventually replace this project.
Thanks for the update. Your efforts are much appreciated. Great project.
I'm trying to download 1080p videos using the latest release but it seems to silently fail falling back to the 360p version no matter what settings I use.
Using the video_test.js example with no config changes but adding some console logging to the failed function in dl.js I'm seeing:
I can't see how the recent changes would cause this so perhaps something has changed at the YT end?