Get Detail Chapter Xbato
by Abella (Takashi)
/*
Jangan Hapus Wm Bang
*Xbato Detail Chapter Plugins Esm*
Menampilkan Detail Dari Chapter Di Xbato
*[Sumber]*
https://whatsapp.com/channel/0029Vb3u2awADTOCXVsvia28
*[Sumber Scrape]*
https://whatsapp.com/channel/0029VaylUlU77qVT3vDPjv11/2912
*/
import axios from 'axios';
import cheerio from 'cheerio';
const handler = async (m, { conn, text, usedPrefix, command }) => {
if (!text) throw `*Example :* ${usedPrefix + command} https://xbato.com/series/99300/can-we-become-family-official`;
try {
let data = await getSeriesDetail(text);
if (!data) throw 'Gagal Dapetin Detail Nya';
let caption = `${data.title}\n\n`;
if (data.aliases.length) caption += `Aliases : ${data.aliases.join(', ')}\n`;
caption += `Authors : ${data.authors.join(', ')}\n`;
caption += `Artists : ${data.artists.join(', ')}\n`;
caption += `Genres : ${data.genres.join(', ')}\n`;
caption += `Language : ${data.language}\n`;
caption += `Translated : ${data.translated}\n`;
caption += `Status : ${data.status}\n`;
caption += `Upload Status : ${data.uploadStatus}\n`;
caption += `Year : ${data.year}\n\n`;
caption += `Summary :\n${data.summary}\n\n`;
caption += `Total Chapters : ${data.chapters.length}\n\n`;
if (data.chapters.length) {
caption += 'Latest Chapters :\n' +
data.chapters.slice(0, 5).map((v, i) =>
`${i + 1}. ${v.title}\n Upload Date : ${v.uploadDate}\n Views : ${v.views}\n Link : ${v.url}`
).join('\n\n') + '\n\n';
if (data.chapters.length > 5)
caption += `...and ${data.chapters.length - 5} more chapters`;
}
await conn.sendMessage(m.chat, {
image: { url: data.thumbnail },
caption
}, { quoted: m });
} catch (e) {
m.reply('Error : ' + e.message);
}
};
async function getSeriesDetail(url) {
try {
const base = 'https://xbato.com';
let { data } = await axios.get(url);
let $ = cheerio.load(data), c = $('.container-max-width-xl');
const parseList = sel => c.find(sel).next().find('a').map((i, el) => $(el).text().trim()).get();
const getText = sel => c.find(sel).next().text().trim();
return {
title: c.find('.title-set h3.item-title a').text().trim(),
aliases: c.find('.alias-set').text().trim().split('/').map(a => a.trim()).filter(Boolean),
thumbnail: c.find('.attr-cover img').attr('src'),
authors: parseList('.attr-item b:contains("Authors:")'),
artists: parseList('.attr-item b:contains("Artists:")'),
genres: c.find('.attr-item b:contains("Genres:")').next().children().map((i, el) => $(el).text().trim()).get(),
language: getText('.attr-item b:contains("Original language:")'),
translated: getText('.attr-item b:contains("Translated language:")'),
status: getText('.attr-item b:contains("Original work:")'),
uploadStatus: getText('.attr-item b:contains("Upload status:")'),
year: getText('.attr-item b:contains("Year of Release:")'),
summary: c.find('.limit-html').text().trim(),
chapters: $('.item').map((i, el) => {
let ch = $(el);
return {
title: ch.find('a.visited.chapt b').text().trim(),
url: base + ch.find('a.visited.chapt').attr('href'),
views: ch.find('.extra span.ps-3 i').map((i, el) => $(el).text().trim()).get().join(' '),
uploadDate: ch.find('.extra i.ps-3').text().trim()
};
}).get()
};
} catch (e) {
console.error('Skill Issue:', e.message);
return null;
}
}
handler.help = ['xbato '];
handler.command = ['xbato'];
handler.tags = ['weebs'];
export default handler;
handler.help = ['xbato '];
handler.command = ['xbato'];
handler.tags = ['internet'];
export default handler;