feat: 新增一键打开渠道脚本
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
const log = require('electron-log');
|
||||
|
||||
const checkLoginStatus = async (page) => {
|
||||
try {
|
||||
const currentUrl = await page.url();
|
||||
|
||||
log.info('current url==========>:', currentUrl);
|
||||
|
||||
const loginPagePatterns = ['/login', '/signin', '/auth'];
|
||||
const isLoginPage = loginPagePatterns.some((pattern) => currentUrl.includes(pattern));
|
||||
|
||||
if (!isLoginPage) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const pageContent = await page.content();
|
||||
const loginKeywords = ['退出', '房价房量管理'];
|
||||
const hasLoginKeyword = loginKeywords.some((keyword) => pageContent.includes(keyword));
|
||||
|
||||
if (hasLoginKeyword) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
checkLoginStatus,
|
||||
};
|
||||
|
||||
@@ -12,10 +12,12 @@ const preparePage = async (chromium, { tabIndex = Number(process.env.TAB_INDEX),
|
||||
|
||||
const idx = Number.isFinite(tabIndex) && tabIndex >= 0 ? Math.floor(tabIndex) : 0;
|
||||
let pages = await context.pages();
|
||||
|
||||
while (pages.length <= idx) {
|
||||
await context.newPage();
|
||||
pages = await context.pages();
|
||||
}
|
||||
|
||||
const page = pages[idx];
|
||||
await page.bringToFront();
|
||||
|
||||
@@ -24,6 +26,7 @@ const preparePage = async (chromium, { tabIndex = Number(process.env.TAB_INDEX),
|
||||
|
||||
const safeDisconnectBrowser = async (browser) => {
|
||||
if (!browser) return;
|
||||
|
||||
try {
|
||||
if (typeof browser.disconnect === 'function') {
|
||||
await browser.disconnect();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { chromium } from 'playwright';
|
||||
import log from 'electron-log';
|
||||
import tabsPkg from './common/tabs.js';
|
||||
import tabsPkg from './common/tabs';
|
||||
|
||||
const { preparePage, safeDisconnectBrowser } = tabsPkg;
|
||||
|
||||
@@ -135,7 +135,7 @@ const toggleRoomByDateIndex = async (container, { roomType, dateIndex, operation
|
||||
} catch (error) {
|
||||
log.error(error);
|
||||
process.exitCode = 1;
|
||||
}finally {
|
||||
} finally {
|
||||
await safeDisconnectBrowser(browser);
|
||||
}
|
||||
})();
|
||||
|
||||
72
src/main/scripts/open_all_channel.mjs
Normal file
72
src/main/scripts/open_all_channel.mjs
Normal file
@@ -0,0 +1,72 @@
|
||||
import { chromium } from 'playwright';
|
||||
import log from 'electron-log';
|
||||
|
||||
const parseChannels = () => {
|
||||
const raw = process.env.CHANNELS || '';
|
||||
if (!raw) return [];
|
||||
try {
|
||||
const parsed = JSON.parse(raw);
|
||||
return Array.isArray(parsed) ? parsed : [];
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
(async () => {
|
||||
let browser;
|
||||
|
||||
try {
|
||||
const channels = parseChannels();
|
||||
|
||||
if (!channels.length) {
|
||||
log.info('No channels provided, skip.');
|
||||
return;
|
||||
}
|
||||
|
||||
browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
|
||||
const context = browser.contexts()[0];
|
||||
|
||||
if (!context) {
|
||||
throw new Error('No browser context available');
|
||||
}
|
||||
|
||||
await context.addInitScript(() => {
|
||||
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
|
||||
});
|
||||
|
||||
for (let i = 0; i < channels.length; i++) {
|
||||
const targetUrl = channels[i]?.channelUrl;
|
||||
|
||||
if (!targetUrl) continue;
|
||||
|
||||
let pages = await context.pages();
|
||||
|
||||
while (pages.length <= i) {
|
||||
await context.newPage();
|
||||
pages = await context.pages();
|
||||
}
|
||||
|
||||
const page = pages[i];
|
||||
await page.bringToFront();
|
||||
|
||||
const current = page.url();
|
||||
|
||||
if (!current || !current.startsWith(targetUrl)) {
|
||||
await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(error);
|
||||
process.exitCode = 1;
|
||||
} finally {
|
||||
if(browser){
|
||||
try {
|
||||
if (typeof browser.disconnect === 'function') {
|
||||
await browser.disconnect();
|
||||
} else {
|
||||
await browser.close();
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user