FirefoxブックマークSQLite構造
-
19-08-2019 - |
質問
ブックマークを簡単に再タグ付けできるFirefox 3アドオンを作成しようとしています。たとえば、<!> quot; development <!> quot;というタグが付いたブックマークがあります。タグ付きの<!> quot; Development <!> quot;そして、すべての<!> quot; delelopment <!> quot;を簡単に更新する方法が欲しいです。 <!> quot; Development <!> quot;へのタグ。残念ながら、これを行うためのアドオンが見つからないため、自分で作成すると思いました。
基本を理解する前にアドオンを開発せず、FireFoxがすべてのブックマークをPlaces.sqliteと呼ばれるSQLiteデータベースに保存することを発見しました。そのデータベース内には、moz_bookmarksと呼ばれるテーブルがあり、ブックマークディレクトリ内のすべてのブックマーク、タグ、フォルダが含まれています。ブックマークフォルダーとその子ブックマークの構造は、同じテーブル内の親フォルダーのIDを指す外部キーIDを使用して表されます。このテーブルは、ブックマークのルートに到達するまで、その親フォルダーのIDに上向きに再帰します。
しかし、私が行き詰まったのは、firefoxで適用するタグがブックマークにどのように関連するかです。各タグにはtype = 2およびparent ID = 4があります。ただし、これとタグを使用する実際のブックマークとの間に相関関係はありません。 firefoxでブックマークを特定のフォルダーに追加せずに2つまたは3つのタグを付けると、親フォルダーIDは5になり、<!> quot; unfiled <!> quotに対応します。しかし、それに関連付けられているタグとの相関関係はこれ以上ありません。
この構造上のWikiページを見つけましたが、実際にはそうではありませんヘルプ。
それは私を動かしている:(助けてください...
解決
おそらくあなたはすでに自分自身を知っていますが、タグは次のように適用されます:
データベース内のすべてのURLの中心的な場所はmoz_places
です。テーブルmoz_bookmarks
は、外部キー列fk
によってそれを参照します。
ブックマークにタグを付けると、title
に複数のエントリがあり、すべてが同じ参照parent
を持ちます。最初はブックマーク自体です(<=>列にタイトルがあります)。各タグには、同じ外部キー<=>を持ち、<=>列のタグを参照する<=>の追加エントリ(タグの<=>行を指します)。
「programming」および「info」タグの付いた「Stackoverflow」というタイトルのブックマーク「 http://stackoverflow.com 」がある場合、取得します:
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)
これが役立つことを願っています...
他のヒント
MartinStettnerが提案したように、タグ構造はタグIDの外部キーに基づいているため、最初にターゲットタグのmoz_bookmark.idを決定する必要があります。
このMozilla PDF はsqlliteの関係を説明しています...
タグにより、2つの新しいエントリが作成されます moz_bookmarks。最初はタグです parent = 4(タグ)、およびfk = NULLを使用します。の 2番目のエントリは最初のエントリに続き、 親としての前のタグ、および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
エクスポート...
ハウツーについてはまったく助けになれませんが、おそらく拡張機能「SQLite Manager」は、少なくとも何をすべきかを理解しようとしている部分では役立つでしょう。プラグインはゼネラルマネージャーですが、Firefoxが標準オプションとして使用するデフォルトのデータベースも含まれています。
その拡張子を使用すると、好きなキーワードの名前を変更するのは比較的簡単です。あなたがそれを修正する方法を探しているなら、これはうまくいくかもしれません、あなたがまだあなた自身のツールを書くことを好むなら、おそらくこれはクエリで少なくとも助けることができます;)。
私もあまり助けられません-同じ種類の答えを探している質問を見つけました...
私が見つけたのは、関連するMozillaドキュメントです。ブックマークシステムはPlacesと呼ばれ、データベーステーブルは https:// developerで説明されています。 .mozilla.org / en-US / docs / The_Places_database 。
この情報を見つけるためにさらに掘り下げなければならなかったので、すべてのブックマークのURL、タイトル、作成日を取得するためのリクエストを次に示します。
SELECT h.url, b.title, b.dateAdded
FROM moz_places h
JOIN moz_bookmarks b
ON h.id = b.fk;
この回答を探している人に役立つことを願っています。