views:

105

answers:

2

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.)

+1  A: 

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...?

Alex Martelli
Thanks Alex; I was hoping for a complete class Bookmarktreewith find, ls, cd, mv,using either sqlite3 or lxml on bookmarks.html. Know of anything in that direction ?
Denis
@Denis, no, and unless you clarify the issue I've mentioned (for mv to work, is it OK to ask the user to stop and restart Firefox?) as well as the platforms of interest, I don't see how such a class could be written.
Alex Martelli
@Alex, I added some clarification -- the user is only me, locking is moot. bookmarks.html -> lxml editor ?
Denis
A: 

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.

Noufal Ibrahim
Its fixed 5-line menu with dozens of bookmark folders is ridiculous
Denis