The pynotes Python module is such a wrapper of the C API (although it doesn't do as much as the Java API at this point).
The advantage of using Python is that Python, unlike Java, does not use garbage collection (a thread runs around looking for stuff you don't need anymore) but reference counting. So, an object that has no references to it anymore is freed immediately without any need for you to call recycle() for the objects you don't need anymore.
Here is an example script that uses pynotes:
import pynotes def dump_fields(note): for f in note.items(): print "%16s : %s"%(f,`note[f]`) def test(): db=pynotes.openDatabase("dominoserver","simple.nsf") for noteid in db.query(): print "--- Note: 0x%x "%(noteid) note=db.openNote(noteid) dump_fields(note) if __name__ == '__main__': test()
db.query() gives a list of all NoteIDs (a number identifying a document in a Notes database) in the opened database. You could also do a db.query('status="3"') or similar, just as with the Database.search() method of the Java API.
Something which can be done in pynotes but can't (as of R5) with the Java Notes API is the analysis of richtext fields. This is only slightly more comfortable than with the C API, but you can write Python functions to wrap the translated data in an arbitrary format, like HTML.
You can download the code (and a binary for Linux) at the
project page
at SourceForge.
If you have questions, feel free to contact me at pynotes at versley.de
(email adress obfuscated for the obvious reasons).