ilhamdev commited on
Commit
afb8705
·
verified ·
1 Parent(s): 9b747d0

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +29 -6
index.js CHANGED
@@ -195,12 +195,34 @@ async function fby2mate(url) {
195
  return e;
196
  }
197
  }
198
- function bufferToStream(buffer) {
199
- const stream = new Readable();
200
- stream.push(buffer);
201
- stream.push(null); // Menandakan akhir dari stream
202
- return stream;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: "audioonly", quality:"lowestaudio"})
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 {