-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/105290/
-----------------------------------------------------------

(Updated April 15, 2013, 12:51 p.m.)


Review request for Amarok and Sergey Ivanov.


Changes
-------

New patch attached to ask for some help, it's uncomplete and could be 
unbuildable. Specific questions are posted below.


Description
-------

The attached patch addresses several issues and brings some improvements, 
listed below.

Web service 2 is now being used in place of the deprecated version 1: disc 
number and artist credit are now better defined. This alone required a complete 
rewrite of MusicBrainzXmlParser.(cpp|h).

Make track search query more complicated and let it handle some mistakes 
(documented in code).

As in web service 2 multiple artists (e.g., Hans Zimmer & James Newton Howard) 
are returned splitted (i.e., they do not have one page, but each one has its 
own), the "Go to Artist Page" menu button was changed to a KActionMenu to 
support showing a sub list.

Get track title from release information, as different releases can change 
track title (e.g., adding (single edit) or similar).

Instead of doing *release* requests to get album artist and year, do *release 
group* requests. It often means fewer requests will be done (and each one takes 
at least 1 second, so...).
See http://tickets.musicbrainz.org/browse/SEARCH-214 and 
http://tickets.musicbrainz.org/browse/SEARCH-218

Reimplement Levenshtein distance algorithm using a more efficient version 
(pirated from Wikibooks as well as the current one).

Tracks without results are now listed and disabled, to let user know what 
results are missing. Prior to this, you had to count them by hand.

File name is shown in track tooltip. Helpful when existing tags are equivocal.

Selected results are shown in bold font to be easily spotted.

Track number, track count, disc number (when existing) and release year (first 
release date from the release group, actually) are now shown to help 
distinguish among results. This means that all the fetched information is now 
shown to the user.

Tracks are sorted by file name (fair choice). It's done after each insertion, 
but since insertions are quite sparse, it doesn't cause any performance problem.

Toolbar features "Select Best Matches" and "Deselect", the latter being new, 
and the former being moved here from the hidden header button. To keep it not 
too wide, Expand and Collapse buttons were modified to be KActionMenu. They now 
require two clicks, but are easier to distinguish (I always had to stop and 
read them to distinguish between "Collapse All" and "Collapse Chosen", for 
example), so the time needed to click them looks mostly the same as before.

The progress bar now gets to 100% even if MusicDNS search is disabled.

All releases per track are processed instead of only the best one. I'll explain 
better. Each track is associated to several releases. In current code, all the 
releases are parsed, but only the one with the highest score is returned to the 
dialog. This excludes lots of good results. Now, all of them can be returned. 
This obviously can increase the number of returned resuts, but that's 
acceptable given that, before, you were not able to tag a lot of tracks. Also, 
two following paragraphs are about two features that mitigate this "problem".

Tracks with the same visible information are merged. There's no point in 
showing several tracks with same title, artist, album name and artist, album 
year, disc number, track count and track number, as the user will not be able 
to distinguish among them. Just merge them into only one result, keeping a list 
of artist, release and track IDs (they are and will be used). Also, the score 
is updated to reflect the higher one. The "Go to ... Page" menu buttons 
currently link to the top result (i.e., highest scoring) IDs, but in the future 
I might add support for showing a list.

A "Select Best Matches from This Album" menu button was added. It matches the 
top result release ID in other *unselected* results, to make album tagging much 
easier. Since a result might reference many release IDs (see the paragraph 
above), the match is done on the whole list of them. This is highly recommended 
over the "Select Best Matches" toolbar button.

Process MusicDNS results just like MusicBrainz ones (i.e., do not duplicate the 
logic). Simply, as they will not carry existing tags, they'll end up being 
checked only by track length.

Rewrite MusicDNS result matching method in the list view. Actually, remove it 
(it was checking for equal track ID, but that is a very weak method, especially 
after my updates), and use the matching system described above.

Make MusicBrainzTagsView implementation agnostic (i.e., never use 
MusicBrainzTagsItem inside it, and make use of UserRole).

Remove stale code from MusicBrainzFinder.cpp and MusicBrainzXmlParser.(cpp|h) 
dealing with MBID requests (talked to maintainer about this).

Move and rename methods to enhance consistency and tidyness. Source files are a 
bit easier to navigate now.

Adapt to global Amarok coding style.


That's about it. The attached screenshot shows most of the visible updates.

Even if the patch rewrites many parts of the tagger, this work was possible 
only thanks to the solid foundations made by Sergey, who I thank for his work.


Diffs (updated)
-----

  src/dialogs/MusicBrainzTagger.h 5fa0271 
  src/dialogs/MusicBrainzTagger.cpp 9ac99a6 
  src/musicbrainz/MusicBrainzFinder.h db8cb05 
  src/musicbrainz/MusicBrainzFinder.cpp 6635d04 
  src/musicbrainz/MusicBrainzMeta.h 5cbd190 
  src/musicbrainz/MusicBrainzTags.h f70d494 
  src/musicbrainz/MusicBrainzTags.cpp c90c2f8 
  src/musicbrainz/MusicBrainzXmlParser.h 171a340 
  src/musicbrainz/MusicBrainzXmlParser.cpp 473d27a 

Diff: http://git.reviewboard.kde.org/r/105290/diff/


Testing
-------


File Attachments (updated)
----------------

Toolbar with icons and QToolButtons
  http://git.reviewboard.kde.org/media/uploaded/files/2013/04/15/snapshot1.png


Screenshots
-----------


  http://git.reviewboard.kde.org/r/105290/s/605/


Thanks,

Alberto Villa

_______________________________________________
Amarok-devel mailing list
Amarok-devel@kde.org
https://mail.kde.org/mailman/listinfo/amarok-devel

Reply via email to