aboutsummaryrefslogtreecommitdiff
path: root/AudioBackend/PlayAudio.js
diff options
context:
space:
mode:
Diffstat (limited to 'AudioBackend/PlayAudio.js')
-rw-r--r--AudioBackend/PlayAudio.js52
1 files changed, 37 insertions, 15 deletions
diff --git a/AudioBackend/PlayAudio.js b/AudioBackend/PlayAudio.js
index e8a0f3a..d671e5a 100644
--- a/AudioBackend/PlayAudio.js
+++ b/AudioBackend/PlayAudio.js
@@ -21,11 +21,14 @@
import { createAudioResource } from '@discordjs/voice';
import { parseFile } from 'music-metadata';
import { readdirSync, readFileSync, writeFile } from 'node:fs';
-import { EmbedBuilder } from 'discord.js';
+import { EmbedBuilder, AttachmentBuilder } from 'discord.js';
import { player } from './VoiceInitialization.js';
import { audioState, files } from './AudioControl.js';
import { integer } from '../Commands/play.js';
+import i18next from '../Utilities/i18n.js';
+
const { statusChannel, txtFile } = JSON.parse(readFileSync('./config.json', 'utf-8'));
+const t = i18next.t;
let fileData;
@@ -38,6 +41,7 @@ export let audioTitle;
export let audioArtist;
export let audioYear;
export let audioAlbum;
+export let audioPicture;
export let duration;
const inputFiles = readdirSync('music');
@@ -45,9 +49,10 @@ export async function playAudio(bot) {
const resource = createAudioResource('music/' + audio);
player.play(resource);
- console.log(`Now playing: ${audio}`);
+ console.log(t('nowPlayingFile', { audio }));
audioState(0);
+ audioPicture = null;
const audioFile = audio;
@@ -59,6 +64,13 @@ export async function playAudio(bot) {
audioArtist = common.artist;
audioYear = common.year;
audioAlbum = common.album;
+ if (common.picture) {
+ // Convert base64 image to a buffer
+ const imageBuffer = Buffer.from(common.picture[0].data, 'base64');
+
+ // Create a new attachment using the buffer
+ audioPicture = new AttachmentBuilder(imageBuffer, { name: 'albumArt.png' });
+ }
} else {
metadataEmpty = true;
}
@@ -70,34 +82,44 @@ export async function playAudio(bot) {
audio = audio.split('.').slice(0, -1).join('.');
if (txtFile) {
- fileData = `Now Playing: ${audio}`;
+ fileData = t('nowPlayingFile', { audio });
writeFile('./now-playing.txt', fileData, (err) => {
if (err) { console.log(err); }
});
}
const statusEmbed = new EmbedBuilder();
+
if (metadataEmpty) {
- statusEmbed.setTitle('Now Playing');
+ statusEmbed.setTitle(t('nowPlaying'));
statusEmbed.addFields(
- { name: 'Title', value: `${audio}` },
- { name: 'Duration', value: `${duration}` }
+ { name: t('musicTitle'), value: `${audio}` },
+ { name: t('musicDuration'), value: `${duration}` }
);
statusEmbed.setColor('#0066ff');
} else {
- statusEmbed.setTitle('Now Playing');
+ statusEmbed.setTitle(t('nowPlaying'));
statusEmbed.addFields(
- { name: 'Title', value: `${audioTitle}`, inline: true },
- { name: 'Artist', value: `${audioArtist}`, inline: true },
- { name: 'Year', value: `${audioYear}` },
- { name: 'Duration', value: `${duration}` }
+ { name: t('musicTitle'), value: `${audioTitle}`, inline: true },
+ { name: t('musicArtist'), value: `${audioArtist}`, inline: true },
+ { name: t('musicYear'), value: `${audioYear}` },
+ { name: t('musicDuration'), value: `${duration}` }
);
- statusEmbed.setFooter({ text: `Album: ${audioAlbum}\nFilename: ${audioFile}` });
+
+ if (audioPicture) {
+ statusEmbed.setThumbnail('attachment://albumArt.png');
+ }
+
+ statusEmbed.setFooter({ text: t('playerFooter', { audioAlbum, audioFile }) });
statusEmbed.setColor('#0066ff');
}
const channel = bot.channels.cache.get(statusChannel);
- if (!channel) return console.error('The status channel does not exist! Skipping.');
- return await channel.send({ embeds: [statusEmbed] });
+ if (!channel) return console.error(t('statusChannelError'));
+ if (audioPicture) {
+ return await channel.send({ embeds: [statusEmbed], files: [audioPicture] });
+ } else {
+ return await channel.send({ embeds: [statusEmbed] });
+ }
}
export function updatePlaylist(option) {
@@ -118,7 +140,7 @@ export function updatePlaylist(option) {
audio = inputFiles[integer];
break;
case 'stop':
- audio = 'Not Playing';
+ audio = t('notPlaying');
break;
}
}