UNPKG

zhilian-auto-hi

Version:

智联招聘自动打招呼工具 - 自动化招聘流程的命令行工具

72 lines (71 loc) 3.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // 导入模块化的服务和工具 const config_1 = require("./services/config"); const cookie_1 = require("./utils/cookie"); const mode_1 = require("./services/mode"); const delay_1 = require("./utils/delay"); const index_1 = __importDefault(require("./logger/index")); const graceful_shutdown_1 = __importDefault(require("./services/graceful-shutdown")); const browser_installer_1 = __importDefault(require("./services/browser-installer")); const playwright_extra_1 = require("playwright-extra"); const puppeteer_extra_plugin_stealth_1 = __importDefault(require("puppeteer-extra-plugin-stealth")); const ora_1 = __importDefault(require("ora")); // 启用stealth插件 playwright_extra_1.chromium.use((0, puppeteer_extra_plugin_stealth_1.default)()); /** * 主函数 */ async function main() { try { // 显示启动标题 index_1.default.title('智联招聘自动打招呼工具'); // 读取配置 const config = (0, config_1.loadConfig)(); // 显示运行模式并等待用户确认 await (0, mode_1.confirmRunMode)(config.runMode || 'auto-greeting'); // 确保浏览器就绪 const browserInstaller = new browser_installer_1.default(); const executablePath = await browserInstaller.ensureBrowserReady(); // 启动浏览器 const browserSpinner = (0, ora_1.default)('正在启动浏览器...').start(); const browser = await playwright_extra_1.chromium.launch({ headless: false, // 设置为false以便查看浏览器操作 slowMo: 100, // 减慢操作速度便于观察 executablePath: executablePath // 使用检测到或下载的浏览器路径 }); browserSpinner.succeed('浏览器启动成功'); // 注册浏览器实例到优雅关闭管理器 graceful_shutdown_1.default.registerBrowser(browser); const context = await browser.newContext(); const page = await context.newPage(); index_1.default.success('新页面创建成功'); // 解析并设置cookies const cookies = (0, cookie_1.parseCookies)(config.cookies); await context.addCookies(cookies); index_1.default.success(`已设置 ${cookies.length} 个cookies`); // 先访问主域名确保cookie生效 const domainSpinner = (0, ora_1.default)('正在访问主域名以确保cookie生效...').start(); await page.goto('https://www.zhaopin.com', { waitUntil: 'domcontentloaded' }); await delay_1.DelayUtils.randomDelay(page, 'medium'); domainSpinner.succeed('主域名访问完成'); // 根据配置的模式执行相应的逻辑 await (0, mode_1.executeMode)(page, config); index_1.default.highlight('页面加载完成,浏览器将保持打开状态...'); index_1.default.info('按 Ctrl+C 退出程序'); // 注册清理回调函数 graceful_shutdown_1.default.registerCleanupCallback(async () => { // 这里可以添加其他需要清理的资源 // 浏览器实例的清理已经在GracefulShutdown类中处理 }); } catch (error) { index_1.default.error(`程序执行出错: ${error}`); process.exit(1); } } // 运行主函数 main();