Update index.js
Browse files
index.js
CHANGED
|
@@ -88,35 +88,36 @@ const app = express()
|
|
| 88 |
.use(express.json())
|
| 89 |
.all('/', (_, res) => res.send('Hello World'))
|
| 90 |
.get('/yt', async (req, res) => {
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
}
|
| 107 |
-
if (!type || !/audio|video/i.test(type)) type = 'video';
|
| 108 |
-
let data = await youtubedl(url).catch(e => console.log(e));
|
| 109 |
-
if (!data) return res.json({ message: 'Error: link download not found' });
|
| 110 |
-
type = type.toLowerCase();
|
| 111 |
-
let result = quality ? Object.values(data[type]).find(x => x.quality == quality) : Object.values(data[type])[0];
|
| 112 |
-
if (quality && !result) return res.json({ message: `Invalid quality: ${quality}, available quality (${Object.keys(data[type]).join('/')})` });
|
| 113 |
-
if (!result) return res.json({ message: 'Error: can\'t download' });
|
| 114 |
-
res.redirect(await result.download());
|
| 115 |
-
} catch (e) {
|
| 116 |
-
console.log(e);
|
| 117 |
-
res.json({ message: e });
|
| 118 |
}
|
| 119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
.get('/search', async (req, res) => {
|
| 121 |
try {
|
| 122 |
let q = req.query.q || req.query.query;
|
|
|
|
| 88 |
.use(express.json())
|
| 89 |
.all('/', (_, res) => res.send('Hello World'))
|
| 90 |
.get('/yt', async (req, res) => {
|
| 91 |
+
const host = 'https://' + req.get('host');
|
| 92 |
+
try {
|
| 93 |
+
let { url, type, quality, json } = req.query;
|
| 94 |
+
if (!ytIdRegex.test(url)) return res.json({ message: 'Invalid URL' });
|
| 95 |
+
if (!!json) {
|
| 96 |
+
let ytId = ytIdRegex.exec(url)?.[1];
|
| 97 |
+
if (!ytId) return res.json({ message: 'No video id found' });
|
| 98 |
+
let data = await yts({ videoId: ytId });
|
| 99 |
+
const downloadUrls = {
|
| 100 |
+
audio: `${host}/yt?url=${url}&type=audio&quality=`,
|
| 101 |
+
video: `${host}/yt?url=${url}&type=video&quality=`,
|
| 102 |
+
};
|
| 103 |
+
return res.json({
|
| 104 |
+
...data,
|
| 105 |
+
download: downloadUrls
|
| 106 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
}
|
| 108 |
+
if (!type || !/audio|video/i.test(type)) type = 'video';
|
| 109 |
+
let data = await youtubedl(url).catch(e => console.log(e));
|
| 110 |
+
if (!data) return res.json({ message: 'Error: link download not found' });
|
| 111 |
+
type = type.toLowerCase();
|
| 112 |
+
let result = quality ? Object.values(data[type]).find(x => x.quality == quality) : Object.values(data[type])[0];
|
| 113 |
+
if (quality && !result) return res.json({ message: `Invalid quality: ${quality}, available quality (${Object.keys(data[type]).join('/')})` });
|
| 114 |
+
if (!result) return res.json({ message: 'Error: can\'t download' });
|
| 115 |
+
res.redirect(await result.download());
|
| 116 |
+
} catch (e) {
|
| 117 |
+
console.log(e);
|
| 118 |
+
res.json({ message: e });
|
| 119 |
+
}
|
| 120 |
+
})
|
| 121 |
.get('/search', async (req, res) => {
|
| 122 |
try {
|
| 123 |
let q = req.query.q || req.query.query;
|