Закладки Firefox Структура SQLite

Я пытаюсь написать надстройку для Firefox 3, которая позволит мне легко изменять теги в закладках. Например, у меня есть некоторые закладки с тегами «разработка» и некоторые с тегами «Разработка», и мне нужен способ легко обновить все теги «Delelopment» до «Разработка». К сожалению, я не могу найти надстройку для этого, поэтому решил создать свою собственную.

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

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

Я нашел этот Вики-страница о структуре, но он не очень помогает.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
1
13 052
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

спасибо за этот комментарий, я обнаружил этот плагин. он очень полезен для разработки и общих любопытных фактов о Firefox.

Toby Mills 29.01.2009 17:09
Ответ принят как подходящий

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

Центральное место для всех 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)

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

Спасибо, Мартин, что вернулся к этому вопросу спустя столько времени. Я как бы двинулся дальше, но не смог обновить это, так что спасибо и продолжайте в том же духе.

Toby Mills 14.04.2009 08:45

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

Что мне удалось найти, так это соответствующую документацию 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;

Надеюсь, это поможет людям, ищущим этот ответ.

Другие вопросы по теме