upgrade EditThisCookie.extract ensureEditThisCookie

This commit is contained in:
geekgeekrun
2025-04-12 01:30:00 +08:00
parent 09c5ce97a7
commit 17c5a40f8d
4 changed files with 94 additions and 89 deletions

View File

@@ -6,68 +6,28 @@ import {
sleep,
sleepWithRandomDelay
} from '@geekgeekrun/utils/sleep.mjs'
import extractZip from 'extract-zip'
import { blockNavigation } from '@geekgeekrun/utils/puppeteer/block-navigation.mjs'
import {
writeStorageFile
} from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path';
import JSON5 from 'json5'
import url from 'url';
import packageJson from './package.json' assert {type: 'json'}
import {
runtimeFolderPath,
ensureEditThisCookie,
editThisCookieExtensionPath,
isRunFromUi,
} from './utils.mjs'
import { EventEmitter } from 'node:events'
export const loginEventBus = new EventEmitter()
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE)
const isUiDev = process.env.NODE_ENV === 'development'
const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun')
const extensionDir = path.join(
runtimeFolderPath,
'chrome-extensions'
)
if (!fs.existsSync(
runtimeFolderPath
)) {
fs.mkdirSync(runtimeFolderPath)
}
if (!fs.existsSync(extensionDir)) {
fs.mkdirSync(extensionDir)
}
const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie')
let editThisCookieZipPath
async function getEditThisCookieZipPath () {
if (editThisCookieZipPath) {
return editThisCookieZipPath
}
if (isRunFromUi) {
const { app } = await import('electron')
editThisCookieZipPath = path.join(app.getAppPath(), './node_modules', packageJson.name, 'extensions', 'EditThisCookie.zip')
} else {
editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip')
}
return editThisCookieZipPath
}
export async function main() {
if (!fs.existsSync(
path.join(editThisCookieExtensionPath, 'manifest.json')
)) {
await extractZip(
await getEditThisCookieZipPath(),
{
dir: extensionDir
}
)
}
await ensureEditThisCookie()
const { puppeteer } = await initPuppeteer()
const browser = await puppeteer.launch({
headless: false,

View File

@@ -0,0 +1,82 @@
import path from 'node:path';
import fs from 'node:fs'
import os from 'node:os'
import extractZip from 'extract-zip'
import packageJson from './package.json' assert {type: 'json'}
export const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE)
const isUiDev = process.env.NODE_ENV === 'development'
export const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun')
const extensionDir = path.join(
runtimeFolderPath,
'chrome-extensions'
)
if (!fs.existsSync(
runtimeFolderPath
)) {
fs.mkdirSync(runtimeFolderPath)
}
if (!fs.existsSync(extensionDir)) {
fs.mkdirSync(extensionDir)
}
export const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie')
let editThisCookieZipPath
async function getEditThisCookieZipPath () {
if (editThisCookieZipPath) {
return editThisCookieZipPath
}
if (isRunFromUi) {
const { app } = await import('electron')
editThisCookieZipPath = path.join(app.getAppPath(), './node_modules', packageJson.name, 'extensions', 'EditThisCookie.zip')
} else {
editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip')
}
return editThisCookieZipPath
}
export async function ensureEditThisCookie () {
let isNeedExtractEditThisCookie = false
const manifestFilePath = path.join(editThisCookieExtensionPath, 'manifest.json')
if (!fs.existsSync(
manifestFilePath
)) {
isNeedExtractEditThisCookie = true
} else {
let manifest
try {
manifest = JSON.parse(fs.readFileSync(manifestFilePath, { encoding: 'utf-8' }))
if (!manifest.manifest_version || manifest.manifest_version <= 2) {
isNeedExtractEditThisCookie = true
}
}
catch {
console.log(`未能获取到文件内容`)
isNeedExtractEditThisCookie = true
}
}
if (isNeedExtractEditThisCookie) {
if (
fs.existsSync(
editThisCookieExtensionPath
)
) {
fs.rmSync(
editThisCookieExtensionPath,
{
recursive: true,
force: true
}
)
}
await extractZip(
await getEditThisCookieZipPath(),
{
dir: extensionDir
}
)
}
}

View File

@@ -1,6 +1,5 @@
import { app } from 'electron'
import { initPuppeteer } from '@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs'
import extractZip from 'extract-zip'
import {
readStorageFile,
writeStorageFile
@@ -17,10 +16,6 @@ import { getPublicDbFilePath } from '@geekgeekrun/geek-auto-start-chat-with-boss
import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/dist/enums'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import url from 'url'
import packageJson from '@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension/package.json' assert { type: 'json' }
import { Target } from 'puppeteer'
import { pipeWriteRegardlessError } from '../utils/pipe'
import * as JSONStream from 'JSONStream'
@@ -31,38 +26,11 @@ import { type ChatMessageRecord } from '@geekgeekrun/sqlite-plugin/src/entity/Ch
import { BossInfo } from '@geekgeekrun/sqlite-plugin/dist/entity/BossInfo'
import { messageForSaveFilter } from '../../../common/utils/chat-list'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE)
import {
ensureEditThisCookie,
editThisCookieExtensionPath
} from '@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension/utils.mjs'
const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun')
const extensionDir = path.join(runtimeFolderPath, 'chrome-extensions')
if (!fs.existsSync(runtimeFolderPath)) {
fs.mkdirSync(runtimeFolderPath)
}
if (!fs.existsSync(extensionDir)) {
fs.mkdirSync(extensionDir)
}
const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie')
let editThisCookieZipPath
async function getEditThisCookieZipPath() {
if (editThisCookieZipPath) {
return editThisCookieZipPath
}
if (isRunFromUi) {
const { app } = await import('electron')
editThisCookieZipPath = path.join(
app.getAppPath(),
'./node_modules',
packageJson.name,
'extensions',
'EditThisCookie.zip'
)
} else {
editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip')
}
return editThisCookieZipPath
}
const dbInitPromise = initDb(getPublicDbFilePath())
const attachRequestsListener = async (target: Target) => {
@@ -247,12 +215,7 @@ const attachRequestsListener = async (target: Target) => {
export async function launchBossSite() {
app.dock?.hide()
if (!fs.existsSync(path.join(editThisCookieExtensionPath, 'manifest.json'))) {
await extractZip(await getEditThisCookieZipPath(), {
dir: extensionDir
})
}
await ensureEditThisCookie()
const bossCookies = readStorageFile('boss-cookies.json')
const bossLocalStorage = readStorageFile('boss-local-storage.json')