aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-03-06 20:05:04 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-03-06 20:05:04 +0100
commit4f822cd273e35fd8e368489d61b558a288826943 (patch)
treef442075901004be916c9c27d362d353fe3c1b818
parenta8e4fd12ae5dc5136239832a2b7df6a7f79b83c9 (diff)
downloadfurrybot-discord-4f822cd273e35fd8e368489d61b558a288826943.tar.xz
Add search feature
-rw-r--r--music.js13
-rw-r--r--package-lock.json57
-rw-r--r--package.json1
3 files changed, 69 insertions, 2 deletions
diff --git a/music.js b/music.js
index c182a5e..50bba47 100644
--- a/music.js
+++ b/music.js
@@ -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"
}
}