2009-01-21 24 views
14

Tôi đang cố gắng viết một tiện ích bổ sung cho Firefox 3, cho phép tôi dễ dàng gắn thẻ lại các dấu trang. Ví dụ: tôi có một số dấu trang được gắn thẻ "phát triển" và một số thẻ "Phát triển" và tôi muốn có cách dễ dàng cập nhật tất cả các thẻ "delelopment" thành "Development". Thật không may tôi không thể tìm thấy một add-on để làm điều này vì vậy tôi nghĩ rằng tôi sẽ tạo của riêng tôi.Dấu trang Firefox Cấu trúc SQLite

Không phát triển tiện ích bổ sung trước khi tôi quản lý để nắm bắt cơ bản và phát hiện ra rằng FireFox lưu trữ tất cả dấu trang trong cơ sở dữ liệu SQLite có tên Places.sqlite. Trong cơ sở dữ liệu đó có một bảng gọi là moz_bookmarks chứa tất cả các dấu trang, thẻ và thư mục trong thư mục dấu trang. Cấu trúc của các thư mục dấu trang và dấu trang con của chúng được biểu diễn bằng id khóa ngoài trỏ đến id của thư mục mẹ trong cùng một bảng mà lại đệ trình lên tới thư mục của thư mục mẹ đó cho đến khi nó chạm vào dấu trang gốc.

Tuy nhiên, nơi tôi bị kẹt là cách các thẻ bạn áp dụng trong firefox có liên quan đến dấu trang. Mỗi thẻ có loại = 2 và ID mẹ = 4. Tuy nhiên, tôi không thể thấy sự tương quan giữa thẻ này và dấu trang thực tế sử dụng thẻ. Nếu tôi thêm một dấu trang trong firefox vào không có thư mục cụ thể nhưng cung cấp cho nó 2 hoặc 3 thẻ thì đó là thư mục mẹ ID là 5 tương ứng với "unfiled" nhưng tôi không thấy tương quan nào với các thẻ liên kết với nó.

Tôi đã tìm thấy điều này Wiki page on the structure nhưng nó không thực sự hữu ích.

Đó là lái xe cho tôi hạt :(Xin vui lòng giúp ...

+0

Liên quan: * [Làm cách nào để khôi phục tệp dấu trang của Firefox từ tệp SQLite?] (Http://stackoverflow.com/questions/11769524) * –

Trả lời

25

Bạn có thể đã phát hiện ra bản thân mình, nhưng thẻ được áp dụng như sau:

Các địa điểm trung tâm cho tất cả các URL trong cơ sở dữ liệu là moz_places. Bảng moz_bookmarks đề cập đến nó bằng cột khóa ngoài fk.

Nếu bạn gắn thẻ một bookmark, có nhiều mục trong moz_bookmarks, tất cả có cùng một tài liệu tham khảo fk: Đầu tiên là đánh dấu bản thân (có tên trong cột title) Đối với mỗi thẻ, có một entriy bổ sung trong moz_bookmarks có cùng một khóa ngoại fk và tham chiếu đến thẻ trong giao thức parent (trỏ đến hàng moz_bookmarks cho thẻ).

Nếu bạn có một dấu 'http://stackoverflow.com' tiêu đề 'Stackoverflow' với thẻ 'lập trình' và 'thông tin', bạn sẽ nhận được:

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) 

Hope this helps ...

+0

cảm ơn martin vì đã quay lại câu hỏi này sau một thời gian dài. Tôi đã kinda di chuyển trên nhưng không cập nhật này để cảm ơn bạn và theo kịp công việc tốt. –

3

tôi có thể không hoàn toàn giúp bạn với how-to, tuy nhiên, có lẽ phần mở rộng 'SQLite Manager' sẽ giúp bạn ít nhất là trong phần nơi Plugin này là một trình quản lý chung, nhưng nó chứa các cơ sở dữ liệu mặc định được Firefox sử dụng làm tùy chọn tiêu chuẩn.

Sử dụng phần mở rộng đó nên tương đối đơn giản để đổi tên các từ khóa bạn Nếu bạn chỉ đang tìm cách sửa lỗi, điều này có thể hiệu quả, nếu bạn vẫn thích viết công cụ của riêng mình, có lẽ điều này ít nhất có thể giúp ích cho các truy vấn;).

+0

cảm ơn nhận xét này, tôi đã phát hiện ra plugin này. nó rất hữu ích cho sự phát triển và sự tò mò chung của Firefox. –

1

Tôi có thể' t giúp đỡ nhiều - tìm thấy câu hỏi của bạn đang tìm kiếm cùng một loại câu trả lời ...

Điều tôi đã tìm được là tài liệu liên quan của Mozilla. Hệ thống đánh dấu được gọi là Địa điểm và các bảng cơ sở dữ liệu được mô tả tại https://developer.mozilla.org/en-US/docs/The_Places_database.

3

Vì MartinStettner đề xuất cấu trúc thẻ dựa trên khóa ngoài cho id thẻ nên trước tiên bạn phải xác định moz_bookmark.id cho thẻ mục tiêu.

This Mozilla PDF giải thích mối quan hệ trong sqllite ...

Thẻ dẫn đến hai gương mặt mới trong moz_bookmarks. Người đầu tiên là thẻ, với cha mẹ = 4 (thẻ) và fk = NULL. Mục nhập thứ hai theo sau mục nhập đầu tiên và có thẻ trước đó làm thẻ cha mẹ và các điểm fk cho mục nhập phù hợp trong moz_places.

Sử dụng đó như là một hướng dẫn ... Một khi bạn biết id cho thẻ bạn có thể tham gia 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 

Xuất ...

0

Vì tôi phải tìm hiểu sâu hơn để tìm thông tin này, đây là yêu cầu tìm nạp url, tiêu đề và ngày tạo của tất cả dấu trang của bạn:

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

Tôi hy vọng nó sẽ giúp mọi người tìm kiếm câu trả lời này.