https://github.com/hikariyo/qq-chat-history
A tool to extract QQ chat history
https://github.com/hikariyo/qq-chat-history
chat-history python python3 qq
Last synced: 4 months ago
JSON representation
A tool to extract QQ chat history
- Host: GitHub
- URL: https://github.com/hikariyo/qq-chat-history
- Owner: hikariyo
- License: mit
- Created: 2023-01-22T10:52:47.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-15T10:28:56.000Z (6 months ago)
- Last Synced: 2024-12-15T21:43:31.856Z (4 months ago)
- Topics: chat-history, python, python3, qq
- Language: Python
- Homepage: https://pypi.org/project/qq-chat-history/
- Size: 173 KB
- Stars: 15
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QQ 聊天记录提取器
## 简介
从 QQ 聊天记录文件中提取聊天信息,仅支持 `txt` 格式的聊天记录。
**现在 NTQQ 不支持导出文件**,可以使用我写的一个小[脚本](https://gist.github.com/hikariyo/03d57130eb006c5b0feed86173bc843f)来通过 OneBot 协议获取消息,逻辑比较简单就不单独开仓库了。
## 安装
使用 `pip` 安装,要求 `Python 3.9` 或以上版本。
```bash
> pip install -U qq-chat-history
```## 使用
最简单的启动方式如下,它会自动在当前目录下创建 `output.json` 进行输出(如果安装到虚拟环境请确保已激活)。
```bash
> qq-chat-history /path/to/file.txt
```启动时输入 `--help` 参数查看更多配置项。
```bash
> qq-chat-history --help
```或者,可以作为一个第三方库使用,如下:
```python
import qq_chat_historylines = '''
=========
假装我是 QQ 自动生成的文件头
=========1883-03-07 11:22:33 A
Text A1
Text A21883-03-07 12:34:56 B(123123)
Text B1883-03-07 13:24:36 C(456456)
Text C1883-03-07 22:00:51 A
Text D
'''.strip().splitlines()# 这里的 lines 也可以是文件对象或者以字符串或者 Path 对象表示的文件路径。
for msg in qq_chat_history.parse(lines):
print(msg.date, msg.id, msg.name, msg.content)
```注意 `parse` 方法返回的是一个 `Body` 对象,一般以 `Iterable[Message]` 的形式使用。当然 `Body` 也提供了几个函数,~虽然一般也没什么用~。
## Tips
+ 如果当作一个第三方库来用,例如 `find_xxx` 方法,可以从数据中查找指定 `id` 或 `name` 的消息;`save` 方法可以将数据以 `yaml` 或 `json` 格式保存到文件中,虽然这个工作一般都直接以 `CLI` 模式启动来完成。
+ 函数 `parse` 可以处理多样的类型。
+ `Iterable[str]`:迭代每行的可迭代对象,如 `list` 或 `tuple` 等。
+ `TextIOBase`:文本文件对象,如用 `open` 打开的文本文件,或者 `io.StringIO` 都属于文本文件对象。
+ `str`, `Path`:文件路径,如 `./data.txt`。这些参数都将以对应的方法来构造 `Body` 对象。