Question

J'essaye d'écrire un add-on Firefox 3 qui me permettra de changer facilement les marque-pages. Par exemple, certains signets sont marqués " développement " et certains marqués " Développement " et je voudrais un moyen de mettre à jour facilement tous les "delelopment" " les balises en "Développement". Malheureusement, je ne trouve pas d’extension pour le faire, j’ai donc pensé créer le mien.

N'ayant pas développé de module complémentaire auparavant, j'ai réussi à comprendre les bases et découvert que FireFox stockait tous les signets dans une base de données SQLite appelée Places.sqlite. Dans cette base de données, il existe une table appelée moz_bookmarks qui contient tous les signets, balises et dossiers du répertoire de signets. La structure des dossiers de signets et de leurs signets enfants est représentée à l'aide d'un identifiant de clé étrangère qui pointe vers l'identifiant du dossier parent dans la même table, qui revient de nouveau vers l'identifiant de ce dossier parent jusqu'à ce qu'il atteigne la racine des signets.

Cependant, je suis bloqué dans la façon dont les balises que vous appliquez dans Firefox sont liées aux signets. Chaque balise a un type = 2 et un ID parent = 4. Cependant, je ne vois aucune corrélation entre cela et les signets réels qui utilisent la balise. Si j'ajoute un signet dans Firefox à aucun dossier particulier mais lui attribue 2 ou 3 balises, son ID de dossier parent est 5, ce qui correspond à "non classé". mais je ne vois aucune autre corrélation avec les balises qui lui sont associées.

J'ai trouvé cette page de wiki sur la structure , mais elle ne le fait pas vraiment. aide.

Cela me rend dingue :( aidez-moi s'il vous plaît ...

Était-ce utile?

La solution

Vous l'avez probablement déjà découvert vous-même, mais les balises sont appliquées comme suit:

L'emplacement central de toutes les URL de la base de données est moz_places . La table moz_bookmarks y fait référence par la colonne de clé étrangère fk .

Si vous marquez un signet, il y a plusieurs entrées dans moz_bookmarks , toutes ayant la même référence fk : le premier est le signet lui-même (ayant le titre dans le < colonne code> titre ) Pour chaque balise, un élément supplémentaire dans moz_bookmarks a la même clé étrangère fk et fait référence à la balise dans le parent . coumn (qui pointe vers la ligne moz_bookmarks pour la balise).

Si vous avez un favori " http://stackoverflow.com " intitulé "Stackoverflow" avec les balises "programming" et "info", obtiendrez:

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)

J'espère que cela vous aidera ...

Autres conseils

Comme l'a suggéré MartinStettner, les structures de balises sont basées sur la clé étrangère de l'identifiant de balise. Vous devez donc d'abord déterminer le fichier moz_bookmark.id pour la balise cible.

Ce fichier PDF Mozilla explique la relation qui existe dans sqllite. ...

  
    

Les balises génèrent deux nouvelles entrées dans       moz_bookmarks. Le premier est le tag,       avec parent = 4 (tags) et fk = NULL. le       deuxième entrée suit le premier et a       la balise précédente en tant que parent et les points fk       à l'entrée appropriée dans moz_places.

  

En utilisant cela comme guide ... Une fois que vous connaissez l'identifiant du tag, vous pouvez rejoindre 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

Exporter ...

Je ne peux pas tout à fait vous aider, mais l'extension "SQLite Manager" vous aidera peut-être au moins pour la partie où vous essayez de savoir quoi faire. Le plugin est un gestionnaire général, mais il contient également les bases de données par défaut utilisées par Firefox comme option standard.

En utilisant cette extension, il devrait être relativement simple de renommer les mots-clés que vous aimez. Si vous cherchez simplement un moyen de résoudre ce problème, cela pourrait fonctionner, si vous préférez toujours écrire votre propre outil, peut-être que celui-ci pourra au moins vous aider avec les requêtes;).

Je ne peux pas vous aider beaucoup non plus - vous avez trouvé votre question à la recherche du même genre de réponses ...

Ce que j'ai réussi à trouver, c'est la documentation pertinente de Mozilla. Le système de signets s'appelle des lieux et les tables de la base de données sont décrites à l'adresse https: // developer. .mozilla.org / fr-US / docs / The_Places_database .

Parce que je devais aller plus loin pour trouver cette information, voici la demande pour récupérer l'URL, le titre et la date de création de tous vos favoris:

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

J'espère que cela aiderait les personnes à la recherche de cette réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top