Skip to content

Commit

Permalink
- 1.0 Build 20231231
Browse files Browse the repository at this point in the history
	- JS:
		- 优化页面中存在大量图片时,载入卡顿的bug。
		- 适配新版导出工具的数据格式。
	- Python:
		- 加入输出图片的计数。
		- 加入处理进度百分比显示。
		- 调整图片索引为txt文件。
		- 优化导出图片数据时的内存占用。
		- 优化HTML写入逻辑,提升HTML输出速度。
		- 修复处理大量数据时报错的bug。
  • Loading branch information
road0001 committed Dec 31, 2023
1 parent 066d8a9 commit d296fb2
Show file tree
Hide file tree
Showing 5 changed files with 256 additions and 113 deletions.
12 changes: 12 additions & 0 deletions VERSION.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# QQMessageParse

- 1.0 Build 20231231
- JS:
- 优化页面中存在大量图片时,载入卡顿的bug。
- 适配新版导出工具的数据格式。
- Python:
- 加入输出图片的计数。
- 加入处理进度百分比显示。
- 调整图片索引为txt文件。
- 优化导出图片数据时的内存占用。
- 优化HTML写入逻辑,提升HTML输出速度。
- 修复处理大量数据时报错的bug。

- 1.0 Build 20231229
- 更新JQueryDOM插件。

Expand Down
180 changes: 102 additions & 78 deletions js/scripts/message.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,3 @@
// let imgDataObj={};
messagePath=``;
imgDataMap=new Map();
async function loadConfig(name){
return new Promise((resolve, reject)=>{
fs.readFile(name, `utf-8`, (err, data)=>{
if (err) {
reject(err);
}
// imgDataObj=JSON.parse(data);
let imgDataList=JSON.parse(data);
for(let cur of imgDataList){
let curSp=cur.split(`&`);
imgDataMap.set(curSp[1], {
file:curSp[0],
name:curSp[1],
type:curSp[2],
offset:parseInt(curSp[3]),
size:parseInt(curSp[4]),
});
}
// for(let key in imgDataObj){
// imgDataMap.set(key, imgDataObj[key]);
// }
resolve(imgDataMap);
});
});
}

// let dateDataArr=[];
// async function loadDate(name){
// return new Promise((resolve, reject)=>{
// fs.readFile(name, `utf-8`, (err, data)=>{
// if (err) {
// reject(err);
// }
// dateDataArr=JSON.parse(data);
// resolve(dateDataArr);
// });
// });
// }

class ReadImg{
constructor(name){
this._imgData=imgDataMap.get(name);
Expand Down Expand Up @@ -71,6 +29,68 @@ class ReadImg{
}
}

// let imgDataObj={};
messagePath=``;
imgDataMap=new Map();
async function loadConfig(name){
return new Promise((resolve, reject)=>{
let file = fs.createReadStream(name);
let fileLine = readline.createInterface({input:file});
fileLine.on(`line`,(line) => {
if(line){
let curSp=line.split(`|`);
imgDataMap.set(curSp[1], {
file:curSp[0],
name:curSp[1],
type:curSp[2],
offset:parseInt(curSp[3]),
size:parseInt(curSp[4]),
});
}
});
fileLine.on(`close`,(line) => {
resolve(imgDataMap);
});
fileLine.on(`error`,(err) => {
reject(err);
});
// fs.readFile(name, `utf-8`, (err, data)=>{
// if (err) {
// reject(err);
// }
// // imgDataObj=JSON.parse(data);
// let imgDataList=JSON.parse(data);
// for(let cur of imgDataList){
// let curSp=cur.split(`&`);
// imgDataMap.set(curSp[1], {
// file:curSp[0],
// name:curSp[1],
// type:curSp[2],
// offset:parseInt(curSp[3]),
// size:parseInt(curSp[4]),
// });
// }
// // for(let key in imgDataObj){
// // imgDataMap.set(key, imgDataObj[key]);
// // }
// resolve(imgDataMap);
// });
});
}

// let dateDataArr=[];
// async function loadDate(name){
// return new Promise((resolve, reject)=>{
// fs.readFile(name, `utf-8`, (err, data)=>{
// if (err) {
// reject(err);
// }
// dateDataArr=JSON.parse(data);
// resolve(dateDataArr);
// });
// });
// }

function getTag(tag) {
return Array.from(document.getElementsByTagName(tag));
}
Expand Down Expand Up @@ -209,35 +229,7 @@ async function main(){
dateObserver.observe(item);
});
setTimeout(()=>{setLoadCompleted()},500);
await loadConfig(`${messagePath}/imgdata.json`);
//图片列表(懒加载)
// let imgObserver = new IntersectionObserver(
// (changes) => {
// changes.forEach(async (change) => {
// if (change.intersectionRatio > 0) {
// let img = change.target;
// let imgData=new ReadImg(img.dataset.src);
// img.src = await imgData.read();
// imgObserver.unobserve(img);

// // img.addEventListener(`contextmenu`,(e)=>{
// // e.preventDefault();
// // let imageData=imgData.getData();
// // console.log(imageData);
// // let imageName=imageData.name.replaceAll(`.dat`,``);
// // let imageType=imageData.type.split(`/`)[1];
// // let image = document.createElement('a');
// // image.href = img.src;
// // image.download = `${imageName}.${imageType}`;
// // image.click();
// // })
// }
// })
// }
// )
// getTag('img').forEach((item) => {
// imgObserver.observe(item);
// });
await loadConfig(`${messagePath}/imgdata.txt`);

$(`img`).bind(`click`,function(){
global.showImg(true,$(this).attr(`src`),$(this).attr(`data-src`));
Expand All @@ -253,14 +245,46 @@ async function main(){
image.download = `${imageName}.${imageType}`;
image.click();
});
if($(`img`).length>100){
//图片列表(懒加载)
let imgObserver = new IntersectionObserver(
(changes) => {
changes.forEach(async (change) => {
if (change.intersectionRatio > 0) {
let img = change.target;
let imgData=new ReadImg(img.dataset.src);
img.src = await imgData.read();
imgObserver.unobserve(img);

//图片列表(非懒加载)
let imgEl=$(`img`);
for(let i=0; i<imgEl.length; i++){
let curImgEl=imgEl.eq(i);
let imgData=new ReadImg(curImgEl.attr(`data-src`));
let imgSrc=await imgData.read();
curImgEl.attr(`src`,imgSrc);
// img.addEventListener(`contextmenu`,(e)=>{
// e.preventDefault();
// let imageData=imgData.getData();
// console.log(imageData);
// let imageName=imageData.name.replaceAll(`.dat`,``);
// let imageType=imageData.type.split(`/`)[1];
// let image = document.createElement('a');
// image.href = img.src;
// image.download = `${imageName}.${imageType}`;
// image.click();
// })
}
})
}
)
getTag('img').forEach((item) => {
imgObserver.observe(item);
});
}else{
//图片列表(非懒加载)
let imgSrcList=[];
for(let i=0; i<$(`img`).length; i++){
let imgData=new ReadImg($(`img`).eq(i).attr(`data-src`));
let curImgSrc=await imgData.read();
imgSrcList.push(curImgSrc);
}
for(let i=0; i<$(`img`).length; i++){
$(`img`).eq(i).attr(`src`,imgSrcList[i]);
}
}
}

Expand Down
5 changes: 3 additions & 2 deletions js/scripts/utils.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
let fs=require(`fs`);
let path=require(`path`);
const fs=require(`fs`);
const path=require(`path`);
const readline=require(`readline`);

String.prototype.replaceAll=function(org,tgt){
return this.split(org).join(tgt);
Expand Down
1 change: 1 addition & 0 deletions python/install.bat
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@echo off
echo Installing dependencies...
pip install loguru
pip install pyinstaller
pause
Loading

0 comments on commit d296fb2

Please sign in to comment.