我与一位联系人进行了长时间(数月)的iMessage对话。当他重新安装操作系统时,他丢失了这些消息,但是我仍然拥有档案。我们希望保留一些重要信息。
是否有一种简单的方法可以以人类可读的形式导出此对话以进行存档,并保留任何图像?
我可以选择部分对话,将其复制到剪贴板并将其粘贴到RTF文档中,但这会丢弃所有图像。我正在寻找一种保留图像的方法。
注意:我仅在OS X而非iOS上使用iMessage。
(理想情况下,我也想导出所有非图像文件附件,但我不希望这样做是可能的。)
我与一位联系人进行了长时间(数月)的iMessage对话。当他重新安装操作系统时,他丢失了这些消息,但是我仍然拥有档案。我们希望保留一些重要信息。
是否有一种简单的方法可以以人类可读的形式导出此对话以进行存档,并保留任何图像?
我可以选择部分对话,将其复制到剪贴板并将其粘贴到RTF文档中,但这会丢弃所有图像。我正在寻找一种保留图像的方法。
注意:我仅在OS X而非iOS上使用iMessage。
(理想情况下,我也想导出所有非图像文件附件,但我不希望这样做是可能的。)
Answers:
如果您知道联系人的iMessage帐户,这里就是我的bash脚本,用于检索文本和图像。
#Parameter is a iMessage account (email or phone number i.e. +33616.... )
if [ $# -lt 1 ]; then
echo "Enter a iMessage account (email of phone number i.e +33616.....) "
fi
login=$1
#Retrieve the text messages
sqlite3 ~/Library/Messages/chat.db "
select is_from_me,text from message where handle_id=(
select handle_id from chat_handle_join where chat_id=(
select ROWID from chat where guid='iMessage;-;$1')
)" | sed 's/1\|/me: /g;s/0\|/budy: /g' > MessageBackup.txt
#Retrieve the attached stored in the local cache
sqlite3 ~/Library/Messages/chat.db "
select filename from attachment where rowid in (
select attachment_id from message_attachment_join where message_id in (
select rowid from message where cache_has_attachments=1 and handle_id=(
select handle_id from chat_handle_join where chat_id=(
select ROWID from chat where guid='iMessage;-;$1')
)))" | cut -c 2- | awk -v home=$HOME '{print home $0}' | tr '\n' '\0' | xargs -0 -t -I fname cp fname .
我自由地提出了Matthieu的上述回答。我编写了一个脚本,该脚本将通过备份用户的所有消息(包括图像,音频文件和电影)来自动执行该过程-通过电话号码将每个对话存储为文本文件。
https://github.com/PeterKaminski09/baskup
编辑:我将脚本开发为具有联系人识别等一些不错功能的OS X应用程序。https://peterkaminski09.github.io/baskup
我找到了可行的解决方案:
结果看起来不太好,但是它确实包含所有图像,并且文本是可搜索的。这样就足够了。
这个人似乎有一个更完善的解决方案(不要无视上面的极为有用的SQLite刮板):
http://www.chrisfinke.com/2013/11/05/convert-ichat-transcripts-to-useable-xml/
总结博客:
成绩单是从您的日志中生成的,并存储在以下位置:
〜/图书馆/应用程序支持/ Adium 2.0 /用户/默认/日志/
转换后的文件采用HTML格式,更易于阅读,并且希望对归档更加友好,但是sqlite
附件链接的方法似乎很明智。
请注意,iMessage附件通常位于:
~/Library/Containers/com.apple.iChat/Data/Library/Messages/Attachments/...
(我不知道其中所包含的内容和不存在的内容的规则,因此它可能并不完整-但其中有相当多的内容)
但是实际上,您可以在文件的扩展属性中看到有关联系人和对话的一些信息:
$ xattr -lp com.apple.metadata:kMDItemWhereFroms <attachment>
如果Messages将其下载,则会打印一个原点。
导出iMessages应用程序可让您将SMS / iMessages保存,打印,备份和恢复到Mac / PC。