diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-03-06 20:05:04 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-03-06 20:05:04 +0100 |
commit | 4f822cd273e35fd8e368489d61b558a288826943 (patch) | |
tree | f442075901004be916c9c27d362d353fe3c1b818 | |
parent | a8e4fd12ae5dc5136239832a2b7df6a7f79b83c9 (diff) | |
download | furrybot-discord-4f822cd273e35fd8e368489d61b558a288826943.tar.xz |
Add search feature
-rw-r--r-- | music.js | 13 | ||||
-rw-r--r-- | package-lock.json | 57 | ||||
-rw-r--r-- | package.json | 1 |
3 files changed, 69 insertions, 2 deletions
@@ -1,9 +1,18 @@ const ytdl = require("ytdl-core") const voice = require("@discordjs/voice") +const youtubeSearchApi = require("youtube-search-api") module.exports = { play: { - func: (msg, url) => { + func: async (msg, urlArr) => { + let url = urlArr.join(" ") + + try { + new URL(url) + } catch { + url = "https://youtube.com/watch?v=" + (await youtubeSearchApi.GetListByKeyword(url, false, 1)).items[0].id + } + const channel = msg.member.voice.channel if (! channel) @@ -16,7 +25,7 @@ module.exports = { }) const player = voice.createAudioPlayer() - player.play(voice.createAudioResource(ytdl(url.join(" "), {filter: "audioonly"}), {inputType: voice.StreamType.Arbitrary})) + player.play(voice.createAudioResource(ytdl(url, {filter: "audioonly"}), {inputType: voice.StreamType.Arbitrary})) conn.subscribe(player) } } diff --git a/package-lock.json b/package-lock.json index 4ade40c..83c233d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "pseudo-random": "^0.6.0", "sha1": "^1.1.1", "sodium": "^3.0.2", + "youtube-search-api": "^1.1.0", "ytdl-core": "^4.11.0" } }, @@ -146,6 +147,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -335,6 +344,25 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -591,6 +619,14 @@ } } }, + "node_modules/youtube-search-api": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/youtube-search-api/-/youtube-search-api-1.1.0.tgz", + "integrity": "sha512-mzaCMzwJIPw1NaW+HanK9WnXcds5aWSA1zdp73gXeoUjkP19rVtjFmdZLvz0abHq/WhpbesNZRVRgJs+H/j8mA==", + "dependencies": { + "axios": "^0.21.0" + } + }, "node_modules/ytdl-core": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.0.tgz", @@ -714,6 +750,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -849,6 +893,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -1029,6 +1078,14 @@ "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "requires": {} }, + "youtube-search-api": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/youtube-search-api/-/youtube-search-api-1.1.0.tgz", + "integrity": "sha512-mzaCMzwJIPw1NaW+HanK9WnXcds5aWSA1zdp73gXeoUjkP19rVtjFmdZLvz0abHq/WhpbesNZRVRgJs+H/j8mA==", + "requires": { + "axios": "^0.21.0" + } + }, "ytdl-core": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.0.tgz", diff --git a/package.json b/package.json index ac7c3b8..2835301 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "pseudo-random": "^0.6.0", "sha1": "^1.1.1", "sodium": "^3.0.2", + "youtube-search-api": "^1.1.0", "ytdl-core": "^4.11.0" } } |