2009-01-21 15 views
14

मैं फ़ायरफ़ॉक्स 3 ऐड-ऑन लिखने की कोशिश कर रहा हूं जो मुझे आसानी से बुकमार्क को फिर से टैग करने में सक्षम बनाता है। उदाहरण के लिए मेरे पास कुछ "बुकमार्क" टैग किए गए कुछ बुकमार्क हैं और कुछ "विकास" टैग किए गए हैं और मैं सभी "डिलीलोपमेंट" टैग को "विकास" में आसानी से अपडेट करने का तरीका चाहूंगा। दुर्भाग्य से मुझे ऐसा करने के लिए ऐड-ऑन नहीं मिल रहा है इसलिए मैंने सोचा कि मैं अपना खुद का निर्माण करूंगा।फ़ायरफ़ॉक्स बुकमार्क SQLite संरचना

मूलभूत समझने में कामयाब होने से पहले ऐड-ऑन विकसित नहीं किया और पाया कि फ़ायरफ़ॉक्स Places.sqlite नामक SQLite डेटाबेस में सभी बुकमार्क संग्रहीत करता है। उस डेटाबेस में moz_bookmarks नामक एक तालिका होती है जिसमें बुकमार्क निर्देशिका के भीतर सभी बुकमार्क, टैग और फ़ोल्डर्स होते हैं। बुकमार्क फ़ोल्डरों और उनके बच्चों के बुकमार्क की संरचना को एक विदेशी कुंजी आईडी का उपयोग करके दर्शाया जाता है जो एक ही तालिका में पैरेंट फ़ोल्डर की आईडी को इंगित करता है जो फिर से उस मूल फ़ोल्डर के आईडी तक ऊपर की ओर जाता है जब तक यह बुकमार्क रूट को हिट नहीं करता।

हालांकि, जहां मैं अटक गया हूं यह है कि फ़ायरफ़ॉक्स में आपके द्वारा लागू टैग कैसे बुकमार्क्स से संबंधित होते हैं। प्रत्येक टैग में एक प्रकार = 2 और पैरेंट आईडी = 4. होता है। हालांकि, मैं इस और टैग का उपयोग करने वाले वास्तविक बुकमार्क के बीच कोई सहसंबंध नहीं देख सकता। अगर मैं किसी विशेष फ़ोल्डर में फ़ायरफ़ॉक्स में कोई बुकमार्क जोड़ता हूं लेकिन इसे 2 या 3 टैग देता हूं तो यह मूल फ़ोल्डर आईडी 5 है जो "unfiled" से मेल खाता है लेकिन मैं इसके साथ जुड़े टैग को और अधिक सहसंबंध नहीं देख सकता।

मुझे यह Wiki page on the structure मिला है लेकिन यह वास्तव में मदद नहीं करता है।

यह गाड़ी चला रहा है मुझे पागल :(कृपया मदद ...

+0

संबंधित: * [मैं फ़ायरफ़ॉक्स बुकमार्क फ़ाइलों को SQLite फ़ाइलों से कैसे पुनर्स्थापित कर सकता हूं?] (Http://stackoverflow.com/questions/11769524) * –

उत्तर

25

आप शायद पहले से ही अपने आप को पता चला है, लेकिन इस प्रकार टैग लागू होते हैं:

केंद्रीय स्थान डेटाबेस में सभी URL के लिए moz_places है। तालिका moz_bookmarks इसे विदेशी कुंजी कॉलम fk द्वारा संदर्भित करती है। वहाँ moz_bookmarks में एक अतिरिक्त entriy होने है पहले बुकमार्क ही (title कॉलम में शीर्षक वाले) प्रत्येक टैग के लिए है,:

आप कोई बुकमार्क टैग करते हैं, वहाँ कई प्रविष्टियाँ moz_bookmarks में, सभी एक ही संदर्भ fk होने हैं एक ही विदेशी कुंजी fk और parent coumn में टैग को प्रतिबिंबित करना (जो टैग के लिए 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) 

आशा इस मदद करता है ...

+0

इतने लंबे समय बाद इस प्रश्न पर लौटने के लिए मार्टिन धन्यवाद। मैं थोड़े से आगे बढ़ गया था लेकिन इसे अपडेट करने में असफल रहा, इसलिए धन्यवाद और अच्छा काम जारी रखो। –

3

मैं यह कर सकते हैं के साथ नहीं काफी मदद आप कैसे हैं, हालांकि, शायद एक्सटेंशन 'SQLite प्रबंधक' आप कम से कम हिस्सा है जहां के लिए मदद मिलेगी आपको लगता है कि एक्सटेंशन का उपयोग करना यह अपेक्षाकृत कीवर्ड नाम बदलने के लिए सरल होना चाहिए

क्या करना है यह पता लगाने की कोशिश कर रहे हैं। प्लगइन एक जनरल मैनेजर है, लेकिन यह डिफ़ॉल्ट के रूप में अच्छी तरह से मानक विकल्प के रूप फ़ायरफ़ॉक्स द्वारा इस्तेमाल किया डेटाबेस में शामिल है। आप जैसे। अगर आप इसे ठीक करने का कोई तरीका ढूंढ रहे हैं, तो यह काम कर सकता है, अगर आप अभी भी अपना खुद का टूल लिखना पसंद करते हैं, तो शायद यह कम से कम प्रश्नों के साथ मदद कर सकता है;)।

+0

इस टिप्पणी के लिए धन्यवाद, मैंने इस प्लगइन को खोज लिया था। यह विकास और सामान्य फ़ायरफ़ॉक्स जिज्ञासा के लिए बहुत उपयोगी है। –

1

मैं कर सकते हैं ' टी बहुत मदद करता है - आपके प्रश्न को एक ही तरह के उत्तरों की तलाश में पाया गया ...

जो मैंने पाया है वह प्रासंगिक मोज़िला दस्तावेज़ है। बुकमार्क सिस्टम को स्थान कहा जाता है, और डेटाबेस टेबल https://developer.mozilla.org/en-US/docs/The_Places_database पर वर्णित हैं।

3

जैसा कि मार्टिनस्टेटनर ने सुझाव दिया है कि टैग संरचना टैग आईडी के लिए विदेशी कुंजी पर आधारित है, इसलिए आपको पहले लक्ष्य टैग के लिए moz_bookmark.id निर्धारित करना होगा।

This Mozilla PDF sqllite में संबंध बताते हैं ...

टैग moz_bookmarks में दो नए प्रविष्टियों में परिणाम। पहला टैग टैग है, अभिभावक = 4 (टैग), और fk = NULL के साथ। दूसरी प्रविष्टि पहले के बाद होती है और इसमें पिछले माता-पिता के रूप में पिछले टैग है, और fk अंक moz_places में उचित प्रविष्टि के लिए है।

का उपयोग करना है कि एक गाइड के रूप में ... एक बार जब आप टैग आप moz_bookmarks.fk पर moz_places.id शामिल हो सकते हैं के लिए आईडी ...

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 

निर्यात पता है ...

0

क्योंकि मैं यह जानकारी प्राप्त करने के लिए बेहतर जानकारी के लिए किया था, यहाँ लाने के लिए अपने सभी बुकमार्क का यूआरएल, शीर्षक और निर्माण तिथि अनुरोध है:

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

मुझे आशा है कि इससे लोगों को इस उत्तर की तलाश करने में मदद मिलेगी।