문제

나는 북마크에 쉽게 태그를 다시 지정할 수 있는 Firefox 3 추가 기능을 작성하려고 합니다.예를 들어, "개발"이라는 태그가 붙은 책갈피와 "개발"이라는 태그가 붙은 책갈피가 있는데 모든 "개발" 태그를 "개발"로 쉽게 업데이트할 수 있는 방법을 원합니다.불행히도 이 작업을 수행하는 추가 기능을 찾을 수 없어서 직접 만들어야겠다고 생각했습니다.

추가 기능을 개발하지 않은 채 기본 사항을 이해하고 FireFox가 Places.sqlite라는 SQLite 데이터베이스에 모든 북마크를 저장한다는 사실을 발견했습니다.해당 데이터베이스에는 책갈피 디렉토리 내의 모든 책갈피, 태그 및 폴더를 포함하는 moz_bookmarks라는 테이블이 있습니다.북마크 폴더와 해당 하위 북마크의 구조는 동일한 테이블의 상위 폴더 ID를 가리키는 외래 키 ID를 사용하여 표현되며, 이는 북마크 루트에 도달할 때까지 해당 상위 폴더의 ID를 다시 위쪽으로 반복합니다.

그러나 내가 막히는 부분은 Firefox에서 적용한 태그가 북마크와 어떻게 관련되어 있는지입니다.각 태그의 유형은 2이고 상위 ID는 4입니다.그러나 이 태그와 태그를 사용하는 실제 북마크 사이에는 아무런 상관관계가 없습니다.Firefox에서 특정 폴더 없이 북마크를 추가했지만 2~3개의 태그를 지정하면 상위 폴더 ID는 "unfiled"에 해당하는 5이지만 연결된 태그와의 더 이상 상관 관계를 볼 수 없습니다.

나는 이것을 발견했다 구조에 대한 Wiki 페이지 하지만 실제로는 도움이 되지 않습니다.

정말 짜증나네요 :( 도와주세요...

도움이 되었습니까?

해결책

이미 스스로 알고 계시겠지만, 태그는 다음과 같이 적용됩니다.

데이터베이스의 모든 URL의 중심 위치는 다음과 같습니다. moz_places.탁자 moz_bookmarks 외래 키 열로 참조합니다. fk.

북마크에 태그를 지정하면 북마크에 여러 항목이 있습니다. moz_bookmarks, 모두 동일한 참조를 가짐 fk:첫 번째는 북마크 자체입니다(제목이 title 열) 각 태그마다 다음 항목에 추가 항목이 있습니다. moz_bookmarks 동일한 외래 키를 가지고 있는 경우 fk 그리고 parent 칸(다음을 가리킨다. moz_bookmarks 태그 행).

북마크가 있는 경우 'http://stackoverflow.com' 프로그래밍' 및 '정보' 태그가 포함된 'Stackoverflow'라는 제목을 사용하면 다음을 얻을 수 있습니다.

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)

도움이 되었기를 바랍니다...

다른 팁

MartinStettner가 제안한 태그 구조는 태그 ID의 외래 키를 기반으로 하므로 먼저 대상 태그의 moz_bookmark.id를 결정해야 합니다.

이 모질라 PDF sqllite의 관계를 설명합니다 ...

태그는 Moz_bookmarks에서 두 개의 새로운 항목을 초래합니다.첫 번째는 parent = 4 (태그), fk = null이있는 태그입니다.두 번째 항목은 첫 번째 항목을 따르고 이전의 항목은 부모로서 이전 태그를 가지고 있으며 FK는 MOZ_Places의 적절한 항목을 가리 킵니다.

그것을 가이드로 삼아...태그의 ID를 알고 나면 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

내보내다 ...

방법에 대해서는 제가 별로 도움을 드릴 수는 없지만, 아마도 'SQLite Manager' 확장 프로그램이 적어도 무엇을 해야 할지 알아내려는 부분에서는 도움이 될 것입니다.플러그인은 일반 관리자이지만 Firefox에서 표준 옵션으로 사용하는 기본 데이터베이스도 포함합니다.

해당 확장자를 사용하면 원하는 키워드의 이름을 바꾸는 것이 비교적 간단합니다.문제를 해결할 방법을 찾고 있다면 이것이 효과가 있을 수 있습니다. 여전히 자신만의 도구를 작성하는 것을 선호한다면 아마도 이 도구가 적어도 쿼리에 도움이 될 수 있습니다.)

저도 별로 도움을 드릴 수 없습니다. 귀하의 질문이 같은 종류의 답변을 찾고 있다는 것을 알았습니다...

내가 찾은 것은 관련 Mozilla 문서입니다.북마크 시스템을 장소(Places)라고 하며 데이터베이스 테이블은 다음 위치에 설명되어 있습니다. https://developer.mozilla.org/en-US/docs/The_Places_database.

이 정보를 찾기 위해 더 깊이 파고들어야 했기 때문에 모든 북마크의 URL, 제목 및 생성 날짜를 가져오기 위한 요청은 다음과 같습니다.

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

이 답변을 찾는 사람들에게 도움이 되길 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top