UNPKG

notmebotz-tools

Version:

Sebuah Tools yang berfungsi untuk mendownload Video atau Foto dari media sosial, serta sebagai tools yang berguna untuk aplikasi kamu seperti untuk BOT

78 lines (69 loc) 2.62 kB
const acrcloud = require('acrcloud') const ffmpeg = require('fluent-ffmpeg') const fs = require('fs') const os = require('os') const axios = require('axios') const acr = new acrcloud({ host: "identify-eu-west-1.acrcloud.com", access_key: "c9f2fca5e16a7986b0a6c8ff70ed0a06", access_secret: "PQR9E04ZD60wQPgTSRRqwkBFIWEZldj0G3q7NJuR" }) async function whatmusisc(input) { try { const tmpDir = os.tmpdir() const dateNow = Date.now() let file_path = `${tmpDir}/${dateNow}.mp3` if (Buffer.isBuffer(input)) { fs.writeFileSync(file_path, input) } else if (typeof input === 'string') { if (/^https?:\/\//.test(input)) { let response = await axios.get(input, { responseType: 'arraybuffer' }) fs.writeFileSync(file_path, Buffer.from(response.data)) } else if (fs.existsSync(input)) { file_path = input } else { throw Error('File tidak ditemukan') } } else { throw Error('Harus berupa URL, file, atau buffer!') } return new Promise((resolve, reject) => { let outputna = `${tmpDir}/${dateNow}_converted.mp3` ffmpeg(file_path) .audioCodec('libmp3lame') .on('error', (err) => { fs.unlinkSync(file_path) reject(`FFmpeg error: ${err.message}`) }) .on('end', async () => { fs.unlinkSync(file_path) let sample = fs.readFileSync(outputna) acr.identify(sample).then((metadata) => { fs.unlinkSync(outputna) if (metadata.status.msg === 'No result') return reject('Nggak ketemu :(') let song = metadata.metadata.music[0] let spotify_data = song.external_metadata?.spotify let youtube_id = song.external_metadata?.youtube?.vid || null resolve({ author: "Herza", status: 200, results: { title: song.title, artists: song.artists.map(a => a.name).join(', '), album: song.album.name, release_date: song.release_date, label: song.label, duration: song.duration_ms, spotify: spotify_data?.track?.id ? { name: song.title, url: `https://open.spotify.com/track/${spotify_data.track.id}` } : null, youtube: youtube_id ? `https://www.youtube.com/watch?v=${youtube_id}` : null } }) }).catch((err) => reject(err.message)) }) .saveToFile(outputna) }) } catch (err) { return Promise.reject(err.message) } } module.exports = { whatmusisc }