Summer of Code project proposal

Ramkumar R artagnon at gmail.com
Mon Apr 7 16:38:32 UTC 2008


Hi,

I had no idea that Amarok was participating until today. I know it's
very late but I want to give it a shot anyway. My ideas (application
already submitted through Google) can be summarised below. I want to
know what the community thinks of them.

 == Overview ==
Currently, Amarok can lookup the PUIDs of individual files on the
MusicBrainz database and can retag them appropriately. PUIDs only
match track heads, not albums in which the tracks can possibly go.
Amarok hence comes up with a dialog letting the user choose the album.
To automatically choose the "right" album to put the track in, Amarok
has an advantage over PicardQT as it maintains a database of the
user's complete collection.

For example, if a user correctly puts 9 of 10 tracks belonging to an
album into the album, he/ she should have this information while
attempting to tag the tenth file at a later date. Currently, PicardQT
does not attempt to complete the existing album due to lack of
information. Amarok on the other hand, can easily be extended to
automatically complete the album.

Mass moving/ renaming based on user-defined parameters is also absent
in Amarok. While TaggerScript is an overkill, simple file moving/
renaming features can be borrowed from Picard.

== Proposals ==
Note: All file references are with respect to the latest unstable
Amarok-1.80 release source directory

1. Modify the db schema in /src/collectiondb.h to incorporate
MusicBrainz Release IDs, Track IDs and Artist IDs. Also create another
table to store the track counts for each unique MusicBrainz ReleaseID
matched (explained later (*^)).
2. Create a new ui in /src/amarok-1.80/src/configdialog/dialogs using
QTDesigner for configuring file moving/ naming conventions using
corresponding PicardQT ui file [http://tinyurl.com/3tr9ry] as a
guideline. Create classes to keep this information and write callbacks
to modify them. Remove /src/trackpickerdialogbase.ui and associated
files.
3. Create an "Auto Organise" function under the Tools menu in the main
window [/src/MainWindow.cpp] to perform the lookup and organisation of
the complete music collection.

The auto-organisation algorithm would include the following steps:
(*) First run/ rebuild function:
a. Lookup the PUID of all the files in the collection and fill in
their MusicBrainz TrackIDs into the database.
b. (*^) Match the track heads to the possible ReleaseIDs and update
the counts of each unique ReleaseID matched in the table. For example,
if 10 track heads match 5 ReleaseIDs each and have only one particular
ReleaseID in common, that ReleaseID will have a count of 10 leaving
the others with a count of 1.
c. Order the temporary table and start tagging/ renaming files
starting from the ReleaseID with maximum number of counts. Ignore
missing files while going down the list.
(*) Incremental tagging function:
a. Perform the rebuilding only for every new file that needs to be
tagged/ renamed leaving the already matched files as it is.



More information about the Amarok mailing list