23 个版本 (12 个稳定版)
2.0.1 | 2024年8月3日 |
---|---|
1.9.0 | 2024年6月10日 |
1.8.0 | 2023年12月4日 |
1.7.0 | 2023年11月20日 |
0.1.4 | 2022年12月30日 |
#13 in 命令行工具
每月779次下载
2MB
13K SLoC
二进制文档
imessage-exporter
二进制文件可以将 iMessage 数据导出为 txt
或 html
格式。它还可以运行诊断以查找 iMessage 数据库中的问题。
安装
安装此软件有几种方法。
Cargo (推荐)
此二进制文件可在 crates.io 上获得。
cargo install imessage-exporter
是正常使用的最佳安装方式。
卸载步骤
$ cargo uninstall imessage-exporter
Homebrew
此二进制文件可通过 brew
获取。
brew install imessage-exporter
将安装应用程序,但可能不是最新版本。
卸载步骤
$ brew uninstall imessage-exporter
预构建的二进制文件
发布页面 提供了适用于 Apple Silicon 和 Intel-based Mac 的预构建二进制文件。
卸载步骤
$ rm path/to/imessage-exporter-binary
手动安装
clone
仓库cd
进入仓库cargo run --release
编译
如何使用
-d, --diagnostics
Print diagnostic information and exit
-f, --format <txt, html>
Specify a single file format to export messages into
-c, --copy-method <compatible, efficient, disabled>
Specify an optional method to use when copying message attachments
Compatible will convert HEIC files to JPEG
Efficient will copy files without converting anything
If omitted, the default is `disabled`
-p, --db-path <path/to/source>
Specify an optional custom path for the iMessage database location
For macOS, specify a path to a `chat.db` file
For iOS, specify a path to the root of an unencrypted backup directory
If omitted, the default directory is ~/Library/Messages/chat.db
-r, --attachment-root <path/to/attachments>
Specify an optional custom path to look for attachments in (macOS only)
Only use this if attachments are stored separately from the database's default location
The default location is ~/Library/Messages/Attachments
-a, --platform <macOS, iOS>
Specify the platform the database was created on
If omitted, the platform type is determined automatically
-o, --export-path <path/to/save/files>
Specify an optional custom directory for outputting exported data
If omitted, the default directory is ~/imessage_export
-s, --start-date <YYYY-MM-DD>
The start date filter
Only messages sent on or after this date will be included
-e, --end-date <YYYY-MM-DD>
The end date filter
Only messages sent before this date will be included
-l, --no-lazy
Do not include `loading="lazy"` in HTML export `img` tags
This will make pages load slower but PDF generation work
-m, --custom-name <custom-name>
Specify an optional custom name for the database owner's messages in exports
Conflicts with --use-caller-id
-i, --use-caller-id
Use the database owner's caller ID in exports instead of "Me"
Conflicts with --custom-name
-b, --ignore-disk-warning
Bypass the disk space check when exporting data
By default, exports will not run if there is not enough free disk space
-h, --help
Print help
-V, --version
Print version
示例
将数据导出为 html
并将附件以网络兼容格式从默认的 iMessage 数据库位置复制到您的家目录
imessage-exporter -f html -c compatible
将数据导出为 txt
并将附件以原始格式从默认的 iMessage 数据库位置复制到当前工作目录中的新文件夹 output
imessage-exporter -f txt -o output -c efficient
从位于 ~/iphone_backup_latest
的未加密 iPhone 备份中导出 txt
并将其复制到当前工作目录中的新文件夹 backup_export
imessage-exporter -f txt -p ~/iphone_backup_latest -a iOS -o backup_export
从 /Volumes/external/chat.db
导出为 html
到 /Volumes/external/export
,不复制附件
imessage-exporter -f html -c disabled -p /Volumes/external/chat.db -o /Volumes/external/export
从 /Volumes/external/chat.db
导出为 html
到 /Volumes/external/export
,附件位于 /Volumes/external/Attachments
imessage-exporter -f html -c efficient -p /Volumes/external/chat.db -r /Volumes/external/Attachments -o /Volumes/external/export
从默认的 macOS iMessage 数据库位置导出从 2020-01-01
到 2020-12-31
的消息,以 txt
格式导出到 ~/export-2020
imessage-exporter -f txt -o ~/export-2020 -s 2020-01-01 -e 2021-01-01 -a macOS
功能
点击此处 查看功能列表。
注意事项
HTML 导出
在 Safari 中的 HTML 导出时,引用本地文件时,必须在 Develop > Developer Settings...
菜单中允许 Safari 从本地文件系统读取
此外,由于文件存储在 ~/Library
中,您需要在系统设置中授予浏览器完整磁盘访问权限。
注意:传递有效的 --copy-method
时,此操作不是必需的。
PDF 导出
我无法以合理的方式使 PDF 导出工作。用户可以按照上面 Safari 的步骤操作,然后打印为 PDF。
wkhtmltopdf
wkhtmltopdf
即使启用了标志,也拒绝渲染本地图像
let mut process = Command::new("wkhtmltopdf")
.args(&vec![
"--enable-local-file-access".to_string(),
html_path,
pdf_path.to_string_lossy().to_string(),
])
.spawn()
.unwrap();
即使授予了 cargo
、imessage-exporter
和 wkhtmltopdf
完整磁盘访问权限,并且在将文件复制到与 HTML
文件相同的目录后,此问题仍然存在。
浏览器自动化
有几个 Rust 的 chomedriver
包装器。使用异步的这些包装器会使二进制文件过大(超过 10mb
),并且有太多的依赖。在 headless-chrome
crate 中的同步实现可以工作,但 在生成大型 PDF
时超时,即使使用极端的超时时间。
依赖项
~38MB
~611K SLoC