| 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 |
| }; |