PerformanC / NodeLink

Performant LavaLink alternative written with Node.Js
BSD 2-Clause "Simplified" License
38 stars 23 forks source link

[BUG]: Cannot load Youtube Music Playlist #32

Closed gavenda closed 6 months ago

gavenda commented 6 months ago

NodeLink version

2.0.0

Description

This only happens whenever I try to load a Youtube Music playlist.

TypeError: Cannot read properties of undefined (reading 'playlist') 
at Object.loadFrom (file:///home/enda/nodelink/src/sources/youtube.js:324:59) 
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Server.requestHandler (file:///home/enda/nodelink/src/connection/handler.js:402:118)

Client

Moonlink.js 3.5.5

Steps to reproduce

Load a Youtube Music playlist.

Example code

No response

Confirmations

Code of Conduct

ThePedroo commented 6 months ago

Thanks for reporting. Could you provide the URL used to reproduce this issue?

gavenda commented 6 months ago

Thanks for reporting. Could you provide the URL used to reproduce this issue?

Here: https://music.youtube.com/playlist?list=PLgyCoOgYCO0UfILPMjHjpXQ9hnFtdvr1b

ThePedroo commented 6 months ago

Fix landed on https://github.com/PerformanC/NodeLink/commit/b2a3edcb9435ce7fbf76405bd735cdcb6eb0ea08. If you can still reproduce it, please re-open with complete logs. Thanks!

gavenda commented 6 months ago

Can still reproduce, this time its a different error:

TypeError: Cannot read properties of undefined (reading 'tabbedRenderer')
  at Object.loadFrom (file:///home/enda/nodelink/src/sources/youtube.js:324:109)
  at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
  at async Server.requestHandler (file:///home/enda/nodelink/src/connection/handler.js:402:118)
ThePedroo commented 6 months ago

Mind sharing the entire log? Sensitive information is redacted by default

gavenda commented 6 months ago

Mind sharing the entire log? Sensitive information is redacted by default

> @ start /home/enda/nodelink
> node --dns-result-order=ipv4first --openssl-legacy-provider src/connection/index.js

[websocket]: Listening on port 2333.
[websocket]: Moonlink@3.5.5 client connected to NodeLink.
[youtube]: Unrecommended option "bypass age-restricted" is enabled.
[youtube]: Fetching deciphering functions...
[youtube]: Successfully fetched deciphering functions.
[version]: Received a request from client.
 Headers: {"host":"REDACTED","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
[info]: Received a request from client.
 Headers: {"host":"REDACTED","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
[websocket]: Moonlink@3.5.5 client connected to NodeLink.
[version]: Received a request from client.
 Headers: {"host":"REDACTED","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
[info]: Received a request from client.
 Headers: {"host":"REDACTED","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
[loadtracks]: Received a request from client.
 Params: "/v4/loadtracks"
 Headers: {"host":"REDACTED","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
[loadTracks]: Loading playlist from YouTube Music: https://music.youtube.com/playlist?list=PLgyCoOgYCO0VTFVMIgEdiGOnvj1xHj82N
[voice]: Received a request from client.
 Params: "/v4/sessions/dR1DPPY69MWJF1r1/players/369435836627812352"
 Headers: {"host":"REDACTED","transfer-encoding":"chunked","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
 Body: {"voice":{"sessionId":"90d6aabc24f788d01f7fc43da5d4e7d3","endpoint":"japan9477.discord.media:443","token":"04c55db9312fe192"}}
[voice]: Received a request from client.
 Params: "/v4/sessions/dR1DPPY69MWJF1r1/players/369435836627812352"
 Headers: {"host":"REDACTED","transfer-encoding":"chunked","authorization":"REDACTED","content-type":"application/json","x-forwarded-for":"REDACTED","x-forwarded-host":"lava.gavenda.dev","x-forwarded-proto":"https","accept-encoding":"gzip"}
 Body: {"voice":{"sessionId":"90d6aabc24f788d01f7fc43da5d4e7d3","endpoint":"japan9477.discord.media:443","token":"afe24c44bc313396"}}
file:///home/enda/nodelink/src/sources/youtube.js:324
      const contentsRoot = type === 'ytmusic' ? playlist.contents.singleColumnMusicWatchNextResultsRenderer.tabbedRenderer.watchNextTabbedResultsRenderer.tabs[0].tabRenderer.content.musicQueueRenderer : playlist.contents.singleColumnWatchNextResults
                                                                                                            ^

TypeError: Cannot read properties of undefined (reading 'tabbedRenderer')
    at Object.loadFrom (file:///home/enda/nodelink/src/sources/youtube.js:324:109)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Server.requestHandler (file:///home/enda/nodelink/src/connection/handler.js:402:118)

Node.js v20.11.1
ThePedroo commented 6 months ago

Makes sense now, bypass age restriction is activated. As a workaround, just disable it. I'll be fixing ASAP

ThePedroo commented 6 months ago

Fix landed on https://github.com/PerformanC/NodeLink/commit/2f6658a7c2f2e6e16f8a4d44160bcb752f0182e4. Please let me know if this still doesn't work