Dafont Search And Download
by Abella (Takashi)
/*
Jangan Hapus Wm Bang
*Dafont Search,Download Plugins Esm*
Sip Mah Paket Lengkap :v
*[Sumber]*
https://whatsapp.com/channel/0029Vb3u2awADTOCXVsvia28
*[Sumber Scrape]*
https://whatsapp.com/channel/0029Vb2WECv9xVJaXVi46y2m/157
*/
import axios from 'axios';
import cheerio from 'cheerio';
let handler = async (m, { conn, text, args, command }) => {
let cmd = args[0]?.toLowerCase()
if (!cmd) return m.reply(`*Gunakan Salah Satu Command Inj *
1 *.dafont search [nama_font]*
Untuk mencari font berdasarkan nama.
2 *.dafont dl [link_download]*
Untuk mengunduh font dari link hasil pencarian.
*Example :*
.dafont search fancy
.dafont dl https://dl.dafont.com/dl/?f=fancy_nancy_2`)
switch (cmd) {
case 'search':
if (!args[1]) return m.reply('Mau Cari Ap Di Dafont?')
await handleSearch(conn, m, args.slice(1).join(' '))
break
case 'dl':
if (!args[1]) return m.reply('Mana Link Nya?')
await handleDownload(conn, m, args[1])
break
default:
m.reply(`*Subcommand Yang Tersedia :*\n\n.dafont search\n.dafont dl`)
}
}
async function handleSearch(conn, m, query) {
m.reply('Searching fonts...')
try {
let result = await dafont(query)
if (result.length === 0) {
return m.reply(`Font dengan nama "${query}" tidak ditemukan!`)
}
let teks = `*『 DAFONT SEARCH 』*`
for (let i = 0; i < result.length; i++) {
const font = result[i]
teks += `\n\n*${i + 1}. ${font.name}*\n`
teks += `┌─────────────────\n`
teks += `├ *Creator :* ${font.creator}\n`
teks += `├ *Total Download :* ${font.total_down}\n`
teks += `├ *Link Download :* ${font.link}\n`
teks += `└─────────────────\n\n`
}
teks += `Untuk mengunduh font, gunakan perintah:\n*.dafont dl [link_download]*`
m.reply(teks)
} catch (error) {
console.error(error)
m.reply('Error Cba Nanti Lagi')
}
}
async function handleDownload(conn, m, url) {
if (!url.startsWith('https://dl.dafont.com/')) {
return m.reply('Link Nya Yang Valid Donk')
}
try {
m.reply('Downloading font...')
const response = await axios({
method: 'get',
url: url,
responseType: 'arraybuffer'
})
const fontName = url.split('=').pop()
const fileName = `${fontName}.zip`
await conn.sendMessage(m.chat, {
document: response.data,
mimetype: 'application/zip',
fileName: fileName
}, { quoted: m })
} catch (error) {
console.error(error)
m.reply('Error Cba Lagi Nanti')
}
}
async function dafont(query) {
try {
const html = await axios.get('https://www.dafont.com/search.php?q=' + query);
const $ = cheerio.load(html.data);
const result = [];
$('.lv1left.dfbg').each((i, el) => {
let elem = $(el).text();
let name = elem.split('by')[0].trim();
let creator = elem.split('by')[1].trim();
let total_down = $(el).next().next().find('.light').text().trim();
let link = $(el).next().next().next().find('a.dl').attr('href');
if (link) {
result.push({
name,
creator,
total_down,
link: 'https:' + link
});
}
});
return result;
} catch (err) {
throw err
}
}
handler.help = ['dafont'];
handler.tags = ['downloader'];
handler.command = /^dafont$/i;
export default handler;