diff --git a/commands/fun/vidshittifyer.js b/commands/fun/vidshittifyer.js new file mode 100644 index 0000000..b63ba33 --- /dev/null +++ b/commands/fun/vidshittifyer.js @@ -0,0 +1,53 @@ +const { Command } = require('discord-akairo'); +const fs = require('fs'); +const util = require('util'); +const exec = util.promisify(require('child_process').exec); +const youtubedl = require('youtube-dl'); +const os = require('os'); + +class vidshittifyerCommand extends Command { + constructor() { + super('vidshittifyer', { + aliases: ['vidshittifyer', 'vs', 'shittifyer', 'vid2shit', 'v2s'], + category: 'fun', + args: [ + { + id: 'link', + type: 'string', + } + ], + description: { + content: 'Make your vid shit quality', + usage: '[link to video]', + examples: [''] + } + }); + } + + async exec(message, args) { + let input = `${os.tmpdir()}/${message.id}.mp4`; + let output = `${os.tmpdir()}/Shittifyed${message.id}.mp4`; + if (args.link) { + let video = youtubedl(args.link); + video.on('error', function error(err) { + console.log('error 2:', err); + message.channel.send('An error has occured, I can\'t download from the link you provided.'); + }); + video.pipe(fs.createWriteStream(input)); + video.on('end', function () { + exec(`ffmpeg -i ${input} -b:v 10k -b:a 20k -vcodec libx264 -r 5 -r 15 ${output}`) + .then(() => { + return message.channel.send({files: [output]}) + .catch(err => { + console.error(err); + return message.channel.send('On no! an error just occured! perhaps the file is too big?'); + }); + }); + }); + } else { + return message.channel.send('You need a valid video link!'); + } + } +} + +module.exports = vidshittifyerCommand; \ No newline at end of file