Структура закладок Firefox закладок

Я пытаюсь написать дополнение Firefox 3, которое позволит мне легко переклассифицировать закладки. Например, у меня есть закладки с тегами "development", а некоторые с тегами "Development", и мне хотелось бы легко обновить все теги "delelopment" до "Development". К сожалению, я не могу найти надстройку, чтобы сделать это, поэтому я думал, что создам свой собственный.

Не разработав надстройку, прежде чем мне удалось понять основы, и обнаружил, что FireFox хранит все закладки в базе данных SQLite под названием Places.sqlite. Внутри этой базы данных есть таблица с именем moz_bookmarks, которая содержит все закладки, теги и папки в каталоге закладок. Структура папок закладок и их дочерних закладок представлена ​​с использованием идентификатора внешнего ключа, который указывает на идентификатор родительской папки в той же таблице, который снова возвращается к идентификатору родительской папки до тех пор, пока он не попадет в корень закладки.

Однако, когда я застрял, так это то, как теги, которые вы применяете в firefox, связаны с закладками. Каждый тег имеет тип = 2 и родительский идентификатор = 4. Однако я не вижу никакой корреляции между этим и фактическими закладками, использующими тег. Если я добавлю закладку в firefox к какой-либо конкретной папке, но даю ей 2 или 3 тега, то ее родительский идентификатор папки равен 5, который соответствует "нефильтрованному", но я не вижу никакой дополнительной корреляции с связанными с ним тегами.

Я нашел эту страницу Wiki в структуре, но это действительно не помогает.

Это водит меня орехами:( Пожалуйста, помогите...

Ответы

Ответ 1

Вы, вероятно, уже обнаружили себя, но теги применяются следующим образом:

Центральным местом для всех URLS в базе данных является moz_places. Таблица moz_bookmarks относится к ней столбцом внешнего ключа fk.

Если вы помечаете закладку, в moz_bookmarks есть несколько записей, все они имеют одну и ту же ссылку fk: первая - сама закладка (имеющая заголовок в столбце title). Для каждого тега есть дополнительный вход в moz_bookmarks, имеющий тот же внешний ключ fk и ссылающийся на тег в parent coumn (который указывает на строку moz_bookmarks для тега).

Если у вас есть закладка /fooobar.com/... 'под названием "Stackoverflow" с тегами "программирование" и "информация", вы получите:

moz_places
----------
id    url   (some more)
3636  http://qaru.site/

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)

Надеюсь, что это поможет...

Ответ 2

Я не могу вам помочь в руководстве, однако, возможно, расширение SQLite Manager поможет вам, по крайней мере, в той части, где вы пытаетесь выяснить, что делать. Плагин является общим менеджером, но он также содержит базы данных по умолчанию, используемые Firefox в качестве стандартной опции.

Используя это расширение, должно быть относительно просто переименовать ключевые слова, которые вам нравятся. Если вы ищете способ исправить это, это может сработать, если вы все же предпочитаете писать свой собственный инструмент, возможно, это может помочь, по крайней мере, с запросами;).

Ответ 3

Как предложил MartinStettner, структуры тегов основаны на внешнем ключе для идентификатора тега, поэтому вам сначала нужно определить moz_bookmark.id для целевого тега.

Этот Mozilla PDF объясняет взаимосвязь в sqllite...

Теги приводят к двум новым записям в     moz_bookmarks. Первый - это тег,     с parent = 4 (теги) и fk = NULL.     вторая запись следует первой и имеет     предыдущий тег как его родительский и fk точек     для правильной записи в moz_places.

Используя это как руководство... Как только вы узнаете идентификатор для тега, вы можете присоединиться к 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

Экспортировать...

Ответ 4

Я тоже не могу с этим поделать - нашел ваш вопрос в поиске тех же ответов...

То, что мне удалось найти, - это соответствующая документация Mozilla. Система закладок называется "Места", а таблицы базы данных описываются в https://developer.mozilla.org/en-US/docs/The_Places_database.

Ответ 5

Поскольку мне приходилось копать глубже, чтобы найти эту информацию, вот запрос на выбор URL, название и дату создания всех ваших закладок:

SELECT h.url, b.title, b.dateAdded
FROM moz_places h
JOIN moz_bookmarks b
ON h.id = b.fk;

Я надеюсь, что это поможет людям, которые ищут этот ответ.