Compare commits
No commits in common. "f55b54eb49397c395ea6584f245ced25249601fb" and "ee21f4d75fa843c413fca63efe5f85082dde877b" have entirely different histories.
f55b54eb49
...
ee21f4d75f
3 changed files with 3745 additions and 1641 deletions
|
@ -1,85 +0,0 @@
|
||||||
const { execFileSync } = require('child_process');
|
|
||||||
const path = require('path');
|
|
||||||
const fs = require('fs')
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
name: 'dl',
|
|
||||||
description: 'Download a video',
|
|
||||||
moreHelp: [
|
|
||||||
"Usage: <prefix>dl <url>"
|
|
||||||
],
|
|
||||||
async execute({message, args}) {
|
|
||||||
const downloadsDir = path.resolve(process.cwd(), 'data', 'downloads', Date.now().toString());
|
|
||||||
const cookieFilepath = path.resolve(process.cwd(), 'data', 'cookies.txt')
|
|
||||||
if(!fs.existsSync(cookieFilepath)) {
|
|
||||||
message.channel.send("Some dependencies are needed for the command to work properly. Please let the bot's owner know.")
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fs.mkdirSync(downloadsDir, {recursive: true});
|
|
||||||
|
|
||||||
let url;
|
|
||||||
|
|
||||||
if(args.length > 0){
|
|
||||||
if(args[0].charAt(0) === '<' && args[0].charAt(args[0].length - 1) === '>'){
|
|
||||||
args[0] = args[0].slice(1, args[0].length - 1)
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
url = new URL(args[0]);
|
|
||||||
url = url.href;
|
|
||||||
} catch (error) {
|
|
||||||
this.cleanUp(downloadsDir);
|
|
||||||
message.channel.send("Could not parse the provided argument as a URL.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.cleanUp(downloadsDir);
|
|
||||||
return message.channel.send("You have to provide a URL in an argument.")
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalMessage = await message.channel.send("Downloading video...")
|
|
||||||
|
|
||||||
if(this.executeCommand("yt-dlp", [url, "-P", downloadsDir, "--cookies", cookieFilepath]).error){
|
|
||||||
originalMessage.edit("An error occurred when downloading the video.");
|
|
||||||
this.cleanUp(downloadsDir);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let files = fs.readdirSync(downloadsDir);
|
|
||||||
if(files.length < 1) {
|
|
||||||
this.cleanUp(downloadsDir);
|
|
||||||
originalMessage.edit("Something went wrong when downloading the video.")
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const filename = files[0];
|
|
||||||
|
|
||||||
await originalMessage.edit({
|
|
||||||
content: null,
|
|
||||||
files: [{
|
|
||||||
attachment: path.resolve(downloadsDir, filename)
|
|
||||||
}]})
|
|
||||||
|
|
||||||
this.cleanUp(downloadsDir);
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
cleanUp(downloadsDir){
|
|
||||||
fs.rmSync(downloadsDir, {force: true, recursive: true});
|
|
||||||
},
|
|
||||||
|
|
||||||
executeCommand(command, commandArgs, verbose=false) {
|
|
||||||
if (typeof command !== 'string' || !Array.isArray(commandArgs)) return { error: true };
|
|
||||||
console.log("Executing:", command, commandArgs.join(" "));
|
|
||||||
try {
|
|
||||||
const output = execFileSync(command, commandArgs, {encoding: 'utf8'})
|
|
||||||
if (output.length != 0 && verbose)
|
|
||||||
console.log(output)
|
|
||||||
} catch (error) {
|
|
||||||
console.error(`Error executing ${command} command:`, error);
|
|
||||||
return { error: true };
|
|
||||||
}
|
|
||||||
return { error: false };
|
|
||||||
},
|
|
||||||
|
|
||||||
}
|
|
5297
package-lock.json
generated
5297
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -5,7 +5,7 @@
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@zuzak/owo": "^1.14.1",
|
"@zuzak/owo": "^1.14.1",
|
||||||
"discord.js": "^14.20.0",
|
"discord.js": "^14.19.3",
|
||||||
"dotenv": "^16.5.0",
|
"dotenv": "^16.5.0",
|
||||||
"seedrandom": "^3.0.5",
|
"seedrandom": "^3.0.5",
|
||||||
"sqlite3": "^5.1.6"
|
"sqlite3": "^5.1.6"
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"author": "SileNce5k",
|
"author": "SileNce5k",
|
||||||
"license": "UNLICENSE",
|
"license": "UNLICENSE",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^30.0.0",
|
"@types/jest": "^29.5.14",
|
||||||
"jest": "^30.0.0"
|
"jest": "^30.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue