diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2022-11-29 00:37:42 -0500 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2022-11-29 00:37:42 -0500 |
| commit | 6d2b8650972cde46953999195f26c29bb5660d36 (patch) | |
| tree | fa05db82f522daf69a69371ee1edc01ee7dbddf7 | |
| parent | e848cfbbbf1f3387c3d483f54db99b4474068928 (diff) | |
| download | DLAP-6d2b8650972cde46953999195f26c29bb5660d36.tar.gz DLAP-6d2b8650972cde46953999195f26c29bb5660d36.tar.bz2 DLAP-6d2b8650972cde46953999195f26c29bb5660d36.zip | |
Added duration
| -rw-r--r-- | AudioBackend.js | 18 | ||||
| -rw-r--r-- | commands/status.js | 3 |
2 files changed, 18 insertions, 3 deletions
diff --git a/AudioBackend.js b/AudioBackend.js index fab4f4d..b629882 100644 --- a/AudioBackend.js +++ b/AudioBackend.js @@ -41,6 +41,8 @@ let fileData; let totalTrack = files.length; export let currentTrack; +export let duration; +export let formattedDuration; export let playerState; export let isAudioStatePaused; export let metadataEmpty = false; @@ -147,7 +149,7 @@ export async function playAudio(bot) { isAudioStatePaused = false; try { - const { common } = await parseFile('music/' + audio); + const { common, format } = await parseFile('music/' + audio); metadataEmpty = false; if (common.title && common.artist && common.year && common.album) { audioTitle = common.title; @@ -157,6 +159,16 @@ export async function playAudio(bot) { } else { metadataEmpty = true; } + + duration = format.duration; + const toHHMMSS = (numSecs) => { + const secNum = parseInt(numSecs, 10); + const hours = Math.floor(secNum / 3600).toString().padStart(2, '0'); + const minutes = Math.floor((secNum - (hours * 3600)) / 60).toString().padStart(2, '0'); ; + const seconds = secNum - (hours * 3600) - (minutes * 60).toString().padStart(2, '0'); ; + return `${hours}:${minutes}:${seconds}`; + }; + formattedDuration = toHHMMSS(duration); } catch (error) { console.error(error.message); } @@ -173,13 +185,15 @@ export async function playAudio(bot) { const statusEmbed = new EmbedBuilder(); if (metadataEmpty === true) { statusEmbed.addFields({ name: 'Now Playing', value: audio }); + statusEmbed.addFields({ name: 'Duration', value: formattedDuration }); statusEmbed.setColor('#0066ff'); } else { statusEmbed.setTitle('Now Playing'); statusEmbed.addFields( { name: 'Title', value: audioTitle }, { name: 'Artist', value: audioArtist }, - { name: 'Year', value: `${audioYear}` } + { name: 'Year', value: `${audioYear}` }, + { name: 'Duration', value: formattedDuration } ); statusEmbed.setFooter({ text: `${audioAlbum}` }); statusEmbed.setColor('#0066ff'); diff --git a/commands/status.js b/commands/status.js index b564a88..4e4bebe 100644 --- a/commands/status.js +++ b/commands/status.js @@ -21,7 +21,7 @@ import { EmbedBuilder, SlashCommandBuilder } from 'discord.js'; import { parseFile } from 'music-metadata'; -import { audio, currentTrack, files, playerState, audioTitle, metadataEmpty } from '../AudioBackend.js'; +import { audio, currentTrack, files, playerState, audioTitle, metadataEmpty, formattedDuration } from '../AudioBackend.js'; export default { data: new SlashCommandBuilder() @@ -52,6 +52,7 @@ export default { .setAuthor({ name: `${bot.user.username} Status`, iconURL: bot.user.avatarURL() }) .addFields({ name: 'State', value: playerState }) .addFields({ name: 'Tracks', value: `${audioID}/${files.length}` }) + .addFields({ name: 'Duration', value: formattedDuration }) .setColor('#0066ff'); if (metadataEmpty === true) { |
