读取Skype消息存档。

29

我想在Skype应用程序之外阅读我的Skype消息存档,并能够以某种方式导出它(而不是从我的消息中复制粘贴),据我所知,Skype仅提供30天的存档。

有人使用过用于存档/导出Skype消息的应用程序吗?


1
这是一个方便的小工具,可用于解析Skype在所有平台上的历史文件(实际程序只能在Windows上运行):* [LogView官方主页](http://www.nirsoft.net/utils/skype_log_view.html) - BastiBen
1
您可能会发现这个Skype插件很有帮助: http://scand.com/products/skyhistory/index.html. 它可以在单独的闪存驱动器上保存和存储Skype聊天记录,而且是免费的。 - SHM
1
我发现软件<a href="http://skypelogr.com/">SkypeLogR</a>非常有用,如果想快速将所有聊天记录导出为文本文件。它可以为主机上可用的所有帐户执行此操作。不需要 Skype 密码。 - jdevelop
现在有一个网络服务,可用于查看和导出Skype main.db文件:skypebrowser.com - holdenmcgrohen
5个回答

21
您还可以查看Skype的个人资料数据库(%USERDIR%\Application Data\Skype\%您的个人资料名称%\main.db),这基本上是SQLite数据库,您可以从中获取一些信息。如果您正在使用Windows 8及以上版本,则路径为%USERDIR%\AppData\Local\Packages\Microsoft.SkypeApp\Localstate\%您的Skype个人资料名称%\main.db 我会给您关于表格的提示:
  • "Conversations" - 一个对话
  • "Messages" 通过convo_id字段与"Conversations"相关联
  • "Chats" - 已保存聊天列表,每个聊天由对话组成
  • "ChatMembers" - 聊天组成员
这些表是相当宽的,某些字段的用法可能不太明显,但我认为您已经了解了基本思路。

15

来吧,这里是Stackoverflow,让我们变得更加专业吧!放下幼稚的JPG、GUI工具和电子表格伪代码,深入问题的核心吧!

[拳头碰击]

来源:https://coolaj86.com/articles/searching-skypes-sqlite-database/

查找Skype数据库

首先,您需要找到正确的Skype数据库:

ls ~/Library/Application\ Support/Skype/

sqlite3 ~/Library/Application\ Support/Skype/<<YOUR_USER_NAME>>/main.db

好好学习乘法表!

您需要查看可用的乘法表及其描述:

.tables          " see the short table list
.schema Contacts " all about the Contacts table
.schema Messages " all about the Messages table

你可能需要使用传统的ctrl+f在输出结果中搜索类似timeauthorusername这样的内容。

深入了解SQL语句

然后你需要深入了解SQL语句...

" List the 25 most recently contacted contacts
SELECT skypename, lastused_timestamp FROM Contacts ORDER BY lastused_timestamp DESC LIMIT 25;

" List the 100 most recent messages
SELECT id, convo_id, timestamp, type, author, body_xml FROM Messages ORDER BY timestamp DESC LIMIT 100;

" List the 100 most recent conversations (and all participants)
SELECT last_activity_timestamp, identity, type, given_displayname, displayname FROM Conversations ORDER BY last_activity_timestamp DESC LIMIT 100;

" Search for a message with the text 'home'
SELECT author, body_xml FROM Messages WHERE body_xml LIKE '%HOME%' ORDER BY timestamp ASC;

" Search for a contact named 'john'
SELECT (displayname || ' : ' || skypename || ' : ' || fullname) as names FROM Contacts WHERE names LIKE '%JOHN%' ORDER BY lastused_timestamp ASC;

请注意:

  • Messages 指的是像 "你好吗?" 这样的一行文本。
  • Conversations 指的是两个或多个人之间的一组消息。
  • 我认为 Chats 指的是通过标签(比如“昨天”,“7 天前”,“3 月 24 日”等)分隔的逻辑时间间隔。

注:原文中提到的注释以引号而不是井号开头。

7

我推荐两种方法:

A. 最简单的方法是使用Skyperious。适用于Windows、Linux和Mac。您可以完成所有这些操作。

enter image description here

这是搜索功能:

enter image description here

这是导出的示例输出:

enter image description here

B. 更难,但自然更灵活的方法是安装SQLite浏览器,例如这个,并自己导出消息。您可以通过查看这篇文章了解如何做到这一点,或者您也可以搜索其他类似的文章(AlexS的答案也提供了线索)。您需要具备一定的SQL经验才能使用此选项。


4

那个链接已经失效了。Skype还有API吗? - Lance Fisher

2
我遇到了与Skype历史记录相同的问题,每个人都想要玩弄这些历史记录,出于各种原因。我想分享我的经验,虽然我不是专家,但这可能会对某些人有所帮助。
无论您使用桌面还是智能设备,Main.db文件都是Skype历史记录的核心,它是一个SqL 3文件。
如何获取它????????
1. 桌面电脑:
关闭Skype并在C:/Users/[your computer username]/App Data/Roaming/Skype/[your Skype Id]找到Main.db文件(请查看Win7的情况,对于XP和其他操作系统,您需要找到该文件)。
备份此文件到其他驱动器。
使用任何SQL软件,如SQLite或SQLite Expert或其他软件,将文件作为数据库打开。
在数据菜单中,您可以在程序左侧看到有关历史记录的所有信息,例如消息、通话、对话等等详细信息。
您将在消息中找到发送和接收的即时消息。
右键单击,选择选择列,并选择感兴趣的列,例如ID用户名body-xml用于消息文本和时间戳。
您可以勾选所需字段来缩短选择范围。
右键单击并选择文本编辑,然后您可以进行所需的任何操作,例如添加、删除等,以针对所选字段。
您不需要保存任何内容,因为它会自动保存。
对于时间步骤非常重要,因为它使用不同种类的日期格式,例如您会发现时间戳1261610607对应的日期时间为23/12/2009 18:23,
那么您如何调整时间?
您可以简单地打开Excel表格并粘贴方程式: =IF(H6="","",(H6/86400)+25569+(-5/24)) 这就是全部内容。
现在再次打开它,查看聊天历史记录。
2. 对于智能设备(以iPad为例):(您必须使用桌面电脑或笔记本电脑进行辅助操作:
  1. 下载并安装iExplorer for iPad或其他浏览软件。

  2. 连接您的设备,您将看到大部分文件。

  3. 选择APPs/Skype/Library/App Support/Skype/[your Skype ID]

  4. 右键点击并导出文件,将文件发送到您的桌面。

  5. 重复2-11步骤,如同桌面操作。

  6. 编辑完成后关闭数据库,从iExplorer指向您的Skype用户,选择添加文件,浏览到修改后的文件并再次发送到iPad。

  7. 启动Skype并查看结果。


多年过去了,我仍在为这个确切的问题苦苦挣扎(时间戳格式奇怪)。但不幸的是,你提供的 Excel 公式总是给出“2013年10月31日13:09”的结果,无论传入的时间戳是什么。 - JVC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接