DashX-API / plugins /ytdl.js
HerzaJ's picture
Upload 36 files
7e9ddb1 verified
raw
history blame
2.58 kB
const { youtube } = require('notmebotz-tools');
const handler = async (req, res) => {
try {
const { url, type, quality } = req.query;
if (!url) {
return res.status(400).json({
author: "Herza",
success: false,
error: 'Missing required parameter: url'
});
}
if (!type) {
return res.status(400).json({
author: "Herza",
success: false,
error: 'Missing required parameter: type'
});
}
const validTypes = ['mp3', 'mp4'];
if (!validTypes.includes(type.toLowerCase())) {
return res.status(400).json({
author: "Herza",
success: false,
error: `${type} is not available, only mp3 and mp4`
});
}
if (type.toLowerCase() === 'mp4') {
const validQualities = ['144', '240', '360', '480', '720', '1080'];
if (!quality) {
return res.status(400).json({
author: "Herza",
success: false,
error: 'Missing required parameter: quality',
formats: ['144', '240', '360', '480', '720', '1080']
});
}
if (!validQualities.includes(quality)) {
return res.status(400).json({
author: "Herza",
success: false,
error: `Quality ${quality} is not available`,
formats: ['144', '240', '360', '480', '720', '1080']
});
}
const result = await youtube(`yt${type.toLowerCase()}`, url, quality);
if (result.status !== 200) {
return res.status(result.status).json({
author: "Herza",
success: false,
error: result.data.message || 'Failed to download video'
});
}
return res.json({
author: "Herza",
success: true,
data: result.data
});
}
const result = await youtube(`yt${type.toLowerCase()}`, url);
if (result.status !== 200) {
return res.status(result.status).json({
author: "Herza",
success: false,
error: result.data.message || 'Failed to download audio'
});
}
res.json({
author: "Herza",
success: true,
data: result.data
});
} catch (error) {
res.status(500).json({
author: "Herza",
success: false,
error: error.message
});
}
};
module.exports = {
name: 'YouTube DL',
description: 'Download YouTube Video/Audio',
type: 'GET',
routes: ['api/download/youtube'],
tags: ['downloader', 'tools', 'misc'],
parameters: ['url', 'type', 'quality', 'key'],
enabled: true,
main: ['Downloader'],
handler
};