我有 Ubuntu 18.04.2 LTS 桌面和 Skype 8.34.0.78,并且在 SQLiteStudio 中打开了 /home/{user_name}/.config/skypeforlinux/databases/Databases.db,我看到了熟悉的表结构,但其中根本没有数据。
因此,我搜索了最近在 Skype 聊天中使用的字符串,发现只有一个文件包含它:/home/crewnew/Documents/IndexedDB/file__0.indexeddb.leveldb/000006.log,但不确定如何读取该文件。SQLiteStudio 无法打开它,我也无法使用我在 Win10 机器上生成的用于读取 Skype 的 main.db 的 PHP 代码来读取它:
$db = new SQLite3('skype.db');
$results = $db->query('SELECT nsp_data FROM messagesv12');
while ($row = $results->fetchArray()) {
// And here's the data:
// $messages['cuid']
// $messages['conversationId']
// $messages['creator']
// $messages['createdTime']
// $messages['content']
}
基本上,我会不断检查 Skype 数据库,看某个群聊中是否有新消息,然后将消息发送到 MatterMost 频道,但我遇到了 WAMP 服务器问题,所以我最终安装了 Ubuntu,除了 Skype 数据库问题之外,我非常喜欢它。也许我应该以不同的方式将 Skype 消息发送到 MatterMost?
答案1
您可以阅读级别数据库直接/home/crewnew/Documents/IndexedDB/file__0.indexeddb.leveldb/
,只需要实现一个名为的比较器idb_cmp1
。
Leveldb 是一个 NoSQL 键值存储。对于数据库的二进制编码值,您可以使用我的python 源代码或者这个 C++ 源代码或者直接在 php 中实现解析,如果您愿意的话,如果可以以某种方式将 leveldb 包含到 php 中。
请注意,从 skype 8 开始,消息历史记录存储在云中,您只能从 leveldb 读取缓存的内容。尽情享受吧。