aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2022-11-29 00:37:42 -0500
committerAndrew Lee <alee14498@protonmail.com>2022-11-29 00:37:42 -0500
commit6d2b8650972cde46953999195f26c29bb5660d36 (patch)
treefa05db82f522daf69a69371ee1edc01ee7dbddf7
parente848cfbbbf1f3387c3d483f54db99b4474068928 (diff)
downloadDLAP-6d2b8650972cde46953999195f26c29bb5660d36.tar.gz
DLAP-6d2b8650972cde46953999195f26c29bb5660d36.tar.bz2
DLAP-6d2b8650972cde46953999195f26c29bb5660d36.zip
Added duration
-rw-r--r--AudioBackend.js18
-rw-r--r--commands/status.js3
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) {