Season of KDE 2006
KMetaLibrary - Collection of API functions for storing and retrieving meta informations of media files
A Season of KDE 2006 project by Dragan Jovev
Mentored by Carsten Pfeiffer
Project Details
Abstract
A standard API functions for storing and retrieving meta informations
about every media file that comes to computer
Synopsis
Media files can be found everywhere: local hard drives, external drives, CD's/DVD's, MP3 players, mobile phones, local network, Internet etc... Every person organizes his collection of media files on his own wa
y, but problem can occur when that collection becomes large and when it spreads across all types of mediums.
Goals
I would like to create API functions that will help applications like amaroK or Digikam to find a wanted media file fast, whether it is located on hard drive, CD, DVD, or some other storage medium. This will bo
ost performance of applications using this API and give some fancy features for sorting, storing, managing and accessing media files.
Description
KMetaLibrary will consist of:
- Collections that can be searched or changed (collection of pictures, movies, songs...)
- API functions which will manipulate with data from collections
- Configuration file where all necessary parameters will be defined
for proper work
Collections will be files located on hard drive that will contain all meta informations about media file (like song title, artist, album etc...) and information about it's location and path to it (like CD with
checksum '123' in folder '/offspring/cd1') They will provide informations about all files (accessible and non-accessible). Each collection will be done using SQLite, XML or some other type of database. There wi
ll be separate collections for movies, songs and pictures. This will make faster manipulation of data for applications that are working, for example, only with pictures. Also, it will be easier to create and ma
nage separate database structures, since video and audio files will not use same data structure.
API functions will perform searches of collections based on search criteria. As output, application that use this API will know where file is located and take action based on that. Application using this API wi
ll know if, for example, file is located on CD, to inform user to insert CD named 'The Prodigy', or if it is located on network to insert user name and password.
Collections must be up to date, so it is necessary to create functions
for storing new and update excising informations in collections. This API functions will be caring about database accuracy. They will look for media files, read their meta data informations and store them in pr
oper collection. Data for collections will be gathered using KFileMetaInfo. This functions can be implemented in amaroK's 'rescan collection' feature.
API's design will be modular. It will be easy for developer to extend API's features when apps begin requiring them.
API will be embedded into KIO to have transparent access to non-available files.
Finally, configuration file will be available for every user. Most important configuration parameter will be paths to dirs where media files should be searched. This parameter can be ether specified by user or
application-controlled (through another API function). This can be implemented in amaroK's configure folders feature.
Road map
- Meet and discuss with mentor about everything related to project (~4 days)
- Create proper database structure for every collection type
(pictures, music, video)
(~1 week)
- Create initial test collections to work with them (~2 days)
- Start building basic API functions and test them on test
collections (~4 weeks)
- Consider creation of special functions for resolving common
problems that will
be detected in the meantime, and implement them (~2 weeks)
- Test if everything works as expected (~2 days)
- Make final patches (~5 days)
- Write API documentation based on gone work (rest of time)
I am ready to spend all my spare time on this project. That means 5-6
hours per day.
Personal statement
I am a 20 years-old second-year student at Faculty of Electronic Engineering, University of Nish (http://www.elfak.ni.ac.yu) majoring in computer science.
I am interested in software engineering and open-source development. I wrote my first program when I had 11 years at elementary school. Since then, my interest in programming never stopped.I learned C and C++ a
nd used them on some small projects in high school. I created a dynamic website of my high school using PHP and MySQL database as my final exam. Students had ability to log on and see various informations about
classes. Dynamic part of website is not working right now since other younger students are working on it (http://www.gsm-nis.edu.yu).I had experience with open-source 3D modeling tool moonlight 3D. I publishe
d my first work here in 2002:
http://www.moonlight.stpinkert.de/detail.php?site=6&sid=fafd511a65a2fb72bbb3bc0f23b1a21a&gid=50
I had luck to get in touch with developers from Irvas International company (http://www.irvas.co.yu/english.html) where I worked as volunteer on one bigger project - creation of web-based content administration
tool for real estate web site (http://www.newinhomes.com). There, I learned concept of object-oriented programming on practical example. Also, I was involved in creation of Beowolf cluster Andromeda which will
become part of GRID computing. Cluster is located at my faculty and it is running SuSE Linux.
I am a proud member of GNU Klub (http://gnu.elfak.ni.ac.yu) at my university. This club is founded by Milan Mitrovic and Darko Ilic, last-year participants of SoC. We are collaborating together on various proje
cts, help other students get involved and promote free software.
GNU/Linux is OS that I use for six years. KDE was always my desktop environment and I want to give my contribution to it.
You can see my CV here:
http://www.irvas.co.yu/cv/DraganJovev.html
See http://www.irvas.co.yu/cv/DraganJovev.html for details.
[ Edit ]