Update index.js
Browse files
index.js
CHANGED
|
@@ -17,6 +17,28 @@ let fetch;
|
|
| 17 |
(async () => {
|
| 18 |
fetch = (await import('node-fetch')).default;
|
| 19 |
})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
// Regex untuk mengidentifikasi URL YouTube dan Mega
|
| 22 |
const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)?youtube(?:\-nocookie|)\.com\/(?:shorts\/)?(?:watch\?.*(?:|\&)v=|embed\/|v\/)?|youtu\.be\/)([-_0-9A-Za-z]{11})/;
|
|
@@ -279,7 +301,8 @@ async function ytmp3(url, bitrate = 'lowestaudio') {
|
|
| 279 |
data = await ytdl.getInfo('https://www.youtube.com/watch?v=' + ID)
|
| 280 |
let audioStream = await ytdl(ID, { filter: 'audioonly', quality: 'lowestaudio', });
|
| 281 |
let buffer = await streamToBuffer(audioStream)
|
| 282 |
-
let
|
|
|
|
| 283 |
let format = ytdl.chooseFormat(data.formats, { filter: 'audioonly', quality: bitrate });
|
| 284 |
|
| 285 |
if (format) {
|
|
|
|
| 17 |
(async () => {
|
| 18 |
fetch = (await import('node-fetch')).default;
|
| 19 |
})();
|
| 20 |
+
const ffmpeg = require('fluent-ffmpeg');
|
| 21 |
+
|
| 22 |
+
function convertVideoToMp3(videoBuffer) {
|
| 23 |
+
return new Promise((resolve, reject) => {
|
| 24 |
+
let mp3Buffer = Buffer.alloc(0);
|
| 25 |
+
|
| 26 |
+
ffmpeg()
|
| 27 |
+
.input(videoBuffer)
|
| 28 |
+
.inputFormat('mp4')
|
| 29 |
+
.outputFormat('mp3')
|
| 30 |
+
.on('error', (err) => {
|
| 31 |
+
reject(err);
|
| 32 |
+
})
|
| 33 |
+
.on('data', (chunk) => {
|
| 34 |
+
mp3Buffer = Buffer.concat([mp3Buffer, chunk]);
|
| 35 |
+
})
|
| 36 |
+
.on('end', () => {
|
| 37 |
+
resolve(mp3Buffer);
|
| 38 |
+
})
|
| 39 |
+
.run();
|
| 40 |
+
});
|
| 41 |
+
}
|
| 42 |
|
| 43 |
// Regex untuk mengidentifikasi URL YouTube dan Mega
|
| 44 |
const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)?youtube(?:\-nocookie|)\.com\/(?:shorts\/)?(?:watch\?.*(?:|\&)v=|embed\/|v\/)?|youtu\.be\/)([-_0-9A-Za-z]{11})/;
|
|
|
|
| 301 |
data = await ytdl.getInfo('https://www.youtube.com/watch?v=' + ID)
|
| 302 |
let audioStream = await ytdl(ID, { filter: 'audioonly', quality: 'lowestaudio', });
|
| 303 |
let buffer = await streamToBuffer(audioStream)
|
| 304 |
+
let konvert = await convertVideoToMp3(buffer)
|
| 305 |
+
let upload = await uploadBuffer(konvert)
|
| 306 |
let format = ytdl.chooseFormat(data.formats, { filter: 'audioonly', quality: bitrate });
|
| 307 |
|
| 308 |
if (format) {
|