Closed lb-chc closed 1 year ago
奇怪 这个开关貌似根本就没生效? 稍后看看
以及功能请求:希望附带json导出格式(当然txt也不是不行......)的选项来便于分析和后续可视化
奇怪 这个开关貌似根本就没生效? 稍后看看
果然没测试嘛hhhhhhh 能搞出来的话你就是这个主题前两页里最好的项目了!(因为再后面的我就没看了)
(我是在2022.11与2023.3于官网下载的QQ非TIM版本上进行测试的)
在搞了在搞了 等重构了顺便写一个
不过我现在没有数据文件复现不了,看代码也没找到什么会导致这个问题的地方,方便做一下这两个事吗?
不过我现在没有数据文件复现不了,看代码也没找到什么会导致这个问题的地方,方便做一下这两个事吗? 1. 把“合并图片”分别打开、关闭各重复两次看是否复现 2. 描述两种情况生成的HTML具体差异 感谢!
应该是我谢你才对,要不,你给我个邮箱,我挑两个导出文件发给你吧?
ly-niko@qq.com
emm……请问你运行命令的时候工作目录是哪里?问题可能是emoticon文件夹不在当前工作目录下或别的什么 再试试新版
emm……请问你运行命令的时候工作目录是哪里?问题可能是emoticon文件夹不在当前工作目录下或别的什么 再试试新版
啊,我懒了......下载了项目ZIP在C:\Users\Win10\Desktop\QQ-History-Backup-master
使用目前的最新版(下载项目ZIP),导出图片与合并图片全选“是”时的导出文件大小正常了,比选否时大了,文字量看起来足够多了,但还是没有图片。
这个项目是可以导出图片的,但不能导出群聊,一次只能导出一个,使用也困难,但我因此确信我的数据库里确实有图片
等我下一次做备份时鼓捣聊天记录再做实验吧........(抱歉)
(也许下次我可以专门建一个QQ号取出数据给你做实验)
数据我现在是有了,之后找个时间试试
文件大小和不导出图片相比如何?现在怀疑是图片格式统一识别为并不是这个问题png
的问题(实际情况jpg
/gif
)均有
现在怀疑是crc算法实现有问题了(因为别的这两个项目的代码基本是相同的),稍后发一个log里只有相关调试信息的测试版给你试试
文件大小和不导出图片相比如何?~现在怀疑是图片格式统一识别为
png
的问题(实际情况jpg
/gif
)均有~并不是这个问题现在怀疑是crc算法实现有问题了(因为别的这两个项目的代码基本是相同的),稍后发一个log里只有相关调试信息的测试版给你试试
导出图片与合并图片全选“是”时 194mb 导出图片与合并图片全选“否”时 148mb
听起来不错,直接把版本发到最新版里面吧!GUI-fuc*BUG.py
不太行,因为这个log删干净了,也只能给debug用了
跑一下,
log.txt
直接发上来或发我邮箱
你的诚意溢出来了!已发送 由于那个java项目我没法再次让它正常运行,所以我不能确定附带的样本在数据库里是否真的有图片
根据测试,crc64
算法实现是相同的——也就是说,理论不会出现那个 Java 项目能找到图片而这个找不到的情况
所以这个我就当是无法复现了?
相关代码:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
class CRC64 {
private static final long[] CRCTable = new long[256];
private static final long POLY64REV = 0x95AC9329AC4BC9B5L;
private static final long INITIALCRC = 0xFFFFFFFFFFFFFFFFL;
private static boolean init = false;
public static final long c(String in) {
if (in == null || in.length() == 0) {
return 0;
}
long crc = INITIALCRC, part;
if (!init) {
for (int i = 0; i < 256; i++) {
part = i;
for (int j = 0; j < 8; j++) {
int value = ((int) part & 1);
if (value != 0) {
part = (part >> 1) ^ POLY64REV;
} else {
part >>= 1;
}
}
CRCTable[i] = part;
}
init = true;
}
int length = in.length();
for (int k = 0; k < length; ++k) {
char c = in.charAt(k);
crc = CRCTable[(((int) crc) ^ c) & 0xff] ^ (crc >> 8);
}
return crc;
}
}
public class HelloWorld { //类,HelloWorld就是这个类的类名
public static void main(String[] args) { //方法
String a = "chatimg:E4E83D641AAE552710022146D22002A4";
String CRC64Value;
CRC64Value = String.valueOf(CRC64.c((a)));
CRC64Value =
"Cache_" +
(CRC64Value.startsWith("-") ? "-" : "") +
Long.toHexString(Long.valueOf(CRC64Value.replace("-", "")));
String line1, line2, py_crc;
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream("log.txt"))
);
line1 = br.readLine();
while (line1 != null) {
// if begins with: [PRINT]: chatimg:
if (line1.startsWith("[PRINT]: chatimg:")) {
line2 = br.readLine();
// if begins with: [PRINT]: chatimg:
if (line2.startsWith("[PRINT]: ")) {
py_crc = line2.substring(9);
//print
//System.out.println(py_crc);
CRC64Value = String.valueOf(CRC64.c((line1.substring(9))));
CRC64Value =
(CRC64Value.startsWith("-") ? "-" : "") +"0x"+
Long.toHexString(Long.valueOf(CRC64Value.replace("-", "")));
if (!py_crc.equals(CRC64Value)) {
System.out.println(CRC64Value);
System.out.println("!!Found: " + line1.substring(9)+"\n"+line2);
break;
}
}
}
line1 = br.readLine();
}
} catch (Exception e) {
System.out.println(e);
}
// Scanner input = new Scanner(System.in);
// while (true) {
// a = input.next();
// }
}
}
那么,根据你的聊天记录测试数据,你的项目能复原群聊和私聊中的图片吗?无法复现的话也没办法,以后我换别的账号的数据自己再测一次吧.......
可以的
可以的
谢谢你的维护
如果选择 自己的QQ号:【自己的QQ号】 导出全部记录:是 QQ号/群号:【没写】 私聊/群聊:私聊 表情版本:新 导出图片:是 合并图片:否
则导出了完整的文字记录95.0 MB
如果在此基础上改为选择 合并图片:是
则导出了不完整的文字记录,也没有图片1.71 MB
谢谢你做的软件,比原版更好,可以在不足够完整的数据库基础上进行导出。