Pergunta

Eu estou tentando escrever um add-on do Firefox 3, que me permitirá facilmente favoritos re-tag. Por exemplo, eu ter algumas fichas com a tag "desenvolvimento" e alguns com a tag "Desenvolvimento" e eu gostaria de ter uma forma de atualizar facilmente todos os tags "delelopment" para "Desenvolvimento". Infelizmente eu não posso encontrar um add-on para fazer isso, então eu pensei que eu iria criar o meu próprio.

Não Tendo desenvolvido um add-on antes de eu consegui compreender os conceitos básicos e descobriu que o Firefox armazena todos os marcadores em um banco de dados SQLite chamado places.sqlite. Dentro desse banco de dados, há uma tabela chamada moz_bookmarks que contém todos os favoritos, tags e pastas dentro do diretório marcadores. A estrutura das pastas de marcadores e seus bookmarks criança é representado usando um ID de chave estrangeira que aponta para id da pasta pai na mesma mesa que novamente recursses para cima para Id que pasta pai até que ela atinge a raiz marcadores.

No entanto, onde eu ficar preso é como as tags que você aplica em firefox estão relacionados com os marcadores. Cada marcador possui uma type = 2 e pai ID = 4. No entanto I pode ver nenhuma correlação entre este e uma marcadores reais que utilizam a marca. Se eu adicionar um marcador no Firefox para nenhuma pasta em particular, mas dar-lhe 2 ou 3 Tag então é ID pasta pai é de 5 o que corresponde a "não arquivadas" mas eu posso ver mais nenhuma correlação com as marcas associadas a ele.

Eu encontrei este href="http://www.forensicswiki.org/index.php?title=Mozilla_Firefox_3_History_File_Format" rel="noreferrer"> página mas ele realmente não ajuda.

Ele está dirigindo-me louco :( Por favor, ajuda ...

Foi útil?

Solução

Você provavelmente já descobriu-se, mas as etiquetas são aplicadas da seguinte forma:

O local central para todos os URLs no banco de dados é moz_places. O moz_bookmarks tabela refere-se a ela pela fk coluna chave estrangeira.

Se você marcar um marcador, existem várias entradas no moz_bookmarks, todos com o mesmo fk referência: O primeiro é o próprio marcador (com o título na coluna title) Para cada tag, há uma entriy adicional na moz_bookmarks ter a mesmo fk chave estrangeira e referindo-se a tag na coumn parent (que aponta para a linha moz_bookmarks para a tag).

Se você tem um favorito ' http://stackoverflow.com ' intitulado 'Stackoverflow' com tags 'programação' e 'info', você terá:

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

Outras dicas

Como MartinStettner sugeriu estruturas de tag são baseados na chave estrangeira para o ID tag para que você primeiro tem que determinar a moz_bookmark.id para a etiqueta-alvo.

Este Mozilla PDF explica a relação em SqlLite ...

Etiquetas resultar em duas novas entradas em moz_bookmarks. O primeiro é o tag, com pai = 4 (tags), e fk = NULL. o segunda entrada segue o primeiro e um possui a marca anterior como seu pai, e os pontos fk para a entrada adequada no moz_places.

Usando isso como um guia ... Uma vez que você conhece o id para a tag você pode juntar ON moz_places.id 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

Export ...

Eu não posso ajudá-lo bastante com o how-to, no entanto, talvez a extensão 'SQLite Manager' irá ajudá-lo, pelo menos para a parte onde você está tentando descobrir o que fazer. O plugin é um gerente geral, mas contém os bancos de dados padrão usados ??pelo Firefox como opção padrão também.

Usando essa extensão deve ser relativamente simples de renomear as palavras-chave que você gosta. Se você está apenas procurando uma maneira de corrigi-lo, isso poderia funcionar, se você ainda prefere escrever sua própria ferramenta, talvez este pode pelo menos ajudar com as consultas;).

Eu não posso ajudar muito também - encontrou sua pergunta olhando para o mesmo tipo de respostas ...

O que eu consegui encontrar é a documentação pertinente Mozilla. O sistema marcador é chamado Places, e as tabelas de banco de dados são descritos em https: // developer .mozilla.org / en-US / docs / The_Places_database .

Porque eu tinha que cavar mais fundo para encontrar essa informação, aqui está o pedido para buscar url, título e data de criação de todos os seus favoritos:

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

Espero que iria ajudar as pessoas olhando para esta resposta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top