Light Media Scanner
Lightweight media scanner meant to be used in not-so-powerful devices, like embedded systems or old machines.
Provides an optimized way to recursively scan directories, handling the parser in a child process, avoiding breaks of the main process when parsers break (quite common with such bad libs and tags).
Parsers are plugins in the form of shared objects, so it's easy to add new without having to recompiling the scanner.
The scanner will use SQLite3 to store file-mtime association, avoiding parsing files that are already up-to-date. This SQLite connection and the file id within the master table 'files' are handled to plugins for relationship with other tables.
Applications should then access the SQLite3 database to get all the informations about scanned media. See tables and fields description at http://lms.garage.maemo.org/api/index.html (end of the page). You can use any SQLite3 access library, for instance you have SQLObject, SQLAlchemy and Storm for python, Sequel for Ruby and possible others.