Domanda

Sto cercando di scrivere un componente aggiuntivo per Firefox 3 che mi consentirà di ricodificare facilmente i segnalibri. Ad esempio ho alcuni segnalibri taggati " sviluppo " e alcuni taggati " Sviluppo " e vorrei un modo per aggiornare facilmente tutta la "delelopment" tag per " Sviluppo " ;. Purtroppo non riesco a trovare un componente aggiuntivo per farlo, quindi ho pensato di crearne uno mio.

Non avendo sviluppato un componente aggiuntivo prima di riuscire a cogliere le basi e scoperto che FireFox archivia tutti i segnalibri in un database SQLite chiamato Places.sqlite. All'interno di quel database c'è una tabella chiamata moz_bookmarks che contiene tutti i segnalibri, i tag e le cartelle all'interno della directory dei segnalibri. La struttura delle cartelle dei segnalibri e dei loro segnalibri secondari è rappresentata utilizzando un ID chiave esterna che punta all'ID della cartella principale nella stessa tabella che ricorre nuovamente verso l'alto fino all'ID della cartella principale fino a quando non raggiunge la radice dei segnalibri.

Tuttavia, dove rimango bloccato è il modo in cui i tag applicati in Firefox sono correlati ai segnalibri. Ogni tag ha un tipo = 2 e un ID genitore = 4. Tuttavia non riesco a vedere alcuna correlazione tra questo e un segnalibro reale che utilizza il tag. Se aggiungo un segnalibro in Firefox a nessuna cartella particolare ma gli do 2 o 3 tag, l'ID della cartella padre è 5 che corrisponde a "non archiviato". ma non vedo alcuna ulteriore correlazione con i tag ad esso associati.

Ho trovato questa la pagina Wiki sulla struttura ma in realtà non aiuto.

Mi sta facendo impazzire :( Per favore aiutatemi ...

È stato utile?

Soluzione

Probabilmente hai già scoperto te stesso, ma i tag vengono applicati come segue:

Il posto centrale per tutti gli URL nel database è moz_places . La tabella moz_bookmarks fa riferimento alla colonna chiave esterna fk .

Se tagghi un segnalibro, ci sono più voci in moz_bookmarks , tutte con lo stesso riferimento fk : il primo è il segnalibro stesso (con il titolo nella < code> title ) Per ogni tag, c'è un'ulteriore entriy in moz_bookmarks che ha la stessa chiave esterna fk e si riferisce al tag nel parent coumn (che punta alla riga moz_bookmarks per il tag).

Se hai un segnalibro " http://stackoverflow.com " intitolato "Stackoverflow" con i tag "programmazione" e "informazioni", otterrà:

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)

Spero che questo aiuti ...

Altri suggerimenti

Come MartinStettner ha suggerito che le strutture dei tag si basano sulla chiave esterna per l'id tag, quindi è necessario innanzitutto determinare moz_bookmark.id per il tag target.

Questo PDF di Mozilla spiega la relazione in sqllite ...

  
    

I tag generano due nuove voci in       moz_bookmarks. Il primo è il tag,       con parent = 4 (tag) e fk = NULL. Il       la seconda voce segue la prima e ha       il tag precedente come genitore e punti fk       alla voce corretta in moz_places.

  

Usandolo come guida ... Una volta che conosci l'id per il tag puoi unirti a 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

Esporta ...

Non posso proprio aiutarti con il how-to, tuttavia, forse l'estensione 'SQLite Manager' ti aiuterà almeno per la parte in cui stai cercando di capire cosa fare. Il plug-in è un direttore generale, ma contiene anche i database predefiniti utilizzati da Firefox come opzione standard.

Usando quell'estensione dovrebbe essere relativamente semplice rinominare le parole chiave che ti piacciono. Se stai solo cercando un modo per risolverlo, questo potrebbe funzionare, se preferisci ancora scrivere il tuo strumento, forse questo può almeno aiutare con le query;).

Neanche io posso fare molto: ho trovato la tua domanda cercando lo stesso tipo di risposte ...

Quello che sono riuscito a trovare è la relativa documentazione di Mozilla. Il sistema di segnalibri si chiama Luoghi e le tabelle del database sono descritte in https: // developer .mozilla.org / it-IT / docs / The_Places_database .

Poiché ho dovuto scavare più a fondo per trovare queste informazioni, ecco la richiesta di recuperare l'URL, il titolo e la data di creazione di tutti i tuoi segnalibri:

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

Spero che possa aiutare le persone a cercare questa risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top