我已经剖析了Skype数据库main.db了几天,但这还没有弄清楚。自然,这个问题将非常针对Skype main.db结构。(免责声明)
似乎我需要的所有必要信息都在表Conversations
,Messages
和Participants
中。Message
表包含已说过的实际日志,收件人,时间戳和convo_id
外键(尽管未强制执行)以连接到消息所属的Conversation
。
存在Conversation
来保存Message
和参与的联系人的集合。Participants
表适用于Conversations
表和Contacts
表之间的多对多连接器表。
给我的是Chats
和Chatmembers
表。 Chatmembers
可用于Chats
,而Participants
表可用于Conversations
表;连接联系人和对话-或“聊天”。Chats
中的内容与Conversations
类似,除了Message
表中没有任何聚合。从Messages
表映射到消息日志(Chats
表的行)所属的Messages
表是不可能的。Chats
和Conversations
共享一个外键,Conversations
表具有名为chat_dbid
的列,该列连接到Chats
表。但是Conversations
表中有些行的chat_dbid
字段为空,并且Chats
中并非所有行的id
字段都与chat_dbid
表中的Chats
字段相对应。Chats
表仍在更新中,我可以根据时间戳及其中的成员来识别最近进行的一些聊天或对话。
有谁确切知道Chats
表的作用?或者说,Chats
表和Conversations
表的区别和理由是什么?
当我疯狂地寻找这一点时,我只能找到one like that talked about main.db structure,它并不是很有帮助。
根据链接Chats
和Conversations
他们关于聊天和对话的术语是什么?它们有何不同?
这一直让我发疯。
最佳答案
昨天我也在Skype中浏览main.db表。以下是我的发现。
对话表唯一标识与特定联系人(或您创建的群组联系人)的对话。对话需要进行所有通信:聊天消息,语音消息,文件传输,您与特定联系人进行的通话。大多数表都引用了该表中的条目。
邮件表具有convo__id,
聊天表包含conv_dbid,
传输具有convo_id,并且同样。
消息表:消息输入并不总是聊天。如果条目是聊天,则将填充其聊天名称字段。
聊天和消息似乎具有一对多的关系。聊天是按某些标识符维护的消息的集合(最有可能是不确定的一天)。 “type = 61”似乎是正常消息:用户键入的消息。其他类型似乎是自动生成的消息,例如。如果通话中断,您会收到消息。
希望这可以帮助。