ilhamdev commited on
Commit
c1d4809
·
verified ·
1 Parent(s): dc04f0e

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +31 -2
index.js CHANGED
@@ -2,7 +2,7 @@ const yts = require('yt-search');
2
  const morgan = require('morgan');
3
  const express = require('express');
4
  const ytdl = require('ytdl-core');
5
- const { Writable, pipeline, Readable } = require('stream');
6
  const util = require('util');
7
  const axios = require('axios');
8
  const FormData = require('form-data')
@@ -194,6 +194,34 @@ async function fby2mate(url) {
194
  return e;
195
  }
196
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  async function streamToBuffer(stream) {
198
  const chunks = [];
199
  const captureChunks = new Writable({
@@ -232,8 +260,9 @@ async function ytAPI(url) {
232
  let audioStream = await ytdl(ID, {filter: "audioonly", quality:"lowestaudio"})
233
  let buffermp4 = await streamToBuffer(videoStream)
234
  let buffermp3 = await streamToBuffer(audioStream)
 
235
  buffermp4 = await fileDitch(buffermp4)
236
- buffermp3 = await fileDitch(buffermp3)
237
  return {
238
  mp4_url: buffermp4,
239
  mp3_url: buffermp3,
 
2
  const morgan = require('morgan');
3
  const express = require('express');
4
  const ytdl = require('ytdl-core');
5
+ const { Writable, pipeline, Readable, PassThrough } = require('stream');
6
  const util = require('util');
7
  const axios = require('axios');
8
  const FormData = require('form-data')
 
194
  return e;
195
  }
196
  }
197
+ function bufferToStream(buffer) {
198
+ const stream = new Readable();
199
+ stream.push(buffer);
200
+ stream.push(null); // Menandakan akhir dari stream
201
+ return stream;
202
+ }
203
+ function convertWebmToMp3(webmBuffer) {
204
+ return new Promise((resolve, reject) => {
205
+ const inputStream = bufferToStream(webmBuffer);
206
+ const outputStream = new PassThrough();
207
+ const chunks = [];
208
+
209
+ ffmpeg(inputStream)
210
+ .inputFormat('webm')
211
+ .audioCodec('libmp3lame')
212
+ .format('mp3')
213
+ .on('data', (chunk) => {
214
+ chunks.push(chunk);
215
+ })
216
+ .on('end', () => {
217
+ resolve(Buffer.concat(chunks));
218
+ })
219
+ .on('error', (err) => {
220
+ reject(err);
221
+ })
222
+ .pipe(outputStream, { end: true });
223
+ });
224
+ }
225
  async function streamToBuffer(stream) {
226
  const chunks = [];
227
  const captureChunks = new Writable({
 
260
  let audioStream = await ytdl(ID, {filter: "audioonly", quality:"lowestaudio"})
261
  let buffermp4 = await streamToBuffer(videoStream)
262
  let buffermp3 = await streamToBuffer(audioStream)
263
+ let konvert = await convertWebmToMp3(buffermp3)
264
  buffermp4 = await fileDitch(buffermp4)
265
+ buffermp3 = await fileDitch(konvert)
266
  return {
267
  mp4_url: buffermp4,
268
  mp3_url: buffermp3,