| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /* eslint global-require: off, no-console: off, promise/always-return: off */
- /**
- * This module executes inside of electron's main process. You can start
- * electron renderer process from here and communicate with the other processes
- * through IPC.
- *
- * When running `npm run build` or `npm run build:main`, this file is compiled to
- * `./src/main.js` using webpack. This gives us some performance wins.
- */
- const path = require ('path');
- const { app, BrowserWindow, shell, ipcMain } = require('electron');
- const { autoUpdater } = require('electron-updater');
- const log = require('electron-log');
- const puppeteer = require('puppeteer');
- class AppUpdater {
- constructor() {
- log.transports.file.level = 'info';
- autoUpdater.logger = log;
- autoUpdater.checkForUpdatesAndNotify();
- }
- }
- let mainWindow = null;
- ipcMain.on('ipc-example', async (event, arg) => {
- const msgTemplate = (pingPong) => `IPC test: ${pingPong}`;
- console.log(msgTemplate(arg));
- event.reply('ipc-example', msgTemplate('pong'));
- });
- if (process.env.NODE_ENV === 'production') {
- const sourceMapSupport = require('source-map-support');
- sourceMapSupport.install();
- }
- const isDebug =
- process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true';
- if (isDebug) {
- require('electron-debug')();
- }
- const installExtensions = async () => {
- const installer = require('electron-devtools-installer');
- const forceDownload = !!process.env.UPGRADE_EXTENSIONS;
- const extensions = ['REACT_DEVELOPER_TOOLS'];
- return installer
- .default(
- extensions.map((name) => installer[name]),
- forceDownload
- )
- .catch(console.log);
- };
- const createWindow = async () => {
- if (isDebug) {
- await installExtensions();
- }
- const RESOURCES_PATH = app.isPackaged
- ? path.join(process.resourcesPath, 'assets')
- : path.join(__dirname, '../../assets');
- const getAssetPath = (...paths) => {
- return path.join(RESOURCES_PATH, ...paths);
- };
- mainWindow = new BrowserWindow({
- show: false,
- width: 1024,
- height: 728,
- icon: getAssetPath('icon.png'),
- webPreferences: {
- preload: app.isPackaged
- ? path.join(__dirname, 'preload.js')
- : path.join(__dirname, '../../.erb/dll/preload.js'),
- },
- });
- // mainWindow.loadURL('');
-
- async function func() {
- const browser = await puppeteer.launch({
- headless: false,
- defaultViewport: false
- })
- const page = await browser.newPage();
- await page.goto('http://yct.sh.gov.cn/portal_yct/')
- await page.waitForSelector('#scroll_list')
- const data = await page.$$eval('#scroll_list', data => {
- return data.map(a => {
- return {
- 'title': a.children[0].title
- }
- });
- });
- console.log(data)
- // await browser.close();
- }
- puppeteer.launch().then(
- func()
- );
- mainWindow.on('ready-to-show', () => {
- if (!mainWindow) {
- throw new Error('"mainWindow" is not defined');
- }
- if (process.env.START_MINIMIZED) {
- mainWindow.minimize();
- } else {
- mainWindow.show();
- }
- });
- mainWindow.on('closed', () => {
- mainWindow = null;
- });
- // Open urls in the user's browser
- mainWindow.webContents.setWindowOpenHandler((edata) => {
- shell.openExternal(edata.url);
- return { action: 'deny' };
- });
- // Remove this if your app does not use auto updates
- // eslint-disable-next-line
- new AppUpdater();
- };
- /**
- * Add event listeners...
- */
- app.on('window-all-closed', () => {
- // Respect the OSX convention of having the application in memory even
- // after all windows have been closed
- if (process.platform !== 'darwin') {
- app.quit();
- }
- });
- app
- .whenReady()
- .then(() => {
- createWindow();
- app.on('activate', () => {
- // On macOS it's common to re-create a window in the app when the
- // dock icon is clicked and there are no other windows open.
- if (mainWindow === null) createWindow();
- });
- })
- .catch(console.log);
|