From f893b53ba011742e9b1bb127baea80998d619e48 Mon Sep 17 00:00:00 2001 From: loicbersier Date: Sat, 1 Feb 2020 02:36:48 +0100 Subject: [PATCH] use tmpdir --- commands/fun/tts/dectalk.js | 10 ++++++---- commands/fun/tts/dectalkvc.js | 10 ++++++---- commands/fun/tts/sam.js | 5 +++-- commands/fun/tts/samvc.js | 5 +++-- commands/fun/tts/tts.js | 6 ++++-- commands/fun/tts/ttsvc.js | 9 +++++---- 6 files changed, 27 insertions(+), 18 deletions(-) diff --git a/commands/fun/tts/dectalk.js b/commands/fun/tts/dectalk.js index a0304ac5..78d1bb2c 100644 --- a/commands/fun/tts/dectalk.js +++ b/commands/fun/tts/dectalk.js @@ -1,6 +1,7 @@ const { Command } = require('discord-akairo'); const util = require('util'); const exec = util.promisify(require('child_process').exec); +const os = require('os'); const rand = require('../../../rand.js'); class dectalkCommand extends Command { @@ -28,23 +29,24 @@ class dectalkCommand extends Command { } async exec(message, args) { + let output = `${os.tmpdir()}/${message.id}_dectalk.wav`; args.decMessage = rand.random(args.decMessage, message); args.decMessage = args.decMessage.replace('\n', ' '); let decMessage = '[:phoneme on] ' + args.decMessage.replace(/(["'$`\\])/g,'\\$1'); if (process.platform == 'win32') { - exec(`cd .\\dectalk && .\\say.exe -w dectalk.wav "${decMessage}"`) + exec(`cd .\\dectalk && .\\say.exe -w ${output} "${decMessage}"`) .catch(err => { console.error(err); return message.channel.send('Oh no! an error has occured!'); }) .then(() => { - return message.channel.send({files: ['./dectalk/dectalk.wav']}); + return message.channel.send({files: [output]}); }); } else if (process.platform == 'linux' || process.platform == 'darwin') { let loadingmsg = await message.channel.send('Processing ( this can take some time ) '); - exec(`cd dectalk && DISPLAY=:0.0 wine say.exe -w dectalk.wav "${decMessage}"`) + exec(`cd dectalk && DISPLAY=:0.0 wine say.exe -w ${output} "${decMessage}"`) .catch(err => { loadingmsg.delete(); console.error(err); @@ -52,7 +54,7 @@ class dectalkCommand extends Command { }) .then(() => { loadingmsg.delete(); - return message.channel.send({files: ['./dectalk/dectalk.wav']}); + return message.channel.send({files: [output]}); }); } } diff --git a/commands/fun/tts/dectalkvc.js b/commands/fun/tts/dectalkvc.js index 647cec89..3a000412 100644 --- a/commands/fun/tts/dectalkvc.js +++ b/commands/fun/tts/dectalkvc.js @@ -1,6 +1,7 @@ const { Command } = require('discord-akairo'); const util = require('util'); const exec = util.promisify(require('child_process').exec); +const os = require('os'); const rand = require('../../../rand.js'); class dectalkvcCommand extends Command { @@ -28,12 +29,13 @@ class dectalkvcCommand extends Command { } async exec(message, args) { + let output = `${os.tmpdir()}/${message.id}_dectalk.wav`; args.decMessage = rand.random(args.decMessage, message); args.decMessage = args.decMessage.replace('\n', ' '); let decMessage = '[:phoneme on] ' + args.decMessage.replace(/(["'$`\\])/g,'\\$1'); if (process.platform == 'win32') { - exec(`cd .\\dectalk && .\\say.exe -w dectalkvc.wav "${decMessage}"`) + exec(`cd .\\dectalk && .\\say.exe -w ${output} "${decMessage}"`) .catch(err => { console.error(err); return message.channel.send('Oh no! an error has occured!'); @@ -43,7 +45,7 @@ class dectalkvcCommand extends Command { if (!voiceChannel) return message.say('Please enter a voice channel first.'); try { const connection = await voiceChannel.join(); - const dispatcher = connection.play('./dectalk/dectalk.wav'); + const dispatcher = connection.play(output); dispatcher.once('finish', () => voiceChannel.leave()); dispatcher.once('error', () => voiceChannel.leave()); return null; @@ -56,7 +58,7 @@ class dectalkvcCommand extends Command { } else if (process.platform == 'linux' || process.platform == 'darwin') { let loadingmsg = await message.channel.send('Processing ( this can take some time ) '); - exec(`cd dectalk && DISPLAY=:0.0 wine say.exe -w dectalkvc.wav "${decMessage}"`) + exec(`cd dectalk && DISPLAY=:0.0 wine say.exe -w ${output} "${decMessage}"`) .catch(err => { loadingmsg.delete(); console.error(err); @@ -68,7 +70,7 @@ class dectalkvcCommand extends Command { try { loadingmsg.delete(); const connection = await voiceChannel.join(); - const dispatcher = connection.play('./dectalk/dectalkvc.wav'); + const dispatcher = connection.play(output); dispatcher.once('finish', () => voiceChannel.leave()); dispatcher.once('error', () => voiceChannel.leave()); return null; diff --git a/commands/fun/tts/sam.js b/commands/fun/tts/sam.js index 84d7c821..55cd5cf9 100644 --- a/commands/fun/tts/sam.js +++ b/commands/fun/tts/sam.js @@ -1,6 +1,7 @@ const { Command } = require('discord-akairo'); const axios = require('axios'); const fs = require('fs'); +const os = require('os'); const rand = require('../../../rand.js'); class samCommand extends Command { @@ -76,9 +77,9 @@ class samCommand extends Command { 'Content-Type': 'audio/mpeg', }, }).then((result) => { - const outputFilename = './sam.wav'; + const outputFilename = `${os.tmpdir}/${message.id}_sam.wav`; fs.writeFileSync(outputFilename, result.data); - return message.channel.send({files: ['./sam.wav']}); + return message.channel.send({files: [outputFilename]}); }); } diff --git a/commands/fun/tts/samvc.js b/commands/fun/tts/samvc.js index f8bf14a7..96a4efd5 100644 --- a/commands/fun/tts/samvc.js +++ b/commands/fun/tts/samvc.js @@ -1,6 +1,7 @@ const { Command } = require('discord-akairo'); const axios = require('axios'); const fs = require('fs'); +const os = require('os'); const rand = require('../../../rand.js'); class samvcCommand extends Command { @@ -76,7 +77,7 @@ class samvcCommand extends Command { 'Content-Type': 'audio/mpeg', }, }).then(async (result) => { - const outputFilename = './samvc.wav'; + const outputFilename = `${os.tmpdir}/${message.id}_sam.wav`; fs.writeFile(outputFilename, result.data, async function(err) { if (err) console.error(err); @@ -84,7 +85,7 @@ class samvcCommand extends Command { if (!voiceChannel) return message.say('Please enter a voice channel first.'); try { const connection = await voiceChannel.join(); - const dispatcher = connection.play('./samvc.wav'); + const dispatcher = connection.play(outputFilename); dispatcher.once('finish', () => voiceChannel.leave()); dispatcher.once('error', () => voiceChannel.leave()); return null; diff --git a/commands/fun/tts/tts.js b/commands/fun/tts/tts.js index 5c3899cd..5c4d60f5 100644 --- a/commands/fun/tts/tts.js +++ b/commands/fun/tts/tts.js @@ -3,6 +3,7 @@ const textToSpeech = require('@google-cloud/text-to-speech'); const rand = require('../../../rand.js'); const gclient = new textToSpeech.TextToSpeechClient(); const fs = require('fs'); +const os = require('os'); class TtsCommand extends Command { constructor() { @@ -30,6 +31,7 @@ class TtsCommand extends Command { async exec(message, args) { let text = args.text; + let output = `${os.tmpdir()}/${message.id}_tts.mp3`; text = rand.random(text, message); @@ -51,7 +53,7 @@ class TtsCommand extends Command { } // Write the binary audio content to a local file - fs.writeFile('tts.mp3', response.audioContent, 'binary', err => { + fs.writeFile(output, response.audioContent, 'binary', err => { if (err) { console.error('ERROR:', err); message.channel.send('An error has occured, the message is probably too long'); @@ -59,7 +61,7 @@ class TtsCommand extends Command { return; } console.log('Audio content written to file: tts.mp3'); - message.channel.send({ files: ['./tts.mp3'] }); + message.channel.send({ files: [output] }); }); }); diff --git a/commands/fun/tts/ttsvc.js b/commands/fun/tts/ttsvc.js index 651ff253..9cb14ce2 100644 --- a/commands/fun/tts/ttsvc.js +++ b/commands/fun/tts/ttsvc.js @@ -3,6 +3,7 @@ const textToSpeech = require('@google-cloud/text-to-speech'); const rand = require('../../../rand.js'); const gclient = new textToSpeech.TextToSpeechClient(); const fs = require('fs'); +const os = require('os'); class TtsvcCommand extends Command { constructor() { @@ -30,7 +31,8 @@ class TtsvcCommand extends Command { async exec(message, args) { let text = args.text; - + let output = `${os.tmpdir()}/${message.id}_tts.mp3`; + text = rand.random(text, message); // Construct the request @@ -50,20 +52,19 @@ class TtsvcCommand extends Command { } // Write the binary audio content to a local file - fs.writeFile('ttsvc.mp3', response.audioContent, 'binary', async err => { + fs.writeFile(output, response.audioContent, 'binary', async err => { if (err) { console.error('ERROR:', err); message.channel.send('An error has occured, the message is probably too long'); return; } - console.log('Audio content written to file: ttsvc.mp3'); const voiceChannel = message.member.voice.channel; if (!voiceChannel) return message.say('Please enter a voice channel first.'); try { const connection = await voiceChannel.join(); - const dispatcher = connection.play('./ttsvc.mp3'); + const dispatcher = connection.play(output); dispatcher.once('finish', () => voiceChannel.leave()); dispatcher.once('error', () => voiceChannel.leave()); return null;