diff --git a/package.json b/package.json index 6e05dcc3..d588e79f 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "@discordjs/opus": "^0.8.0", "@discordjs/rest": "1.0.1", "@discordjs/voice": "0.17.0", - "@distube/ytdl-core": "^4.14.4", - "@distube/ytsr": "^2.0.0", + "@distube/ytdl-core": "^4.14.8", + "@distube/ytsr": "^2.0.4", "@prisma/client": "4.16.0", "@types/libsodium-wrappers": "^0.7.9", "array-shuffle": "^3.0.0", @@ -121,7 +121,7 @@ "patch-package": "^8.0.0", "postinstall-postinstall": "^2.1.0", "read-pkg": "7.1.0", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.2", "sponsorblock-api": "^0.2.4", "spotify-uri": "^3.0.2", "spotify-web-api-node": "^5.0.2", diff --git a/src/services/player.ts b/src/services/player.ts index b8330224..99ac8f07 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -515,7 +515,7 @@ export default class { if (!ffmpegInput) { // Not yet cached, must download - const info = await ytdl.getInfo(song.url); + const info = await ytdl.getInfo(song.url, {playerClients: ['WEB_CREATOR', 'IOS']}); const formats = info.formats as YTDLVideoFormat[]; @@ -524,6 +524,10 @@ export default class { format = formats.find(filter); const nextBestFormat = (formats: ytdl.videoFormat[]): ytdl.videoFormat | undefined => { + if (formats.length < 1) { + return undefined; + } + if (formats[0].isLive) { formats = formats.sort((a, b) => (b as unknown as {audioBitrate: number}).audioBitrate - (a as unknown as {audioBitrate: number}).audioBitrate); // Bad typings