Update index.js
Browse files
index.js
CHANGED
|
@@ -2,12 +2,11 @@ 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
|
| 6 |
const util = require('util');
|
| 7 |
const FormData = require('form-data');
|
| 8 |
const axios = require('axios');
|
| 9 |
const FileType = require('file-type');
|
| 10 |
-
const ffmpeg = require('fluent-ffmpeg');
|
| 11 |
|
| 12 |
// Regex untuk mengidentifikasi URL YouTube dan Mega
|
| 13 |
const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)?youtube(?:\-nocookie|)\.com\/(?:shorts\/)?(?:watch\?.*(?:|\&)v=|embed\/|v\/)?|youtu\.be\/)([-_0-9A-Za-z]{11})/;
|
|
@@ -23,27 +22,6 @@ const post = async (url, form, headers = {}) => {
|
|
| 23 |
};
|
| 24 |
|
| 25 |
//YTDL-CORE
|
| 26 |
-
function webmToMp3(inputBuffer) {
|
| 27 |
-
return new Promise((resolve, reject) => {
|
| 28 |
-
// Membuat stream dari buffer
|
| 29 |
-
const inputStream = new PassThrough();
|
| 30 |
-
inputStream.end(inputBuffer);
|
| 31 |
-
|
| 32 |
-
// Membuat buffer output
|
| 33 |
-
let outputBuffer = Buffer.alloc(0);
|
| 34 |
-
|
| 35 |
-
ffmpeg(inputStream)
|
| 36 |
-
.inputFormat('webm')
|
| 37 |
-
.outputFormat('mp3')
|
| 38 |
-
.on('error', reject)
|
| 39 |
-
.on('data', (chunk) => {
|
| 40 |
-
outputBuffer = Buffer.concat([outputBuffer, chunk]);
|
| 41 |
-
})
|
| 42 |
-
.on('end', () => resolve(outputBuffer))
|
| 43 |
-
.output(PassThrough()) // Menambahkan output stream
|
| 44 |
-
.run();
|
| 45 |
-
});
|
| 46 |
-
}
|
| 47 |
async function uploadBuffer(buffer) {
|
| 48 |
//file: (binary)
|
| 49 |
//expirationTime: 1
|
|
@@ -160,8 +138,7 @@ async function ytmp3(url, bitrate = 'lowestaudio') {
|
|
| 160 |
data = await ytdl.getInfo('https://www.youtube.com/watch?v=' + ID)
|
| 161 |
let audioStream = await ytdl(ID, { filter: 'audioonly', quality: 'lowestaudio', });
|
| 162 |
let buffer = await streamToBuffer(audioStream)
|
| 163 |
-
let
|
| 164 |
-
let upload = await uploadBuffer(bufferMP3)
|
| 165 |
let format = ytdl.chooseFormat(data.formats, { filter: 'audioonly', quality: bitrate });
|
| 166 |
|
| 167 |
if (format) {
|
|
|
|
| 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 FormData = require('form-data');
|
| 8 |
const axios = require('axios');
|
| 9 |
const FileType = require('file-type');
|
|
|
|
| 10 |
|
| 11 |
// Regex untuk mengidentifikasi URL YouTube dan Mega
|
| 12 |
const ytIdRegex = /(?:http(?:s|):\/\/|)(?:(?:www\.|)?youtube(?:\-nocookie|)\.com\/(?:shorts\/)?(?:watch\?.*(?:|\&)v=|embed\/|v\/)?|youtu\.be\/)([-_0-9A-Za-z]{11})/;
|
|
|
|
| 22 |
};
|
| 23 |
|
| 24 |
//YTDL-CORE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
async function uploadBuffer(buffer) {
|
| 26 |
//file: (binary)
|
| 27 |
//expirationTime: 1
|
|
|
|
| 138 |
data = await ytdl.getInfo('https://www.youtube.com/watch?v=' + ID)
|
| 139 |
let audioStream = await ytdl(ID, { filter: 'audioonly', quality: 'lowestaudio', });
|
| 140 |
let buffer = await streamToBuffer(audioStream)
|
| 141 |
+
let upload = await uploadBuffer(buffer)
|
|
|
|
| 142 |
let format = ytdl.chooseFormat(data.formats, { filter: 'audioonly', quality: bitrate });
|
| 143 |
|
| 144 |
if (format) {
|