Feature and implementation ideas
Development Docs
08/31/2009
Usage¶
It works in the following way:- Selected folders are scanned for media files and any information gathered about them is saved in the database.
- Tags and rating (per tag rating including) can be assigned to files.
- Files with selected tags can be filtered out from the list of all known files. Alternatively there is an advanced search for search criteria.
An action or command (e.g. mplayer) can be assigned to any file type or specific file.
Programming base¶
Originally I considered the QT4 library with its database drivers.
Instead I decided to code a database in Ada because it has nice capabilities for efficiently implementing records for data storage and would require smaller library for users who don't have QT4 installed.
The data is going to be stored in binary format. However, it is always possible to implement an export method to xml and csv, as well as any other database backend.
The core of the application is going to be designed as a library. Thus it can be adapted for use with any front end such as different GUI tool kits or even web interfaces or media player plugins.
Features¶
The intended use is to manage a collection of media files. This application should simplify organising and categorising files in a quick and accessible manner, so that files could be found easily and quickly even in a large collection. It is expected to make manageable a collection of several hundred or thousand files.
Categorising¶
As much data as possible will be extracted from the file content. This includes file name, size, type, meta data and ID3 tags. The user will assign tags and rating to files to further categorise the content.
Content identification¶
The files will uniquely identified by the content. A hash code will be generated from the content. This will be used to identify duplicate files with the same name or renamed files. The algorithm should also allow the user to change ID3 tags and still be able to track down the files in the database.
Meta data and file info¶
Meta data from file headers and data such as names of directories will be stored in the database. And will be stored in tables assigned to specific file types.
Tags¶
Tagging is one of the essential features here. Every file in the database can have any number of tags assigned to it. New tags can be added to the system.
Rating¶
Each tag will be assigned a rating value and flag saying whether it is should be used. There is going to be an independent file rating as well. The rating style can be left as a user preference. There could be a number of algorithms to calculate the overall rating:- usage frequency analysis
- Average tag ratings
- manually set ratings
Search¶
Search is planned to be a set of filters. Filters can be any fields in the database but mainly tags, meta data and rating. Filters should also include sorting and grouping capability. Complicated search engines could be considered later as they seem not essential atm.
Implementation¶
The code will be a set of classes which will do the following:- creating and manipulating records
- scanning file system and retrieving data from files
- multitasking
- High level interface, i.e. an abstraction layer to be used by a frontend.