From ad08c4dac2215f4b8e9f3101a448e45cfc3882c6 Mon Sep 17 00:00:00 2001 From: Raphix Date: Tue, 16 Apr 2024 15:17:19 +0200 Subject: [PATCH] Update .gitignore to include node_modules/moonlink.js/dist --- .gitignore | 5 ++ data/nodes.json | 4 +- data/users.json | 3 +- package-lock.json | 14 +++--- package.json | 2 +- src/modules/discord-bot.js | 34 +++++++++++-- src/modules/sub-list.js | 6 ++- src/modules/sub-player.js | 57 ++++++++++++---------- src/web/public/javascript/player.js | 12 ++--- src/web/public/stylesheets/style.css | 73 ++++++++++++++++++---------- src/web/templates/index.ejs | 12 +++-- 11 files changed, 145 insertions(+), 77 deletions(-) diff --git a/.gitignore b/.gitignore index ead1583..987f48d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,12 @@ bower_components build/Release # Dependency directories + node_modules/ +!node_modules/moonlink.js/ +!node_modules/moonlink.js/dist/ + + jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) diff --git a/data/nodes.json b/data/nodes.json index 583b088..56832d1 100644 --- a/data/nodes.json +++ b/data/nodes.json @@ -1,8 +1,8 @@ [ { - "host": "omega.raphix.fr", + "host": "localhost", "port": 2333, "password": "youshallnotpass", - "retryAmount": 1 + "retryAmount": 5 } ] \ No newline at end of file diff --git a/data/users.json b/data/users.json index 4543774..71d52ba 100644 --- a/data/users.json +++ b/data/users.json @@ -481,7 +481,8 @@ "e18b2d89-2494-4cfe-af55-dad6dfbc0c60", "0a0b75f3-6a42-4ccf-92f9-d992a63545a4", "419a246f-e7b3-4aa4-9fa0-816dffc22a19", - "471c4c81-b8bc-42e7-af1a-d33df30cff2b" + "471c4c81-b8bc-42e7-af1a-d33df30cff2b", + "9f299250-6017-457b-87b6-23181288150a" ], "picture": "/userspictures/486943594893017119.png", "banned": false, diff --git a/package-lock.json b/package-lock.json index 75e753b..c93d937 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "express-favicon": "^2.0.4", "loguix": "^1.4.2", "markdown-it": "^13.0.1", - "moonlink.js": "^3.6.0", + "moonlink.js": "^3.6.4", "nodemon": "^2.0.22", "pm2": "^5.3.0", "request": "^2.88.2", @@ -2271,9 +2271,9 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "node_modules/moonlink.js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/moonlink.js/-/moonlink.js-3.6.0.tgz", - "integrity": "sha512-uzXCc8G+bl87TqgoLV1pJZ0WMcGVY5RyjUJpegvKhF5lhqShIPREiH60ZORi832VQoVyg3KCBJLMSKv0D3j8wQ==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/moonlink.js/-/moonlink.js-3.6.4.tgz", + "integrity": "sha512-qaL/FxrWtwLLJmUHyFIh+kQauM1TUEb1qeK1oeoPxQ175SXPFgGySCV01h/RGc0Ki4Erke5rKAERt/aP1xVA4w==", "engines": { "node": ">=16.6.0" } @@ -5536,9 +5536,9 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "moonlink.js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/moonlink.js/-/moonlink.js-3.6.0.tgz", - "integrity": "sha512-uzXCc8G+bl87TqgoLV1pJZ0WMcGVY5RyjUJpegvKhF5lhqShIPREiH60ZORi832VQoVyg3KCBJLMSKv0D3j8wQ==" + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/moonlink.js/-/moonlink.js-3.6.4.tgz", + "integrity": "sha512-qaL/FxrWtwLLJmUHyFIh+kQauM1TUEb1qeK1oeoPxQ175SXPFgGySCV01h/RGc0Ki4Erke5rKAERt/aP1xVA4w==" }, "ms": { "version": "2.0.0", diff --git a/package.json b/package.json index 44a3aed..657242c 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "express-favicon": "^2.0.4", "loguix": "^1.4.2", "markdown-it": "^13.0.1", - "moonlink.js": "^3.6.0", + "moonlink.js": "^3.6.4", "nodemon": "^2.0.22", "pm2": "^5.3.0", "request": "^2.88.2", diff --git a/src/modules/discord-bot.js b/src/modules/discord-bot.js index caf010f..f420eed 100644 --- a/src/modules/discord-bot.js +++ b/src/modules/discord-bot.js @@ -194,11 +194,14 @@ function startErelaManager(dlog, config) { const list = new List() + client.manager.on("playerCreate", async (player) => { + await client.channels.fetch(player.options.voiceChannel).then(channel => { plog.log("Nouveau Player instancié dans : " + channel.name) }) + player.setVolume(100) process.emit("MUSIC_UPDATE_STATE") @@ -242,6 +245,7 @@ function startErelaManager(dlog, config) { client.manager.on("queueEnd", async () => { let player = await client.manager.players.get("137291455336022018") + console.log("END OF QUEUE") if(player) { await list.addCurrentToPrevious() @@ -256,9 +260,33 @@ function startErelaManager(dlog, config) { process.emit("MUSIC_UPDATE_STATE") }) - client.manager.on("playerUpdate", (player) => { - require("./sub-player").updateMusicState(client) - }) + let events = [ + "playerConnected", + "playerCreated", + "playerPaused", + "playerRestarted", + "playerResume", + "playerStopped", + "playerSetVoiceChannel", + "playerAutoPlayTriggered", + "playerAutoLeaveTriggered", + "playerSetTextChannel", + "playerVolumeChanged", + "playerSkipped", + "playerSeeking", + "playerLoopSet", + "playerShuffled", + "playerMove", + "playerDisconnect", + "playerDestroyed", + "playerUpdate" + ]; + + events.forEach(event => { + client.manager.on(event, (player) => { + process.emit("MUSIC_UPDATE_STATE"); + }); + }); // Emitted whenever a node connects client.manager.on("nodeReady", node => { diff --git a/src/modules/sub-list.js b/src/modules/sub-list.js index 6d40307..44698d9 100644 --- a/src/modules/sub-list.js +++ b/src/modules/sub-list.js @@ -118,12 +118,14 @@ module.exports.List = class { } setCurrent(song) { - - current = song.queue.current + + + current = song.current } addCurrentToPrevious() { + if(current) { var previousList = getPreviousFile() previousList.unshift(current) diff --git a/src/modules/sub-player.js b/src/modules/sub-player.js index d6a6661..55ee059 100644 --- a/src/modules/sub-player.js +++ b/src/modules/sub-player.js @@ -92,7 +92,7 @@ module.exports.play = async function (client, interaction) { } - + process.emit("MUSIC_UPDATE_STATE") } @@ -117,6 +117,7 @@ module.exports.pause = function (client, interaction) { interaction.reply({embeds: [embed]}) player.pause() + process.emit("MUSIC_UPDATE_STATE") } else { const embed = new EmbedBuilder() @@ -129,6 +130,7 @@ module.exports.pause = function (client, interaction) { interaction.reply({embeds: [embed]}) player.resume() + process.emit("MUSIC_UPDATE_STATE") } } else { @@ -161,7 +163,6 @@ module.exports.pause = function (client, interaction) { } - } @@ -193,7 +194,7 @@ module.exports.getState = function(client, interaction) { } - + process.emit("MUSIC_UPDATE_STATE") } @@ -204,7 +205,7 @@ module.exports.playPlaylist = function (id, data, quick) { playlist.videos = data list.playlistAdd(playlist, null, id, quick) - + process.emit("MUSIC_UPDATE_STATE") } @@ -270,7 +271,7 @@ module.exports.addSong = async function (data, userId, quick, playlist) { - + process.emit("MUSIC_UPDATE_STATE") } @@ -293,7 +294,7 @@ module.exports.addSongsFromPlaylist = async function (data, userId, quick) { - + process.emit("MUSIC_UPDATE_STATE") } @@ -356,7 +357,7 @@ module.exports.skip = function (client, interaction) { } - + process.emit("MUSIC_UPDATE_STATE") } @@ -366,19 +367,21 @@ module.exports.seek = function (data) { client = discord.getClient() - + /** + * @type {import("moonlink.js").MoonlinkPlayer} + */ let player = client.manager.players.get("137291455336022018") if(player) { - player.seek(data) + player.seek((Number(data) - 1000)) } - + process.emit("MUSIC_UPDATE_STATE") } @@ -397,7 +400,7 @@ module.exports.setVol = function (data) { } - + process.emit("MUSIC_UPDATE_STATE") @@ -412,20 +415,24 @@ module.exports.loop = function (client) { client = discord.getClient() } + /** + * @type {import("moonlink.js").MoonlinkPlayer} + */ let player = client.manager.players.get("137291455336022018") if(player) { - if(player.queueRepeat == true) { - player.setQueueRepeat(false) + if(player.loop == 1) { + player.setLoop(0) } else { - player.setQueueRepeat(true) + player.setLoop(1) + } } - + process.emit("MUSIC_UPDATE_STATE") } @@ -451,7 +458,7 @@ module.exports.changeShuffle = function (client) { } - + process.emit("MUSIC_UPDATE_STATE") } @@ -486,7 +493,7 @@ module.exports.search = async function (data, client) { } return answer - + process.emit("MUSIC_UPDATE_STATE") } @@ -547,7 +554,7 @@ module.exports.previous = function (client, interaction) { } - + process.emit("MUSIC_UPDATE_STATE") } const clog = new LogType("Actualisation") @@ -622,7 +629,7 @@ module.exports.report = async function (client, interaction, data) { interaction.reply({embeds: [membed]}) } - + process.emit("MUSIC_UPDATE_STATE") } @@ -661,7 +668,7 @@ module.exports.updateMusicState = function (client, action) { data["current"] = player.current - if(player.queueRepeat == true) { + if(player.loop == 1) { data["loop"] = true } @@ -675,7 +682,6 @@ module.exports.updateMusicState = function (client, action) { currentTitle = player.current.title } - console.log(player.paused) if(player.paused) { data["playing"] = 0 @@ -699,9 +705,10 @@ module.exports.updateMusicState = function (client, action) { } clog.log("Actualisation Clients - Titre : " + currentTitle + " - Loop : " + data.loop + " - Shuffle : " + data.shuffle + " - Playing : " + data.playing + " - Volume : " + Math.trunc(data.volume / 10) ) - + + return data - + } @@ -753,7 +760,7 @@ module.exports.leave = function (client, interaction) { } - + process.emit("MUSIC_UPDATE_STATE") } @@ -775,7 +782,7 @@ module.exports.moveOut = function(userId) { } } - + process.emit("MUSIC_UPDATE_STATE") } // FINI diff --git a/src/web/public/javascript/player.js b/src/web/public/javascript/player.js index 913974d..a1efd12 100644 --- a/src/web/public/javascript/player.js +++ b/src/web/public/javascript/player.js @@ -29,7 +29,7 @@ var durationTotal = 0 var interval = null -var currentTitle = "" +var currentTitle = null var playerState = "DISCONNECTED" @@ -37,7 +37,7 @@ AlwaysRequest("MUSIC_STATE", async (data) => { durationAct = 0 durationTotal = 0 playerState = "DISCONNECTED" - currentTitle = "" + currentTitle = null stopInterval() console.log(data) @@ -131,7 +131,7 @@ AlwaysRequest("MUSIC_STATE", async (data) => { play.classList.add("disabled") - currentTitle = "" + currentTitle = null } if(data.queue) { @@ -153,7 +153,7 @@ AlwaysRequest("MUSIC_STATE", async (data) => { if(data.volume) { volume.step = 1 - volume.max = 200 + volume.max = 150 volume.min = 1 volume.value = Math.trunc(data.volume / 10) volTxt.innerHTML = Math.trunc(data.volume / 10) + "%" @@ -305,7 +305,7 @@ lyrics.addEventListener('click', (e) => { } else { - if(currentTitle != "") { + if(currentTitle) { showLyrics(currentTitle) } else { @@ -406,7 +406,7 @@ function startInterval() { interval = setInterval(() => { - if(playerState == "PLAYING") { + if(playerState == "PLAYING" && currentTitle) { setTime() } diff --git a/src/web/public/stylesheets/style.css b/src/web/public/stylesheets/style.css index ca298eb..9989fc6 100644 --- a/src/web/public/stylesheets/style.css +++ b/src/web/public/stylesheets/style.css @@ -9,7 +9,7 @@ body { flex-direction: column; align-items: flex-start; - background: #160120; + background: #19001e; display: flex; color: #FFF; font-family: 'Inter', sans-serif; @@ -351,11 +351,21 @@ button:hover { padding: 20px 20px 20px 20px; flex-direction: column; align-items: center; - gap: 20px; + gap: 7px; align-self: stretch; background: #131313; } +hr { + width: 100%; + display: block; + height: 1px; + border: 0; + border-top: 1px solid #cccccc87; + margin: 1em 0; + padding: 0; +} + /*Title*/ .title { @@ -393,11 +403,11 @@ button:hover { .homeselector { display: flex; width: 344px; - padding: 20px; + justify-content: space-around; align-items: flex-start; - border-radius: 10px; - background: #2F2F2F; + border-radius: 5px; + } .homeselector_div:hover { @@ -420,7 +430,7 @@ button:hover { .homeselector_icon { border: 2px solid #ffffff; - border-radius: 10px; + border-radius: 5px; font-size: 23px; justify-content: center; align-items: center; @@ -432,7 +442,7 @@ button:hover { } .homeselector_icon:hover { - background-color: #ffffff; + /* background-color: #ffffff; */ color: #000000; transform: scale(0.95); } @@ -441,14 +451,14 @@ button:hover { .playlist { display: flex; - padding: 20px; + flex-direction: column; align-items: flex-start; gap: 20px; flex: 1 0 0; align-self: stretch; - border-radius: 10px; - background: #2F2F2F; + border-radius: 5px; + } @@ -519,9 +529,9 @@ button:hover { align-items: center; flex: 1 0 0; align-self: stretch; - padding: 20px; - border-radius: 10px; - background: rgba(217, 217, 217, 0.30); + + border-radius: 5px; + } .view-other { @@ -549,7 +559,7 @@ button:hover { align-items: flex-start; gap: 10px; align-self: stretch; - border-radius: 10px; + border-radius: 5px; height: 30%; background: rgba(217, 217, 217, 0.30); @@ -599,7 +609,7 @@ button:hover { flex: 1; min-height: 0; align-self: stretch; - border-radius: 10px; + border-radius: 5px; background: rgba(217, 217, 217, 0.30); } @@ -1064,7 +1074,7 @@ button:hover { .playlist-add { background-color: #545454; padding: 5px; - border-radius: 10px; + border-radius: 5px; cursor: pointer; transition: 0.2s; font-size: 14px; @@ -1108,7 +1118,7 @@ button:hover { border: 2px solid #ffffff; - border-radius: 10px; + border-radius: 5px; font-size: 20px; width: 56px; height: 56px; @@ -1191,7 +1201,7 @@ button:hover { gap: 10px; align-self: stretch; - border-radius: 10px; + border-radius: 5px; @@ -1447,6 +1457,12 @@ button:hover { width: 100px !important; } + +.vol_px { + display: flex; + gap: 5px !important; +} + .oobe-list { display: flex; flex-direction: column; @@ -1454,7 +1470,7 @@ button:hover { align-items: flex-start; align-self: stretch; padding: 20px; - border-radius: 10px; + border-radius: 5px; background: rgba(217, 217, 217, 0.30); width: 30%; @@ -1491,7 +1507,7 @@ button:hover { align-items: flex-start; align-self: stretch; padding: 20px; - border-radius: 10px; + border-radius: 5px; background: #2F2F2F; width: 30%; } @@ -1503,7 +1519,7 @@ button:hover { align-items: flex-start; align-self: stretch; padding: 20px; - border-radius: 10px; + border-radius: 5px; background: #2F2F2F; } @@ -1551,7 +1567,7 @@ button:hover { .oobe-search { background: #2d2d2d; padding: 20px; - border-radius: 10px; + border-radius: 5px; } @@ -1607,15 +1623,20 @@ input[type="range"] { } /*Scrollbar */ ::-webkit-scrollbar { - width: 10px; + width: 5px; margin-right: 20px; } ::-webkit-scrollbar-track { border-radius: 12px; } ::-webkit-scrollbar-thumb { + background: #ffffff56; + border-radius: 5px; + transition: 0.2s; + } + +::-webkit-scrollbar-thumb:hover { background: #ffffffa8; - border-radius: 10px; } @@ -1626,7 +1647,7 @@ input[type="range"] { display: flex; flex-direction: column; width: 150px; - border-radius: 10px; + border-radius: 5px; z-index: 3; height: auto; } @@ -1676,7 +1697,7 @@ input[type="range"] { padding: 20px; box-shadow: 4px 5px 12px 5px rgba(0,0,0,0.6); width: 50%; - border-radius: 10px; + border-radius: 5px; color: #FFF; } diff --git a/src/web/templates/index.ejs b/src/web/templates/index.ejs index 3363651..a28d62c 100644 --- a/src/web/templates/index.ejs +++ b/src/web/templates/index.ejs @@ -28,6 +28,7 @@ Soundboard --> +

Playlists

@@ -42,6 +43,7 @@
+
@@ -126,10 +128,12 @@
- - - - +
+ + + +
+