这好像是一个可能没用又可能很有用的工具。
能归档 QQ 、MobileQQ 、Wechat 、SMS 、CallLog 、Camera 、Email 等记录。more
并支持筛选、搜索、评论、图标统计分析等功能。
少啰嗦,先看 Demo http://demo.shmily.lqzh.me/(托管在 Github ,访问可能略慢)
我看过 现有 的聊天记录归档项目大都有以下问题
基于以上问题,Shimly 的亮点在于
使用上
程序上
完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
架构(详见 文档)
我将架构分为 Get
(ExportDB 、ToMsg) 和 Show
(Modify 、Web) 4 个部分,中间使用 <JSON>${Shimly-Msg}
标准格式进行融合
ExportDB
、ToMsg
部分,做自己的数据导出与分析Get
,而不再担心前端的编写Show
的基础上也可以更简单的自定义显示总结: 没看过这么完整且好用的数据归档工具
都看到这了不拿出点干货都骗不到 star 了。
y = kx + b
都到这了
1
kerb15 2023-06-01 11:36:38 +08:00
10 年前的 qq ,设了聊天记录密码,密码是本地验证的,这个能提取吗
|
2
graetdk 2023-06-01 11:47:28 +08:00
很强
|
3
jivei 2023-06-01 12:07:00 +08:00 via iPhone 4
S60V3 ,泪目
|
4
yyf1234 2023-06-01 12:09:32 +08:00 via iPhone 1
死去的记忆开始攻击我
|
5
nanjingwuyanzu 2023-06-01 13:44:39 +08:00
demo 里面为啥分手不讲讲?
|
6
vsitebon 2023-06-01 14:19:01 +08:00
这个项目配合现在的 chatpdf 类项目估计能变成自己和过去的自己对话的契机(
|
7
Exdui 2023-06-01 14:39:05 +08:00
公安取证神器
|
9
nerkeler 2023-06-01 16:09:14 +08:00
赞!!!
|
10
xiaoyuesanshui 2023-06-01 16:59:31 +08:00
赞!!好东西
|
11
coolfan 2023-06-01 17:30:17 +08:00 1
🤣被你 at 过来的,晚上试试👍🏻先给你点个赞!
|
14
xiaoyuesanshui 2023-06-01 22:34:23 +08:00
晚上回家研究了一下自己的微信
直接就卡在 decode db 那一步上了 huawei 的手机好像没找到 /data/data/com.tencent.mm/MicroMsg/ 下的 systemInfo.cfg CompatibleInfo.cfg 貌似跟 root 有关系? 我手行只有微信备份出来的聊天记录 楼主 我是不是搞错方向了 |
15
aoguai 2023-06-01 23:01:25 +08:00
我自己也在写[aoguai/QQtoExcel: 一个让 PC QQ 导出 TXT 聊天记录转 Excel 表格的工具]( https://github.com/aoguai/QQtoExcel),最近也在重构 QQ 手机聊天记录导出的软件(之前在某爱发过一个还上了当年优秀帖子...),其实微信安卓导出聊天记录我也研究的七七八八了...但是实在没啥空闲时间做
|
16
dianso 2023-06-01 23:30:30 +08:00
需要这个~~
|
17
dianso 2023-06-01 23:32:53 +08:00
能 docker 部署么?
|
18
locoz 2023-06-01 23:57:13 +08:00 2
点开 demo ,往最下一跳,“到这里已经分手了呀”,泪目
|
19
abcdxe2v 2023-06-02 00:02:20 +08:00
@lqzhgood 我看“撬开 PC QQ 的本地 SQLite 数据库”这篇文章很长时间了,但是一直没时间搞,逆向 QQ 太难了。。。
|
20
lqzhgood OP @xiaoyuesanshui #14
这两个文件印象中也是为了获取 IMEI ,你可以使用文档中的手动解密方式,一样的。 如果是双卡手机,两个 IMEI 都试试~ // 如果迁移过,之前的手机 IMEI 也有可能 如果还是不行,试试文档中提供的暴力破解~ 还有问题,在项目提 Issues 把,方便追踪问题。 |
21
abcdxe2v 2023-06-02 00:08:17 +08:00
@xiaoyuesanshui 是的,/data/data 这个目录,data 分区,必须得 root 了才能访问。华为新款应该没法 root
|
22
abcdxe2v 2023-06-02 00:12:14 +08:00
安卓没 root 获取不到微信和 qq 的聊天记录数据库的
|
23
bkmi 2023-06-02 00:12:54 +08:00 via Android
不错不错,要是 UI 能适配移动设备就更好了
|
24
bkmi 2023-06-02 00:14:30 +08:00 via Android 1
没法 root 的把数据迁移到 root 的设备就好了,实在不行迁移到模拟器也是可以的
|
25
lqzhgood OP @aoguai
我是从 .mht 和 富文本 两个角度导出的,数据还包含了 表情 alias 信息,还有消息的类型 .mht 因为包含了 html 结构,解析会比 .txt 更精准 干脆合并一下吧, 又少一点轮子。你从 Get 项目拿到的 JSON ,转 Excel 好像更方便 // QQ 记录到处从来就没更新过,新的很多消息类型也都不支持 // 这里更新的 QQ NT 应该会重写吧 |
30
lqzhgood OP @dianso docker 暂时没有哦,因为都是脚本性质,而且基本没有难搞的依赖和 runtime ,用的人很多再搞吧。
|
31
codyfeng 2023-06-02 08:24:35 +08:00 via Android 1
不错不错,感谢 OP 的创造分享👍👍
|
32
xiaoyuesanshui 2023-06-02 09:24:03 +08:00 1
@abcdxe2v 的确是 root 相关的问题。
如果通过系统备份,能把这个目录给备出来 备份出来后会有一个 com.tencent.mm.tar com.tencent.mm.apk .tar 文件根本解不出来,file 看文件类型就是 :data 看了些资料发现有人提出会有 tar 打包,但是没说解压的方法 我去搞个 issue |
35
gabkfivyfbst 2023-06-02 11:28:53 +08:00
咋运行
|
36
etnperlong 2023-06-02 17:37:40 +08:00 1
非常感谢,这个界面风格真的好漂亮,觉得回到了十年前那个青葱的岁月
现在跟对象主要用 Telegram 聊天,打算自己适配一下 TG |
37
lqzhgood OP @etnperlong
感谢支持~ 好做了提个 Issue ,我加到文档的 Get 列表去~ |
38
jwdstefani 2023-06-03 20:58:24 +08:00
感谢 已经 star ,马上部署起来
|
39
robking 2023-06-04 10:25:52 +08:00
有没有详细的部署教程呀
|
41
ppBruce 2023-06-06 17:19:43 +08:00
进行到 dbToJson 卡住了。
1.input 文件夹不存在,看起来是手动在'2 dbToJson'下自己建一个? 2.修改 config.js 填入需要导入的对方微信 id ,这步是为什么呢?是不是可以理解为每次只能把一个对话转为 json ,多个的话需要手动执行多次? 3.在 2 dbToJson 下执行 node run build 一直报错。 node:internal/modules/cjs/loader:1078 throw err; ^ Error: Cannot find module 'C:\wechat\tools\Shmily-Get-Wechat-main\export\db-android\2 dbToJson\run' [90m at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) [39m [90m at Module._load (node:internal/modules/cjs/loader:920:27) [39m [90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) [39m [90m at node:internal/main/run_main_module:23:47 [39m { code: [32m'MODULE_NOT_FOUND' [39m, requireStack: [] } Node.js v18.16.0 4.在 2 dbToJson 下执行 node index.js ,执行一段时间后,报错。 正在解密 Message java.lang.OutOfMemoryError: Java heap space at java.io.BufferedWriter.<init>(Unknown Source) at java.io.BufferedWriter.<init>(Unknown Source) at sqlite.test.ReadTxt.writeDocument(ReadTxt.java:116) at sqlite.test.ReadTxt.main(ReadTxt.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84) at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94) node:child_process:960 throw err; ^ Error: Command failed: decodeMessageTable.exe java.lang.OutOfMemoryError: Java heap space at java.io.BufferedWriter.<init>(Unknown Source) at java.io.BufferedWriter.<init>(Unknown Source) at sqlite.test.ReadTxt.writeDocument(ReadTxt.java:116) at sqlite.test.ReadTxt.main(ReadTxt.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84) at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94) at checkExecSyncError (node:child_process:885:11) at execSync (node:child_process:957:15) at Object.<anonymous> (C:\wechat\tools\Shmily-Get-Wechat-main\export\db-android\2 dbToJson\index.js:13:1) at Module._compile (node:internal/modules/cjs/loader:1254:14) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47 { status: 1, signal: null, output: [ null, '', 'java.lang.OutOfMemoryError: Java heap space\r\n' + '\tat java.io.BufferedWriter.<init>(Unknown Source)\r\n' + '\tat java.io.BufferedWriter.<init>(Unknown Source)\r\n' + '\tat sqlite.test.ReadTxt.writeDocument(ReadTxt.java:116)\r\n' + '\tat sqlite.test.ReadTxt.main(ReadTxt.java:86)\r\n' + '\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n' + '\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n' + '\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n' + '\tat java.lang.reflect.Method.invoke(Unknown Source)\r\n' + '\tat com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84)\r\n' + '\tat com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)\r\n' ], pid: 10184, stdout: '', stderr: 'java.lang.OutOfMemoryError: Java heap space\r\n' + '\tat java.io.BufferedWriter.<init>(Unknown Source)\r\n' + '\tat java.io.BufferedWriter.<init>(Unknown Source)\r\n' + '\tat sqlite.test.ReadTxt.writeDocument(ReadTxt.java:116)\r\n' + '\tat sqlite.test.ReadTxt.main(ReadTxt.java:86)\r\n' + '\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n' + '\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n' + '\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n' + '\tat java.lang.reflect.Method.invoke(Unknown Source)\r\n' + '\tat com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84)\r\n' + '\tat com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)\r\n' } Node.js v18.16.0 |
42
lqzhgood OP @ppBruce
1. git 不允许空文件夹 2. 1 次 1 个, 有多个的需求可以 pr 3. `npm run build` 文档错误 4. jvm 内存设置过小 // github issues 里有解 - 本帖不讨论问题,有问题 Github 上提`issues`,别人也能看到并借鉴 - 有问题先关键词搜索 `issues`,若无则提 `issues` - 代码格式化 过长折叠 |
43
genghisun 2023-06-12 16:41:47 +08:00
太牛了!!
|
44
ccxuy 2023-11-19 13:28:28 +08:00
idea 非常棒啊, 可是有点看不懂怎么部署使用
|
45
lqzhgood OP |
48
FlutterKira 268 天前
demo 完全打不开
|
49
lqzhgood OP @FlutterKira 看网络质量了, demo 是放在 Github Page 上的.
|