yt-search
#9iquhisjavascript ยท 103 baris ยท 8 dilihat
// Dont forget install module : via bot $ npm install yt-search
// or via panel npm install yt-search
import yts from "yt-search";
import axios from 'axios';
let handler = async (m, { conn, text, usedPrefix, command }) => {
if (!text) throw `๐ธ Mau cari apa di YouTube cuy?\nContoh: *${usedPrefix + command}* everything u are hindia`
await m.react('โณ')
try {
let results = await yts(text)
let tes = results.all
if (!tes || tes.length === 0) throw 'โ Hasil tidak ditemukan.'
let teks = results.all.map(v => {
switch (v.type) {
case "video":
return `โญโโ ๊ฐ ๐ *V I D E O* ๐ ๊ฑ
โ โญ ๐ธ *Title* : ${v.title}
โ โญ ๐ธ *Channel* : ${v.author.name}
โ โญ ๐ธ *Duration* : ${v.timestamp}
โ โญ ๐ธ *Uploaded* : ${v.ago}
โ โญ ๐ธ *Views* : ${formatNumber(v.views)}
โ โญ ๐ *URL* : ${v.url}
โฐโโโโโโโโโโโโโโ โ โง`.trim()
case "channel":
case "canal":
return `โญโโ ๊ฐ ๐ *C H A N N E L* ๐ ๊ฑ
โ โญ ๐ธ *Name* : ${v.name}
โ โญ ๐ธ *Subs* : ${v.subCountLabel || '-'}
โ โญ ๐ธ *Videos* : ${v.videoCount || '-'}
โ โญ ๐ *URL* : ${v.url}
โฐโโโโโโโโโโโโโโ โ โง`.trim()
}
}).filter(v => v).join("\n\n")
// Ambil thumbnail dengan cara yang lebih aman buat Node 22
let ytthumb = Buffer.alloc(0)
try {
const thumbRes = await axios.get(tes[0].thumbnail, { responseType: 'arraybuffer' })
ytthumb = Buffer.from(thumbRes.data)
} catch (e) {
console.error('Gagal ambil thumbnail:', e)
}
let sendOptions = {
caption: `*Y O U T U B E S E A R C H*\n\n${teks}`,
contextInfo: {
mentionedJid: [m.sender],
isForwarded: true,
forwardingScore: 9999,
forwardedNewsletterMessageInfo: {
newsletterJid: "120363400612665352@newsletter",
newsletterName: "๐ธ สษช sสษชสแด แดแด
แดsแด ๐ธ",
serverMessageId: -1
}
}
}
if (ytthumb.length > 0) {
sendOptions.image = ytthumb
} else {
sendOptions.image = { url: tes[0].thumbnail }
}
await conn.sendMessage(m.chat, sendOptions, { quoted: m })
await m.react('โจ')
} catch (e) {
console.error(e)
await m.react('โ')
m.reply('โ Terjadi kesalahan saat mencari di YouTube.')
}
}
handler.help = ["yts <pencarian>"]
handler.tags = ["search"]
handler.command = /^y(outubesearch|ts(earch)?)$/i
handler.register = true
handler.limit = true
export default handler
function formatNumber(num) {
if (!num) return '0'
const suffixes = ['', 'k', 'M', 'B', 'T'];
const numString = Math.abs(num).toString();
const numDigits = numString.length;
if (numDigits <= 3) return numString;
const suffixIndex = Math.floor((numDigits - 1) / 3);
let formattedNum = (num / Math.pow(1000, suffixIndex)).toFixed(1);
if (formattedNum.endsWith('.0')) {
formattedNum = formattedNum.slice(0, -2);
}
return formattedNum + suffixes[suffixIndex];
}