質問

ブックマークを簡単に再タグ付けできる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;

この回答を探している人に役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top