fix: 修改文件名大小写

This commit is contained in:
LingandRX 2024-12-21 00:01:42 +08:00
parent 82414ef213
commit 82920dd8fb
4 changed files with 136 additions and 3633 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,7 @@
import puppeteer, { launch, Locator } from 'puppeteer'; // v23.0.0 or later import puppeteer, { launch, Locator } from 'puppeteer'; // v23.0.0 or later
import fs from 'fs'; import fs from 'fs';
import { resolve } from 'path'; import { resolve } from 'path';
import { writeIndexedDB, readIndexedDB } from './utils.js';
(async () => { (async () => {
const browser = await launch({ const browser = await launch({
@ -61,54 +62,15 @@ import { resolve } from 'path';
}); });
// 获取浏览器中的 IndexedDB 数据 // 获取浏览器中的 IndexedDB 数据
const result = await page.evaluate(async () => { const result = await page.evaluate(async (readIndexedDBFnString) => {
const databases = await indexedDB.databases(); // 使用 eval() 执行传入的函数代码
const allData = []; eval(readIndexedDBFnString);
return await readIndexedDB();
// const readIndexedDBFn = new Function('return ' + readIndexedDBFnString)();
// return await readIndexedDBFn();
// 调用传入的函数并等待其返回结果
}, readIndexedDB.toString());
for (const db of databases) {
const databaseName = db.name;
// 打开数据库
const request = indexedDB.open(databaseName);
const databaseData = await new Promise((resolve, reject) => {
request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(db.objectStoreNames, 'readonly');
const objectStore = transaction.objectStore(db.objectStoreNames[0]);
const cursorRequest = objectStore.openCursor();
const storeData = [];
cursorRequest.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
storeData.push({ key: cursor.key, value: cursor.value });
cursor.continue();
} else {
resolve(storeData); // 执行 resolve返回数据
}
};
cursorRequest.onerror = (event) => {
reject(event.target.error); // 发生错误时 reject
};
};
request.onerror = (event) => {
reject(event.target.error); // 发生错误时 reject
};
});
// 将数据库数据存入 allData
allData.push({
databaseName,
data: databaseData,
});
}
return allData;
});
const localStorageData = await page.evaluate(() => { const localStorageData = await page.evaluate(() => {
return JSON.stringify(localStorage); // 将 localStorage 转换为对象 return JSON.stringify(localStorage); // 将 localStorage 转换为对象
}); });

125
utils.js Normal file
View File

@ -0,0 +1,125 @@
export async function readIndexedDB() {
const databases = await indexedDB.databases();
const allData = [];
for (const db of databases) {
const databaseName = db.name;
// 打开数据库
const request = indexedDB.open(databaseName);
const databaseData = await new Promise((resolve, reject) => {
request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(db.objectStoreNames, 'readonly');
const objectStore = transaction.objectStore(db.objectStoreNames[0]);
const cursorRequest = objectStore.openCursor();
const storeData = [];
cursorRequest.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
storeData.push({ key: cursor.key, value: cursor.value });
cursor.continue();
} else {
resolve(storeData); // 执行 resolve返回数据
}
};
cursorRequest.onerror = (event) => {
reject(event.target.error); // 发生错误时 reject
};
};
request.onerror = (event) => {
reject(event.target.error); // 发生错误时 reject
};
});
// 将数据库数据存入 allData
allData.push({
databaseName,
data: databaseData,
});
}
return allData;
}
export async function writeIndexedDB(jsonData) {
return new Promise((resolve, reject) => {
// 使用 async 函数来处理异步操作
const processDatabase = async (database) => {
try {
// 打开 IndexedDB 数据库
const openRequest = indexedDB.open(database.databaseName, 2);
// 处理数据库版本升级
openRequest.onupgradeneeded = (event) => {
const db = event.target.result;
// 创建对象存储,如果不存在的话
if (!db.objectStoreNames.contains('keyvaluepairs')) {
db.createObjectStore('keyvaluepairs');
}
if (!db.objectStoreNames.contains('local-forage-detect-blob-support')) {
db.createObjectStore('local-forage-detect-blob-support');
}
};
// 处理数据库打开成功
openRequest.onsuccess = async (event) => {
const db = event.target.result;
const table = database.data;
const transaction = db.transaction(['keyvaluepairs'], 'readwrite');
const objectStore = transaction.objectStore('keyvaluepairs'); // 使用硬编码的存储名
console.log(table.value);
let completedOperations = 0;
const totalOperations = table.length;
// 使用 Promise.all 来确保所有的写入操作完成
const writeOperations = table.map((item, index) => {
return new Promise((innerResolve, innerReject) => {
const addObject = objectStore.put(item.value, item.key);
addObject.onsuccess = () => {
console.log('数据添加成功', item.key);
completedOperations++;
// 如果所有操作完成,调用 resolve
if (completedOperations === totalOperations) {
innerResolve('数据写入成功');
}
};
addObject.onerror = (event) => {
console.error('数据添加失败:', event.target.error);
innerReject('数据添加失败');
};
});
});
// 等待所有写入操作完成
try {
await Promise.all(writeOperations);
console.log('所有数据写入完成');
resolve('所有数据写入完成');
} catch (error) {
reject('数据写入失败');
}
};
// 错误处理
openRequest.onerror = (event) => {
console.error('数据库打开失败:', event.target.error);
reject('数据库打开失败');
};
} catch (error) {
reject('数据库操作失败: ' + error);
}
};
// 遍历所有数据库
Promise.all(jsonData.map((database) => processDatabase(database)))
.then(() => resolve('所有数据库操作完成'))
.catch((error) => reject('操作失败: ' + error));
});
}