Update index.js
Browse files
index.js
CHANGED
|
@@ -195,12 +195,34 @@ async function fby2mate(url) {
|
|
| 195 |
return e;
|
| 196 |
}
|
| 197 |
}
|
| 198 |
-
function
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
}
|
|
|
|
| 204 |
async function streamToBuffer(stream) {
|
| 205 |
const chunks = [];
|
| 206 |
const captureChunks = new Writable({
|
|
@@ -236,9 +258,10 @@ async function ytAPI(url) {
|
|
| 236 |
try {
|
| 237 |
const ID = ytdl.getVideoID(url)
|
| 238 |
let videoStream = await ytdl(ID, { filter: 'audioandvideo', quality: 'highestvideo' });
|
| 239 |
-
let audioStream = await ytdl(ID, {filter: "
|
| 240 |
let buffermp4 = await streamToBuffer(videoStream)
|
| 241 |
let buffermp3 = await streamToBuffer(audioStream)
|
|
|
|
| 242 |
buffermp4 = await fileDitch(buffermp4)
|
| 243 |
buffermp3 = await fileDitch(buffermp3)
|
| 244 |
return {
|
|
|
|
| 195 |
return e;
|
| 196 |
}
|
| 197 |
}
|
| 198 |
+
async function convertMp4ToAudio(inputBuffer) {
|
| 199 |
+
return new Promise((resolve, reject) => {
|
| 200 |
+
const inputStream = new Readable();
|
| 201 |
+
inputStream.push(inputBuffer);
|
| 202 |
+
inputStream.push(null);
|
| 203 |
+
|
| 204 |
+
const outputBuffer = [];
|
| 205 |
+
const outputStream = new Writable({
|
| 206 |
+
write(chunk, encoding, callback) {
|
| 207 |
+
outputBuffer.push(chunk);
|
| 208 |
+
callback();
|
| 209 |
+
}
|
| 210 |
+
});
|
| 211 |
+
|
| 212 |
+
ffmpeg(inputStream)
|
| 213 |
+
.toFormat('mp3')
|
| 214 |
+
.on('end', () => {
|
| 215 |
+
console.log('Conversion finished!');
|
| 216 |
+
resolve(Buffer.concat(outputBuffer));
|
| 217 |
+
})
|
| 218 |
+
.on('error', (err) => {
|
| 219 |
+
console.error('Error during conversion:', err);
|
| 220 |
+
reject(err);
|
| 221 |
+
})
|
| 222 |
+
.pipe(outputStream);
|
| 223 |
+
});
|
| 224 |
}
|
| 225 |
+
|
| 226 |
async function streamToBuffer(stream) {
|
| 227 |
const chunks = [];
|
| 228 |
const captureChunks = new Writable({
|
|
|
|
| 258 |
try {
|
| 259 |
const ID = ytdl.getVideoID(url)
|
| 260 |
let videoStream = await ytdl(ID, { filter: 'audioandvideo', quality: 'highestvideo' });
|
| 261 |
+
let audioStream = await ytdl(ID, {filter: "audioandvideo", quality:"lowest"})
|
| 262 |
let buffermp4 = await streamToBuffer(videoStream)
|
| 263 |
let buffermp3 = await streamToBuffer(audioStream)
|
| 264 |
+
buffermp3 = await convertMp4ToAudio(buffermp3)
|
| 265 |
buffermp4 = await fileDitch(buffermp4)
|
| 266 |
buffermp3 = await fileDitch(buffermp3)
|
| 267 |
return {
|