From 521118a6b497dcef2ed7a4d3ef4e1290be6d2ab9 Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Sat, 4 Feb 2023 14:38:39 -0700 Subject: [PATCH] music: back to ytdl-core --- package.json | 2 +- pnpm-lock.yaml | 43 +++++++++++++++++++++++++++---------------- src/modules/music.js | 25 +++++++++++-------------- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index 7e76d0c..c91a00b 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "dependencies": { "@ctrl/tinycolor": "^3.4.1", "@projectdysnomia/dysnomia": "github:projectdysnomia/dysnomia#chore/housekeeping", + "better-ytdl-core": "^1.0.1", "dumpy": "github:Cynosphere/dumpy.js", "google-images": "^2.1.0", "jimp": "^0.16.1", "murmurhash": "^2.0.0", "node-ffprobe": "^3.0.0", - "play-dl": "^1.9.6", "sharp": "^0.28.3", "sqlite3": "^5.0.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b0a085..3cfbc1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,6 +3,7 @@ lockfileVersion: 5.4 specifiers: '@ctrl/tinycolor': ^3.4.1 '@projectdysnomia/dysnomia': github:projectdysnomia/dysnomia#chore/housekeeping + better-ytdl-core: ^1.0.1 dumpy: github:Cynosphere/dumpy.js eslint: ^7.26.0 google-images: ^2.1.0 @@ -10,20 +11,19 @@ specifiers: jimp: ^0.16.1 murmurhash: ^2.0.0 node-ffprobe: ^3.0.0 - play-dl: ^1.9.6 prettier: ^2.3.0 sharp: ^0.28.3 sqlite3: ^5.0.2 dependencies: '@ctrl/tinycolor': 3.4.1 - '@projectdysnomia/dysnomia': github.com/projectdysnomia/dysnomia/fba6510e3b93325c79de85a277a944d73a111378 + '@projectdysnomia/dysnomia': github.com/projectdysnomia/dysnomia/4961111413b635e746feaca1939e8aa885947e9d + better-ytdl-core: 1.0.1 dumpy: github.com/Cynosphere/dumpy.js/5fc22353cdcb97084bab572266390e780d9f7a7b google-images: 2.1.0 jimp: 0.16.1 murmurhash: 2.0.0 node-ffprobe: 3.0.0 - play-dl: 1.9.6 sharp: 0.28.3 sqlite3: 5.0.2 @@ -603,6 +603,15 @@ packages: dev: false optional: true + /better-ytdl-core/1.0.1: + resolution: {integrity: sha512-ADe5bTBprd0Ky3cMChQ0AsOAxkvB+ugmqjoUCd5lz76mXe2Cfkq2x4qvQcUq7+R0GHX1p0QGggfUZJ5XvbI+yw==} + engines: {node: '>=12'} + dependencies: + m3u8stream: 0.8.6 + miniget: 4.2.2 + sax: 1.2.4 + dev: false + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -1448,6 +1457,14 @@ packages: dependencies: yallist: 4.0.0 + /m3u8stream/0.8.6: + resolution: {integrity: sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==} + engines: {node: '>=12'} + dependencies: + miniget: 4.2.2 + sax: 1.2.4 + dev: false + /mime-db/1.48.0: resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} engines: {node: '>= 0.6'} @@ -1479,6 +1496,11 @@ packages: dom-walk: 0.1.2 dev: false + /miniget/4.2.2: + resolution: {integrity: sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA==} + engines: {node: '>=12'} + dev: false + /minimatch/3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: @@ -1768,17 +1790,6 @@ packages: pngjs: 3.4.0 dev: false - /play-audio/0.5.2: - resolution: {integrity: sha512-ZAqHUKkQLix2Iga7pPbsf1LpUoBjcpwU93F1l3qBIfxYddQLhxS6GKmS0d3jV8kSVaUbr6NnOEcEMFvuX93SWQ==} - dev: false - - /play-dl/1.9.6: - resolution: {integrity: sha512-JW44bQbME9fNfGhGXQ/rdcsHr4BfgJabVlSgpS9QY/NscfprFH1asv+q9atrZThP3+hHIpgtFNABccg9rFWlwg==} - engines: {node: '>=16.0.0'} - dependencies: - play-audio: 0.5.2 - dev: false - /pngjs/3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} @@ -2426,8 +2437,8 @@ packages: - encoding dev: false - github.com/projectdysnomia/dysnomia/fba6510e3b93325c79de85a277a944d73a111378: - resolution: {tarball: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/fba6510e3b93325c79de85a277a944d73a111378} + github.com/projectdysnomia/dysnomia/4961111413b635e746feaca1939e8aa885947e9d: + resolution: {tarball: https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/4961111413b635e746feaca1939e8aa885947e9d} name: '@projectdysnomia/dysnomia' version: 0.1.0-dev engines: {node: '>=10.4.0'} diff --git a/src/modules/music.js b/src/modules/music.js index 0e6ad77..28f619c 100644 --- a/src/modules/music.js +++ b/src/modules/music.js @@ -1,6 +1,6 @@ const {Collection} = require("@projectdysnomia/dysnomia"); -const playdl = require("play-dl"); +const ytdl = require("better-ytdl-core"); const ffprobe = require("node-ffprobe"); const Command = require("../lib/command.js"); @@ -203,29 +203,26 @@ async function enqueue({ if (type == "yt") { let info; try { - info = await playdl.video_info(url); + info = await ytdl.getInfo(url, {}); } catch (err) { await textChannel.createMessage({ content: `:warning: Failed to get metadata: \`\`\`\n${err}\n\`\`\``, }); } - title = parseHtmlEntities(info?.video_details?.title); - length = info?.video_details?.durationInSec * 1000; - thumbnail = info?.video_details?.thumbnails?.[ - info.video_details.thumbnails.length - 1 + title = parseHtmlEntities(info?.videoDetails?.title); + length = info?.videoDetails?.lengthSeconds * 1000; + thumbnail = info?.videoDetails?.thumbnails?.[ + info.videoDetails.thumbnails.length - 1 ].url .replace("vi_webp", "vi") .replace(".webp", ".jpg"); - let formats = info?.format; - if (formats) { - formats = formats.filter( - (obj) => obj.audioQuality != null && obj.container == "webm" - ); - formats.sort((a, b) => b.bitrate - a.bitrate); - media = formats[0].url; - } + media = ytdl(url, { + quality: "highestaudio", + filter: "audioonly", + highWaterMark: 1 << 25, + }); } else if (type == "sc") { if (url?.startsWith("sc:")) url = url.replace(/^sc:/, "https://soundcloud.com/");