feat-foco-hardware-pc
This commit is contained in:
30
src/bot.js
30
src/bot.js
@@ -53,9 +53,10 @@ async function startBot() {
|
|||||||
try {
|
try {
|
||||||
const statusEmbed = buildStatusEmbed(
|
const statusEmbed = buildStatusEmbed(
|
||||||
`🟢 Bot iniciado com sucesso!\n\n` +
|
`🟢 Bot iniciado com sucesso!\n\n` +
|
||||||
|
`🖥️ **Foco: Hardware de PC**\n` +
|
||||||
`⏱️ Monitorando ofertas a cada **${config.scraping.intervalMinutes} minutos**.\n` +
|
`⏱️ Monitorando ofertas a cada **${config.scraping.intervalMinutes} minutos**.\n` +
|
||||||
`🏪 Lojas monitoradas: Amazon, AliExpress, Shopee, Mercado Livre\n\n` +
|
`🏪 Lojas: Amazon, AliExpress, Shopee, Mercado Livre\n\n` +
|
||||||
`Primeira verificação iniciando agora...`
|
`GPU • CPU • RAM • SSD • Placa-mãe • Gabinete • Fonte • Cooler`
|
||||||
);
|
);
|
||||||
await channel.send({ embeds: [statusEmbed] });
|
await channel.send({ embeds: [statusEmbed] });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -116,8 +117,17 @@ async function runScrapingCycle(channel) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filtrar apenas ofertas de hardware de PC
|
||||||
|
const hardwareOffers = filterHardwareOffers(rawOffers);
|
||||||
|
console.log(` 🖥️ ${rawOffers.length} ofertas → ${hardwareOffers.length} são hardware de PC`);
|
||||||
|
|
||||||
|
if (hardwareOffers.length === 0) {
|
||||||
|
console.log(` ℹ️ Nenhuma oferta de hardware encontrada em ${scraper.name}.`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Filtrar ofertas já enviadas (deduplicação)
|
// Filtrar ofertas já enviadas (deduplicação)
|
||||||
const newOffers = filterNewOffers(rawOffers);
|
const newOffers = filterNewOffers(hardwareOffers);
|
||||||
|
|
||||||
if (newOffers.length === 0) {
|
if (newOffers.length === 0) {
|
||||||
console.log(` ℹ️ Todas as ofertas de ${scraper.name} já foram enviadas hoje.`);
|
console.log(` ℹ️ Todas as ofertas de ${scraper.name} já foram enviadas hoje.`);
|
||||||
@@ -167,6 +177,20 @@ async function runScrapingCycle(channel) {
|
|||||||
console.log('');
|
console.log('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filtra ofertas para manter apenas as de hardware de PC
|
||||||
|
* Verifica se o nome do produto contém alguma palavra-chave
|
||||||
|
*/
|
||||||
|
function filterHardwareOffers(offers) {
|
||||||
|
const keywords = config.hardwareKeywords;
|
||||||
|
if (!keywords || keywords.length === 0) return offers;
|
||||||
|
|
||||||
|
return offers.filter((offer) => {
|
||||||
|
const name = (offer.name || '').toLowerCase();
|
||||||
|
return keywords.some((keyword) => name.includes(keyword.toLowerCase()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encerra o bot de forma limpa
|
* Encerra o bot de forma limpa
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ const config = {
|
|||||||
channelId: process.env.DISCORD_CHANNEL_ID,
|
channelId: process.env.DISCORD_CHANNEL_ID,
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── URLs de monitoramento ────────────────────────────
|
// ── URLs de monitoramento (foco: Hardware de PC) ────
|
||||||
urls: {
|
urls: {
|
||||||
amazon: process.env.AMAZON_URL || 'https://www.amazon.com.br/deals',
|
amazon: process.env.AMAZON_URL || 'https://www.amazon.com.br/s?k=hardware+pc&i=computers&rh=n%3A16339926011&deals-widget=deals',
|
||||||
aliexpress: process.env.ALIEXPRESS_URL || 'https://pt.aliexpress.com/campaign/wow/gcp-plus/ae/right/shareon',
|
aliexpress: process.env.ALIEXPRESS_URL || 'https://pt.aliexpress.com/category/7/computer-and-office.html',
|
||||||
shopee: process.env.SHOPEE_URL || 'https://shopee.com.br/flash_sale',
|
shopee: process.env.SHOPEE_URL || 'https://shopee.com.br/search?keyword=placa%20de%20video%20hardware%20pc',
|
||||||
mercadolivre: process.env.MERCADOLIVRE_URL || 'https://www.mercadolivre.com.br/ofertas',
|
mercadolivre: process.env.MERCADOLIVRE_URL || 'https://www.mercadolivre.com.br/ofertas#c:MLB1648',
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── Scraping ─────────────────────────────────────────
|
// ── Scraping ─────────────────────────────────────────
|
||||||
@@ -30,6 +30,35 @@ const config = {
|
|||||||
headless: process.env.PUPPETEER_HEADLESS !== 'false', // padrão: true
|
headless: process.env.PUPPETEER_HEADLESS !== 'false', // padrão: true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ── Filtro de Hardware de PC ─────────────────────────
|
||||||
|
// Ofertas que contenham ao menos uma dessas palavras-chave serão aceitas
|
||||||
|
hardwareKeywords: [
|
||||||
|
// Placas de vídeo / GPU
|
||||||
|
'placa de vídeo', 'placa de video', 'gpu', 'geforce', 'rtx', 'gtx',
|
||||||
|
'radeon', 'rx ', 'nvidia', 'amd',
|
||||||
|
// Processadores / CPU
|
||||||
|
'processador', 'cpu', 'ryzen', 'intel', 'core i3', 'core i5',
|
||||||
|
'core i7', 'core i9', 'core ultra',
|
||||||
|
// Memória RAM
|
||||||
|
'memória ram', 'memoria ram', 'ram ddr', 'ddr4', 'ddr5',
|
||||||
|
// Armazenamento
|
||||||
|
'ssd', 'nvme', 'm.2', 'hd ', 'hdd', 'disco rígido',
|
||||||
|
// Placas-mãe
|
||||||
|
'placa-mãe', 'placa mãe', 'placa mae', 'motherboard', 'mobo',
|
||||||
|
// Gabinete e Fonte
|
||||||
|
'gabinete', 'fonte de alimentação', 'fonte gamer', 'psu',
|
||||||
|
// Cooler e Refrigeração
|
||||||
|
'cooler', 'water cooler', 'air cooler', 'fan ', 'ventoinha',
|
||||||
|
'dissipador', 'pasta térmica',
|
||||||
|
// Periféricos gamer / hardware
|
||||||
|
'monitor gamer', 'monitor 144hz', 'monitor 240hz',
|
||||||
|
// Marcas de hardware
|
||||||
|
'corsair', 'kingston', 'crucial', 'asus', 'msi', 'gigabyte',
|
||||||
|
'evga', 'zotac', 'galax', 'asrock', 'nzxt', 'cooler master',
|
||||||
|
'hyperx', 'wd ', 'western digital', 'samsung 970', 'samsung 980',
|
||||||
|
'samsung 990',
|
||||||
|
],
|
||||||
|
|
||||||
// ── Afiliados ────────────────────────────────────────
|
// ── Afiliados ────────────────────────────────────────
|
||||||
affiliate: {
|
affiliate: {
|
||||||
amazonTag: process.env.AMAZON_AFFILIATE_TAG || '',
|
amazonTag: process.env.AMAZON_AFFILIATE_TAG || '',
|
||||||
|
|||||||
Reference in New Issue
Block a user