Has anyone done a Python CLI to edit Firefox bookmarks ?
My worldview is that of Unix file trees; I want
- find /re/ in given or all fields in given or all subtrees
- cd
- ls with context
- mv this ../there/
Whether it uses bookamrks.html or places.sqlite is secondary -- whatever's easier.
Clarification added: I'd be happy to quit Firefox, edit bookmarks in the CLI, import the new database in Firefox.
In otherwords, database locking is a moot point; first let's see code for a rough cut CLI.
(Why a text CLI and not a GUI ?
CLIs are simpler (for me), and one could easily program e.g.
mv old-bookmarks to 2009/same-structure/
.
Nonetheless links to a really good bookmarker GUI, for Firefox or anything else, would be useful too.)
Assuming we're talking about Firefox 3 or better, the bookmarks are kept in a SQLite file, places.sqlite in the profile folder. So you need a routine to find the profile folder (depending on your platform) and then you can load the SQLite file.
The schema's rich and a bit complicated, but well documented, and of course with Python's SQLite support you can explore it interactively.
Of course, Firefox keeps the DB locked when it's running. For read-only access, you can just copy places.sqlite into a temporary file, then open and explore that one; to perform changes as you seem to require, however, it seems best to require the user to quit Firefox (if that's unacceptable, you could explore if Firefox offers a way to ask for its cooperation).
Is this the kind of things you had in mind...?
I don't know about all the features you've mentioned but "Organize bookmars" option in the Bookmarks menu is pretty decent with respect to features.