From 08deba1baa99decc2ac6f95e421e88e93502169f Mon Sep 17 00:00:00 2001 From: "kai.t" Date: Mon, 27 May 2024 06:32:59 +0000 Subject: [PATCH] update queue --- index.js | 5 ++++- queue/queue.js | 12 ++++++++---- robot/robot.js | 16 +++++++++++----- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index 107f508..fdfb105 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,6 @@ const robot = require('./robot/robot'); +const queue = require('./queue/queue'); -robot('hello', 'edu.vn') +(async function start() { + await queue(robot('hello', 'spotify.com')) +}()) diff --git a/queue/queue.js b/queue/queue.js index 724975d..bf8c7d9 100755 --- a/queue/queue.js +++ b/queue/queue.js @@ -7,7 +7,7 @@ const CONNECT_RABBIT_STR = "amqp://rabbit:rabbit123@rabbitmq"; const QUEUE = "browser"; const QUEUE_NOTIFY = "browser-notify"; -async function processMessage(channel, message) { +async function processMessage(channel, message, processCallback) { const timestamp = Date.now(); const response = JSON.parse(message.content.toString()); const socketioStart = io.connect(CONNECT_SOCKET_STR, { @@ -32,7 +32,11 @@ async function processMessage(channel, message) { }, }).close(); // TODO run script - // do something + if (typeof processCallback === 'function') { + await processCallback() + } else { + throw new Error('processCallback is not function') + } // !TODO const socketioEnd = io.connect(CONNECT_SOCKET_STR, { transports: ["websocket"], @@ -58,7 +62,7 @@ async function processMessage(channel, message) { channel.ack(message); } -module.exports = async function() { +module.exports = async function(processCallback) { const conn = await amqplib.connect(CONNECT_RABBIT_STR); const channelProcess = await conn.createChannel(); @@ -67,7 +71,7 @@ module.exports = async function() { await channelProcess.prefetch(1); await channelProcess.consume(QUEUE, async (message) => { - await processMessage(channelProcess, message); + await processMessage(channelProcess, message, processCallback); }, {noAck: false} ); diff --git a/robot/robot.js b/robot/robot.js index 5765f51..efbf5aa 100644 --- a/robot/robot.js +++ b/robot/robot.js @@ -7,10 +7,14 @@ const robotjs = require('robotjs') const tesseract = require('tesseract.js') const jsdom = require('jsdom') const Jimp = require('jimp') +const CONFIG = { + SCALE_IMAGE: 1.5, + SCROLL_COUNT: 8, +} -module.exports = async function(keywordSearch, keywordToClick, scale = 1.5, fileScreenshot = 'screenshot.jpg', waitSearch = 2000) { +module.exports = async function(keywordSearch, keywordToClick, scale = CONFIG.SCALE_IMAGE, fileScreenshot = 'screenshot.jpg', waitSearch = 2000) { if(!scale) { - scale = 1.5 + scale = CONFIG.SCALE_IMAGE } if(!fileScreenshot) { @@ -72,9 +76,11 @@ module.exports = async function(keywordSearch, keywordToClick, scale = 1.5, file } } - robotjs.keyTap('down') - robotjs.keyTap('down') - return rejToAgain(false) + // scroll to 8 times + for (let i = 1; i < CONFIG.SCROLL_COUNT; i++) { + robotjs.keyTap('down') + } + rejToAgain(false) }) }