Estructura SQLite de Firefox Bookmarks
-
19-08-2019 - |
Pregunta
Estoy intentando escribir un complemento de Firefox 3 que me permita volver a etiquetar fácilmente los marcadores. Por ejemplo, tengo algunos marcadores etiquetados "desarrollo" y algunos etiquetados "Desarrollo" y me gustaría una forma de actualizar fácilmente todo el "delelopment" etiquetas a " Desarrollo " ;. Lamentablemente, no puedo encontrar un complemento para hacer esto, así que pensé en crear el mío.
Al no haber desarrollado un complemento antes, he logrado comprender los conceptos básicos y descubrí que FireFox almacena todos los marcadores en una base de datos SQLite llamada Places.sqlite. Dentro de esa base de datos hay una tabla llamada moz_bookmarks que contiene todos los marcadores, etiquetas y carpetas dentro del directorio de marcadores. La estructura de las carpetas de marcadores y sus marcadores secundarios se representa utilizando una identificación de clave externa que apunta a la identificación de la carpeta principal en la misma tabla que nuevamente recurre hacia arriba a la identificación de esa carpeta principal hasta que llega a la raíz de marcadores.
Sin embargo, donde me atasco es cómo las etiquetas que aplica en Firefox están relacionadas con los marcadores. Cada etiqueta tiene un tipo = 2 y una ID principal = 4. Sin embargo, no puedo ver ninguna correlación entre esto y los marcadores reales que usan la etiqueta. Si agrego un marcador en Firefox a ninguna carpeta en particular, pero le doy 2 o 3 etiquetas, entonces su ID de carpeta principal es 5, que corresponde a "sin archivar". pero no puedo ver más correlación con las etiquetas asociadas a él.
He encontrado esta página Wiki en la estructura pero en realidad no ayuda.
Me está volviendo loco :( Por favor ayuda ...
Solución
Probablemente ya se haya enterado, pero las etiquetas se aplican de la siguiente manera:
El lugar central para todas las URLS en la base de datos es moz_places
. La tabla moz_bookmarks
se refiere a ella por la columna de clave externa fk
.
Si etiqueta un marcador, hay varias entradas en moz_bookmarks
, todas con la misma referencia fk
: la primera es el marcador en sí (que tiene el título en < code> title column) Para cada etiqueta, hay una entrada adicional en moz_bookmarks
que tiene la misma clave externa fk
y hace referencia a la etiqueta en el padre
coumn (que apunta a la fila moz_bookmarks
para la etiqueta).
Si tiene un marcador ' http://stackoverflow.com ' titulado 'Stackoverflow' con las etiquetas 'programación' e 'información', obtendrá:
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)
Espero que esto ayude ...
Otros consejos
Como MartinStettner sugirió, las estructuras de etiquetas se basan en la clave externa para la identificación de la etiqueta, por lo que primero debe determinar el moz_bookmark.id para la etiqueta de destino.
Este PDF de Mozilla explica la relación en sqllite ...
Las etiquetas dan como resultado dos nuevas entradas en moz_bookmarks. El primero es la etiqueta, con padre = 4 (etiquetas) y fk = NULL. los la segunda entrada sigue a la primera y tiene la etiqueta anterior como su padre y puntos fk a la entrada correcta en moz_places.
Utilizando eso como guía ... Una vez que conozca la identificación de la etiqueta, puede unirse a moz_places.id EN 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
Exportar ...
No puedo ayudarte con los procedimientos, sin embargo, tal vez la extensión 'SQLite Manager' te ayude al menos en la parte en la que intentas averiguar qué hacer. El complemento es un administrador general, pero también contiene las bases de datos predeterminadas utilizadas por Firefox como opción estándar.
Al usar esa extensión, debería ser relativamente sencillo cambiar el nombre de las palabras clave que desee. Si solo está buscando una forma de solucionarlo, esto podría funcionar, si aún prefiere escribir su propia herramienta, tal vez esta al menos pueda ayudar con las consultas;).
Tampoco puedo ayudar mucho: encontré tu pregunta buscando el mismo tipo de respuestas ...
Lo que he logrado encontrar es la documentación relevante de Mozilla. El sistema de marcadores se llama Lugares, y las tablas de la base de datos se describen en https: // desarrollador .mozilla.org / es-ES / docs / The_Places_database .
Debido a que tuve que profundizar más para encontrar esta información, esta es la solicitud para obtener la URL, el título y la fecha de creación de todos sus marcadores:
SELECT h.url, b.title, b.dateAdded
FROM moz_places h
JOIN moz_bookmarks b
ON h.id = b.fk;
Espero que ayude a las personas que buscan esta respuesta.