ilhamdev commited on
Commit
16db206
·
verified ·
1 Parent(s): 374968d

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +32 -2
index.js CHANGED
@@ -2,7 +2,8 @@ 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 } = require('stream');
 
6
  const util = require('util');
7
  const axios = require('axios');
8
  const FormData = require('form-data')
@@ -218,13 +219,41 @@ async function fileDitch(media){
218
 
219
  axios.post("https://up1.fileditch.com/upload.php", form, {
220
  headers: {
221
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0",
 
222
  ...form.getHeaders()
223
  }
224
  }).then(({ data }) => resolve(data?.files[0]?.url)).catch(reject)
225
  })
226
  //https://up1.fileditch.com/upload.php
227
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  async function ytAPI(url) {
229
  try {
230
  const ID = ytdl.getVideoID(url)
@@ -232,6 +261,7 @@ 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 {
 
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 ffmpeg = require('fluent-ffmpeg');
7
  const util = require('util');
8
  const axios = require('axios');
9
  const FormData = require('form-data')
 
219
 
220
  axios.post("https://up1.fileditch.com/upload.php", form, {
221
  headers: {
222
+ "User-Agent": generateRandomUserAgent(),
223
+ "X-Forwarded-For": generateRandomIP(),
224
  ...form.getHeaders()
225
  }
226
  }).then(({ data }) => resolve(data?.files[0]?.url)).catch(reject)
227
  })
228
  //https://up1.fileditch.com/upload.php
229
  }
230
+ async function convertWebmToMp3(webmBuffer) {
231
+ return new Promise((resolve, reject) => {
232
+ // Buat stream Readable dari buffer webm
233
+ const webmStream = new Readable();
234
+ webmStream.push(webmBuffer);
235
+ webmStream.push(null); // Selesai mengirim data
236
+
237
+ // Buffer untuk menampung hasil konversi
238
+ const buffers = [];
239
+
240
+ ffmpeg()
241
+ .input(webmStream)
242
+ .toFormat('mp3')
243
+ .on('error', err => {
244
+ reject(err);
245
+ })
246
+ .on('data', chunk => {
247
+ buffers.push(chunk);
248
+ })
249
+ .on('end', () => {
250
+ // Gabungkan semua buffer menjadi satu buffer tunggal
251
+ const mp3Buffer = Buffer.concat(buffers);
252
+ resolve(mp3Buffer);
253
+ })
254
+ .run();
255
+ });
256
+ }
257
  async function ytAPI(url) {
258
  try {
259
  const ID = ytdl.getVideoID(url)
 
261
  let audioStream = await ytdl(ID, {filter: "audioonly", quality:"lowestaudio"})
262
  let buffermp4 = await streamToBuffer(videoStream)
263
  let buffermp3 = await streamToBuffer(audioStream)
264
+ buffermp3 = await convertWebmToMp3(buffermp3)
265
  buffermp4 = await fileDitch(buffermp4)
266
  buffermp3 = await fileDitch(buffermp3)
267
  return {