Metadata Writeback – My GSOC Project

Hello, i know its very late to post introductory post about my GSOC project but better late then never. So what does my project do , in nepomuk as of now any metadata written to its backend virtuoso remains only there which is good thing most of time but some files or other backend supports the ability to store the metadata itself.

i.e. MP3 files support ID3 tags , Images support exif data etc

This will finally allow Nepomuk to become a full fledged backend.

My Current Status :

I will break it down in to three sub categories

1) Plugin System :

This is a simple class which all the plugins are based on, it consists of virtual writeback method and finish signal, so all the plugins are coherent.

2) Writeback Service :

This service integrated with resource watcher monitors any changes in property of indexed metadata , if there is any change it will perform the writeback. The selection of the plugin is based on the mimetype currently which seems to be insufficient in the larger picture.

3) Plugins :

As of now i have two plugins ready,

1) Taglib Plugin:

I am using taglib to perform the writeback for all supported audio files, when there is difference in metadata in nepomuk and the file.

2) Lib exiv -kde Plugin :

This plugin is designed for image files , currently i am only writing for exif metadata for selected properties but its very easy to add more properties if needed.

My Future Plans :

1) Akonadi Plugin :

According to my mentors this would be a nice plugin to work on , since my current plugins only writeback to files this will be something different and it will be my first time working with async APIs.

2) Hybrid system for plugin selection :

As i said before right now my selection of plugins is based on mimetype but that’s not enough , selection based on rdf types would be better but it might complicate things for some plugins so why not combine both of them , and make a system that selects plugins based on either rdf types or mimetypes i am currently working on it.

So that’s it i guess, i will update this blog when i finish these things in the future. Any comments or feedback is always welcomed.

P.S. : My code can be found in kde-runtime branch called gsoc2011/nepomuk/writeback.