From c603b977485b082d3d70ec5e3593e936c9df5608 Mon Sep 17 00:00:00 2001 From: BrunoSobrino <90165013+BrunoSobrino@users.noreply.github.com> Date: Thu, 16 May 2024 19:46:17 -0600 Subject: [PATCH] Update descargas-play_v2.js --- plugins/descargas-play_v2.js | 386 ++++++++++------------------------- 1 file changed, 112 insertions(+), 274 deletions(-) diff --git a/plugins/descargas-play_v2.js b/plugins/descargas-play_v2.js index d3c1c47c13..59be14e9f8 100644 --- a/plugins/descargas-play_v2.js +++ b/plugins/descargas-play_v2.js @@ -17,178 +17,147 @@ let buff; let mimeType; let fileName; let apiUrl; +let apiUrl2; let enviando = false; let device; const handler = async (m, { command, usedPrefix, conn, text }) => { - const datas = global - const idioma = datas.db.data.users[m.sender].language - const _translate = JSON.parse(fs.readFileSync(`./language/${idioma}.json`)) - const tradutor = _translate.plugins.descargas_play_v2 + const datas = global; + const idioma = datas.db.data.users[m.sender].language; + const _translate = JSON.parse(fs.readFileSync(`./language/${idioma}.json`)); + const tradutor = _translate.plugins.descargas_play_v2; device = await getDevice(m.key.id); - + if (!text) throw `${tradutor.texto1[0]} _${usedPrefix + command} ${tradutor.texto1[1]} _${usedPrefix + command} https://youtu.be/JLWRZ8eWyZo?si=EmeS9fJvS_OkDk7p_`; - if (command === 'playyt' && device == 'desktop' || command === 'playyt' && device == 'web') throw `*[❗] Los mensajes de botones aun no estan disponibles en WhatsApp web, acceda a su celular para poder ver y usar los mensajes con botones.*` + if (command === 'playyt' && (device == 'desktop' || device == 'web')) throw `*[❗] Los mensajes de botones aun no estan disponibles en WhatsApp web, acceda a su celular para poder ver y usar los mensajes con botones.*`; if (enviando) return; - enviando = true + enviando = true; + try { - const apiUrls = [ `https://api.cafirexos.com/api/ytplay?text=${text}`, `https://api-brunosobrino.onrender.com/api/ytplay?text=${text}&apikey=BrunoSobrino`, - `https://api-for-canvas-brunosobrino.koyeb.app/api/ytplay?text=${text}`, + `https://api-for-canvas-brunosobrino.koyeb.app/api/ytplay?text=${text}` ]; + let success = false; for (const url of apiUrls) { try { const res = await fetch(url); data = await res.json(); if (data.resultado && data.resultado.url) { + success = true; break; } } catch {} } - if (!data.resultado || !data.resultado.url) { + if (!success) { enviando = false; throw `${tradutor.texto2}`; - } - + } + if (command === 'playyt') { - - const dataMessagee = `${tradutor.texto4[0]} ${data.resultado.title}\n${tradutor.texto4[1]} ${data.resultado.publicDate}\n${tradutor.texto4[2]} ${data.resultado.channel}\n${tradutor.texto4[3]} ${data.resultado.url}`.trim(); - var messa = await prepareWAMessageMedia({ image: {url: data.resultado.image}}, { upload: conn.waUploadToServer }) - let msg = generateWAMessageFromContent(m.chat, { - viewOnceMessage: { - message: { - interactiveMessage: { - body: { text: dataMessagee }, - footer: { text: `${global.wm}`.trim() }, - header: { - hasMediaAttachment: true, - imageMessage: messa.imageMessage, - }, - nativeFlowMessage: { - buttons: [ - { - name: 'quick_reply', - buttonParamsJson: JSON.stringify({ - display_text: 'AUDIO', - id: `${usedPrefix}play.1 ${data.resultado.url} SN@` - }) - }, - { - name: 'quick_reply', - buttonParamsJson: JSON.stringify({ - display_text: 'VIDEO', - id: `${usedPrefix}play.2 ${data.resultado.url} SN@` - }) - }, - /*{ - // URL Redirect - name: 'cta_url', - buttonParamsJson: JSON.stringify({ - display_text: 'IR A YOUTUBE', - url: `${data.resultado.url}`, - merchant_url: `${data.resultado.url}`, - id: `${data.resultado.url}` - }) - },*/ - ], - messageParamsJson: "", - }, - }, - }, - } - }, { userJid: conn.user.jid, quoted: m}) + const dataMessagee = `${tradutor.texto4[0]} ${data.resultado.title}\n${tradutor.texto4[1]} ${data.resultado.publicDate}\n${tradutor.texto4[2]} ${data.resultado.channel}\n${tradutor.texto4[3]} ${data.resultado.url}`.trim(); + var messa = await prepareWAMessageMedia({ image: {url: data.resultado.image}}, { upload: conn.waUploadToServer }); + let msg = generateWAMessageFromContent(m.chat, { + viewOnceMessage: { + message: { + interactiveMessage: { + body: { text: dataMessagee }, + footer: { text: `${global.wm}`.trim() }, + header: { + hasMediaAttachment: true, + imageMessage: messa.imageMessage, + }, + nativeFlowMessage: { + buttons: [ + { + name: 'quick_reply', + buttonParamsJson: JSON.stringify({ + display_text: 'AUDIO', + id: `${usedPrefix}play.1 ${data.resultado.url} SN@` + }) + }, + { + name: 'quick_reply', + buttonParamsJson: JSON.stringify({ + display_text: 'VIDEO', + id: `${usedPrefix}play.2 ${data.resultado.url} SN@` + }) + }, + ], + messageParamsJson: "", + }, + }, + }, + } + }, { userJid: conn.user.jid, quoted: m}); conn.relayMessage(m.chat, msg.message, { messageId: msg.key.id}); - enviando = false; -return; - } - - try { - if (command === 'play.1') { - apiUrl = `https://api.cafirexos.com/api/v1/ytmp3?url=${data.resultado.url}`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api.cafirexos.com/api/v1/ytmp4?url=${data.resultado.url}`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); - } - } catch { + enviando = false; + return; + } + + try { + if (command === 'play.1') { + let apiUrls2 = [ + `https://api.cafirexos.com/api/v1/ytmp3?url=${data.resultado.url}`, + `https://api.cafirexos.com/api/v2/ytmp3?url=${data.resultado.url}`, + `https://api-brunosobrino.onrender.com/api/v1/ytmp3?url=${data.resultado.url}&apikey=BrunoSobrino`, + `https://api-brunosobrino.onrender.com/api/v2/ytmp3?url=${data.resultado.url}&apikey=BrunoSobrino`, + `https://api-for-canvas-brunosobrino.koyeb.app/api/v1/ytmp3?url=${data.resultado.url}`, + `https://api-for-canvas-brunosobrino.koyeb.app/api/v2/ytmp3?url=${data.resultado.url}`, + ]; + + let success2 = false; + for (const urll of apiUrls2) { try { - if (command === 'play.1') { - apiUrl = `https://api.cafirexos.com/api/v2/ytmp3?url=${data.resultado.url}`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api.cafirexos.com/api/v2/ytmp4?url=${data.resultado.url}`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); - } - } catch { - try { - if (command === 'play.1') { - apiUrl = `https://api-brunosobrino.onrender.com/api/v1/ytmp3?url=${data.resultado.url}&apikey=BrunoSobrino`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api-brunosobrino.onrender.com/api/v1/ytmp4?url=${data.resultado.url}&apikey=BrunoSobrino`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); - } - } catch { - try { - if (command === 'play.1') { - apiUrl = `https://api-brunosobrino.onrender.com/api/v2/ytmp3?url=${data.resultado.url}&apikey=BrunoSobrino`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api-brunosobrino.onrender.com/api/v2/ytmp4?url=${data.resultado.url}&apikey=BrunoSobrino`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); + apiUrl2 = urll; + mimeType = 'audio/mpeg'; + fileName = 'error.mp3'; + buff = await conn.getFile(apiUrl2); + success2 = true; + break; + } catch {} } - } catch { - try { - if (command === 'play.1') { - apiUrl = `https://api-for-canvas-brunosobrino.koyeb.app/api/v1/ytmp3?url=${data.resultado.url}`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api-for-canvas-brunosobrino.koyeb.app/api/v1/ytmp4?url=${data.resultado.url}`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); + + if (!success2) { + enviando = false; + throw `${tradutor.texto3}`; } - } catch { + } else if (command === 'play.2') { + let apiUrls22 = [ + `https://api.cafirexos.com/api/v1/ytmp4?url=${data.resultado.url}`, + `https://api.cafirexos.com/api/v2/ytmp4?url=${data.resultado.url}`, + `https://api-brunosobrino.onrender.com/api/v1/ytmp4?url=${data.resultado.url}&apikey=BrunoSobrino`, + `https://api-brunosobrino.onrender.com/api/v2/ytmp4?url=${data.resultado.url}&apikey=BrunoSobrino`, + `https://api-for-canvas-brunosobrino.koyeb.app/api/v1/ytmp4?url=${data.resultado.url}`, + `https://api-for-canvas-brunosobrino.koyeb.app/api/v2/ytmp4?url=${data.resultado.url}`, + ]; + + let success2 = false; + for (const urlll of apiUrls22) { try { - if (command === 'play.1') { - apiUrl = `https://api-for-canvas-brunosobrino.koyeb.app/api/v2/ytmp3?url=${data.resultado.url}`; - mimeType = 'audio/mpeg'; - fileName = 'error.mp3'; - buff = await conn.getFile(apiUrl); - } else if (command === 'play.2') { - apiUrl = `https://api-for-canvas-brunosobrino.koyeb.app/api/v2/ytmp4?url=${data.resultado.url}`; - mimeType = 'video/mp4'; - fileName = 'error.mp4'; - buff = await conn.getFile(apiUrl); - } - } catch { - enviando = false; - throw `${tradutor.texto3}`; + apiUrl2 = urlll; + mimeType = 'video/mp4'; + fileName = 'error.mp4'; + buff = await conn.getFile(apiUrl2); + success2 = true; + break; + } catch (e) { + console.log(e.message) } - } - }} - }} + } + + if (!success2) { + enviando = false; + throw `${tradutor.texto3}`; + } + } + } catch (ee) { + console.log(ee.message) + enviando = false; + throw `${tradutor.texto3}`; + } const dataMessage = `${tradutor.texto4[0]} ${data.resultado.title}\n${tradutor.texto4[1]} ${data.resultado.publicDate}\n${tradutor.texto4[2]} ${data.resultado.channel}\n${tradutor.texto4[3]} ${data.resultado.url}`; if (!text.includes('SN@')) await conn.sendMessage(m.chat, { text: dataMessage }, { quoted: m }); @@ -201,142 +170,11 @@ return; throw `${tradutor.texto5}`; } } catch (error) { - console.log(error) + console.log(error); enviando = false; throw tradutor.texto6; } }; -handler.command = /^(play.1|play.2|playyt)$/i; -export default handler; - -/////////////////////////////////////// -/*import fetch from 'node-fetch'; -import yts from 'yt-search'; -import ytdl from 'ytdl-core'; -import axios from 'axios'; -const handler = async (m, {command, usedPrefix, conn, text}) => { - if (!text) throw `*[β—πˆππ…πŽβ—] π™½π™Ύπ™Όπ™±πšπ™΄ 𝙳𝙴 𝙻𝙰 𝙲𝙰𝙽𝙲𝙸𝙾𝙽 π™΅π™°π™»πšƒπ™°π™½πšƒπ™΄, π™Ώπ™Ύπš π™΅π™°πš…π™Ύπš π™Έπ™½π™Άπšπ™΄πš‚π™΄ 𝙴𝙻 𝙲𝙾𝙼𝙰𝙽𝙳𝙾 π™Όπ™°πš‚ 𝙴𝙻 π™½π™Ύπ™Όπ™±πšπ™΄/πšƒπ™Έπšƒπš„π™»π™Ύ 𝙳𝙴 π™°π™»π™Άπš„π™½π™° 𝙲𝙰𝙽𝙲𝙸𝙾𝙽 𝙾 πš…π™Έπ™³π™΄π™Ύ 𝙳𝙴 πšˆπ™Ύπš„πšƒπš„π™±π™΄*\n\n*β€”β—‰ 𝙴𝙹𝙴𝙼𝙿𝙻𝙾:*\n*${usedPrefix + command} Good Feeling - Flo Rida*`; - try { - if (command == 'play.1') { - conn.reply(m.chat, `*_⏳Sᴇ ᴇsα΄›α΄€ α΄˜Κ€α΄α΄„α΄‡sᴀɴᴅᴏ Sᴜ α΄€α΄œα΄…Ιͺᴏ...⏳_*`, m); - try { - const mediaa = await ytPlay(text); - const audiocore = mediaa.result2?.[0]?.audio || mediaa.result2?.[1]?.audio || mediaa.result2?.[2]?.audio || null; - const aa = await conn.sendMessage(m.chat, {audio: {url: audiocore}, fileName: `error.mp3`, mimetype: 'audio/mpeg'}, {quoted: m}); - if (!aa) { - throw new Error('*[❗] El primero metodo fallo, intentando otro...*'); - } - } catch { - const res = await fetch(`https://api.lolhuman.xyz/api/ytplay2?apikey=${lolkeysapi}&query=${text}`); - const json = await res.json(); - const aa_1 = await conn.sendMessage(m.chat, {audio: {url: json.result.audio}, fileName: `error.mp3`, mimetype: 'audio/mpeg'}, {quoted: m}); - if (!aa_1) aa_1 = await conn.sendFile(m.chat, json.result.audio, 'error.mp3', null, m, false, {mimetype: 'audio/mpeg'}); - } - } - if (command == 'play.2') { - conn.reply(m.chat, `*_⏳Sᴇ ᴇsα΄›α΄€ α΄˜Κ€α΄α΄„α΄‡sᴀɴᴅᴏ Sᴜ α΄ Ιͺᴅᴇᴏ...⏳_*`, m); - try { - const mediaa = await ytPlayVid(text); - const aa_2 = await conn.sendMessage(m.chat, {video: {url: mediaa.result}, fileName: `error.mp4`, caption: `_π“π‘πž 𝐌𝐲𝐬𝐭𝐒𝐜 - 𝐁𝐨𝐭_`, thumbnail: mediaa.thumb, mimetype: 'video/mp4'}, {quoted: m}); - if (!aa_2) { - throw new Error('*[❗] El primero metodo fallo, intentando otro...*'); - } - } catch { - const res = await fetch(`https://api.lolhuman.xyz/api/ytplay2?apikey=${lolkeysapi}&query=${text}`); - const json = await res.json(); - await conn.sendFile(m.chat, json.result.video, 'error.mp4', `_π“π‘πž 𝐌𝐲𝐬𝐭𝐒𝐜 - 𝐁𝐨𝐭_`, m); - } - } - } catch { - throw '*[β—πˆππ…πŽβ—] π™΄πšπšπ™Ύπš, π™Ώπ™Ύπš π™΅π™°πš…π™Ύπš πš…πš„π™΄π™»πš…π™° 𝙰 π™Έπ™½πšƒπ™΄π™½πšƒπ™°πšπ™»π™Ύ*'; - } -}; -handler.help = ['play.1', 'play.2'].map((v) => v + ' '); -handler.tags = ['downloader']; -handler.command = ['play.1', 'play.2']; +handler.command = /^(play.1|play.2|playyt)$/i; export default handler; - -function bytesToSize(bytes) { - return new Promise((resolve, reject) => { - const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; - if (bytes === 0) return 'n/a'; - const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10); - if (i === 0) resolve(`${bytes} ${sizes[i]}`); - resolve(`${(bytes / (1024 ** i)).toFixed(1)} ${sizes[i]}`); - }); -} - -async function ytMp3(url) { - return new Promise((resolve, reject) => { - ytdl.getInfo(url).then(async (getUrl) => { - const result = []; - for (let i = 0; i < getUrl.formats.length; i++) { - const item = getUrl.formats[i]; - if (item.mimeType == 'audio/webm; codecs=\"opus\"') { - const {contentLength} = item; - const bytes = await bytesToSize(contentLength); - result[i] = {audio: item.url, size: bytes}; - } - } - const resultFix = result.filter((x) => x.audio != undefined && x.size != undefined); - const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].audio}`); - const tinyUrl = tiny.data; - const title = getUrl.videoDetails.title; - const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url; - resolve({title, result: tinyUrl, result2: resultFix, thumb}); - }).catch(reject); - }); -} - -async function ytMp4(url) { - return new Promise(async (resolve, reject) => { - ytdl.getInfo(url).then(async (getUrl) => { - const result = []; - for (let i = 0; i < getUrl.formats.length; i++) { - const item = getUrl.formats[i]; - if (item.container == 'mp4' && item.hasVideo == true && item.hasAudio == true) { - const {qualityLabel, contentLength} = item; - const bytes = await bytesToSize(contentLength); - result[i] = {video: item.url, quality: qualityLabel, size: bytes}; - } - } - const resultFix = result.filter((x) => x.video != undefined && x.size != undefined && x.quality != undefined); - const tiny = await axios.get(`https://tinyurl.com/api-create.php?url=${resultFix[0].video}`); - const tinyUrl = tiny.data; - const title = getUrl.videoDetails.title; - const thumb = getUrl.player_response.microformat.playerMicroformatRenderer.thumbnail.thumbnails[0].url; - resolve({title, result: tinyUrl, rersult2: resultFix[0].video, thumb}); - }).catch(reject); - }); -} - -async function ytPlay(query) { - return new Promise((resolve, reject) => { - yts(query).then(async (getData) => { - const result = getData.videos.slice( 0, 5 ); - const url = []; - for (let i = 0; i < result.length; i++) { - url.push(result[i].url); - } - const random = url[0]; - const getAudio = await ytMp3(random); - resolve(getAudio); - }).catch(reject); - }); -} - -async function ytPlayVid(query) { - return new Promise((resolve, reject) => { - yts(query).then(async (getData) => { - const result = getData.videos.slice( 0, 5 ); - const url = []; - for (let i = 0; i < result.length; i++) { - url.push(result[i].url); - } - const random = url[0]; - const getVideo = await ytMp4(random); - resolve(getVideo); - }).catch(reject); - }); -}*/