Firefox书签SQLite结构

时间:2009-01-21 09:06:42

标签: sqlite firefox-addon firefox-3 bookmarks

我正在尝试编写一个Firefox 3附加组件,这使我能够轻松地重新标记书签。例如,我有一些书签标记为“开发”,一些标记为“开发”,我想要一种方法轻松地将所有“delelopment”标签更新为“开发”。不幸的是我找不到这样做的附加组件,所以我想我会创建自己的。

在我设法掌握基础知识并发现FireFox将所有书签存储在名为Places.sqlite的SQLite数据库之前,尚未开发附加组件。在该数据库中有一个名为moz_bookmarks的表,其中包含书签目录中的所有书签,标签和文件夹。书签文件夹及其子书签的结构使用外键id表示,该外键id指向同一表中父文件夹的id,该表再次向上递归到该父文件夹的Id,直到它到达书签根。

然而,在我遇到困难的地方,你在firefox中应用的标签与书签有关。每个标记都有一个type = 2和parent ID = 4.但是我可以看到它与使用该标记的实际书签之间没有相关性。如果我在firefox中添加一个书签到没有特定的文件夹,但给它2或3个标签,那么它的父文件夹ID是5,它对应于“未归档”,但我看不到与其关联的标签的进一步关联。

我找到了这个Wiki page on the structure,但它并没有真正帮助。

这让我疯了:(请帮忙......

5 个答案:

答案 0 :(得分:27)

您可能已经发现了自己,但标签应用如下:

数据库中所有URL的中心位置是moz_places。表moz_bookmarks由外键列fk引用它。

如果您标记书签,则moz_bookmarks中有多个条目,所有条目都具有相同的引用fk:第一个是书签本身(标题位于title列)对于每个代码,moz_bookmarks中有一个额外的entrid具有相同的外键fk并引用parent coumn中的标记(指向moz_bookmarks行的moz_places ---------- id url (some more) 3636 http://stackoverflow.com moz_bookmarks ------------- id type fk parent title (other columns omitted...) 332 1 3636 5 Stackoverflow (parent=5 -> unfiled folder) 333 2 (NULL) 4 programming (programming tag, parent=4 -> tags folder) 334 1 3636 333 (NULL) (link to 'programming' tag) 335 2 (NULL) 4 info (info tag, parent=4 see above) 336 1 3636 335 (NULL) (link to 'info' tag) 行标记)。

如果您的书签“http://stackoverflow.com”标题为“Stackoverflow”,标签为“编程”和“信息”,您将获得:

{{1}}

希望这会有所帮助......

答案 1 :(得分:4)

由于MartinStettner建议标记结构基于标记id的外键,因此首先必须确定目标标记的moz_bookmark.id。

This Mozilla PDF解释了sqllite中的关系...

  
    

标签会导致两个新条目       moz_bookmarks。第一个是标签,       with parent = 4(tags),fk = NULL。该       第二个条目跟在第一个条目之后       前一个标记作为其父级,以及fk点       在moz_places中正确输入。

  

使用它作为指南...一旦你知道了标签的id,就可以加入moz_places.id on moz_bookmarks.fk ...

    SELECT moz_places.id, moz_places.url, moz_places.title, moz_bookmarks.parent    
    FROM moz_places    
    LEFT OUTER JOIN moz_bookmarks    
    ON moz_places.id = moz_bookmarks.fk    
    WHERE moz_bookmarks.parent = N

导出......

答案 2 :(得分:3)

我无法帮助您解决方法,但是,扩展“SQLite Manager”可能会帮助您,至少在您试图弄清楚要做什么的部分。该插件是一般管理器,但它包含Firefox使用的默认数据库作为标准选项。

使用该扩展程序重命名您喜欢的关键字应该相对简单。如果你只是想找到一种方法来修复它,这可能会有用,如果你仍然喜欢编写自己的工具,也许这个可以至少帮助查询;)。

答案 3 :(得分:2)

我也无能为力 - 发现你的问题寻找同样的答案......

我设法找到的是相关的Mozilla文档。书签系统称为位置,数据库表格在https://developer.mozilla.org/en-US/docs/The_Places_database

中描述

答案 4 :(得分:0)

因为我必须深入挖掘才能找到这些信息,这里是获取所有书签的网址,标题和创建日期的请求:

greater than

我希望它可以帮助人们寻找这个答案。