Я пытаюсь написать надстройку для Firefox 3, которая позволит мне легко изменять теги в закладках. Например, у меня есть некоторые закладки с тегами «разработка» и некоторые с тегами «Разработка», и мне нужен способ легко обновить все теги «Delelopment» до «Разработка». К сожалению, я не могу найти надстройку для этого, поэтому решил создать свою собственную.
Не разрабатывав надстройку, я успел усвоить основы и обнаружил, что FireFox хранит все закладки в базе данных SQLite под названием Places.sqlite. В этой базе данных есть таблица moz_bookmarks, которая содержит все закладки, теги и папки в каталоге закладок. Структура папок закладок и их дочерних закладок представлена с использованием идентификатора внешнего ключа, который указывает на идентификатор родительской папки в той же таблице, которая снова возвращается вверх к идентификатору этой родительской папки, пока не попадет в корень закладок.
Однако я застрял в том, как теги, которые вы применяете в firefox, связаны с закладками. Каждый тег имеет тип = 2 и родительский ID = 4. Однако я не вижу корреляции между этим и реальными закладками, использующими этот тег. Если я добавляю закладку в Firefox ни в какую конкретную папку, но даю ей 2 или 3 тега, тогда идентификатор родительской папки равен 5, что соответствует «незарегистрированным», но я не вижу дальнейшей корреляции с тегами, связанными с ней.
Я нашел этот Вики-страница о структуре, но он не очень помогает.
Это сводит меня с ума :( Пожалуйста, помогите ...





Я не могу полностью помочь вам с практическими рекомендациями, однако, возможно, расширение «SQLite Manager» поможет вам, по крайней мере, в той части, где вы пытаетесь понять, что делать. Плагин является общим менеджером, но он также содержит базы данных по умолчанию, используемые Firefox в качестве стандартной опции.
Использование этого расширения должно быть относительно простым для переименования понравившихся вам ключевых слов. Если вы просто ищете способ исправить это, это может сработать, если вы по-прежнему предпочитаете писать свой собственный инструмент, возможно, этот, по крайней мере, может помочь с запросами;).
спасибо за этот комментарий, я обнаружил этот плагин. он очень полезен для разработки и общих любопытных фактов о Firefox.
Вы, наверное, уже сами выяснили, но теги применяются следующим образом:
Центральное место для всех URL-адресов в базе данных - moz_places. Таблица moz_bookmarks ссылается на него с помощью столбца внешнего ключа fk.
Если вы пометите закладку, в moz_bookmarks будет несколько записей, каждая из которых имеет одну и ту же ссылку. fk: первая - это сама закладка (с заголовком в столбце title). Для каждого тега есть дополнительная запись в moz_bookmarks с таким же внешним ключом. fk и относится к тегу в купоне parent (который указывает на строку moz_bookmarks для тега).
Если у вас есть закладка «http://stackoverflow.com» под названием «Stackoverflow» с тегами «программирование» и «информация», вы получите:
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)
Надеюсь это поможет...
Спасибо, Мартин, что вернулся к этому вопросу спустя столько времени. Я как бы двинулся дальше, но не смог обновить это, так что спасибо и продолжайте в том же духе.
Я тоже ничем не могу помочь - нашел, что ваш вопрос требует таких же ответов ...
Что мне удалось найти, так это соответствующую документацию Mozilla. Система закладок называется Places, а таблицы базы данных описаны в https://developer.mozilla.org/en-US/docs/The_Places_database.
Поскольку Мартин Стеттнер предложил структуры тегов, они основаны на внешнем ключе для идентификатора тега, поэтому сначала необходимо определить moz_bookmark.id для целевого тега.
Этот PDF-файл Mozilla объясняет отношения в sqllite ...
Tags result in two new entries in moz_bookmarks. The first one is the tag, with parent=4 (tags), and fk=NULL. The second entry follows the first one and has the previous tag as its parent, and fk points to the proper entry in moz_places.
Используя это как руководство ... Как только вы узнаете идентификатор тега, вы можете присоединиться к moz_places.id НА 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
Экспорт ...
Поскольку мне пришлось копнуть глубже, чтобы найти эту информацию, вот запрос на получение URL-адреса, заголовка и даты создания всех ваших закладок:
SELECT h.url, b.title, b.dateAdded
FROM moz_places h
JOIN moz_bookmarks b
ON h.id = b.fk;
Надеюсь, это поможет людям, ищущим этот ответ.
Связанный: Как я могу восстановить файлы закладок Firefox из файлов SQLite?