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 ...

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top