From 34e2f722f778defa9be7fffe9bb4ee415b799890 Mon Sep 17 00:00:00 2001 From: Jonas Häggqvist Date: Tue, 12 Apr 2005 16:07:01 +0000 Subject: Improved handling of multi-artist albums and tags with different cases git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6275 a1c6a512-1295-4272-9138-f99709370657 --- tools/songdb.pl | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tools/songdb.pl b/tools/songdb.pl index 5d95ea5a87..11bf878057 100755 --- a/tools/songdb.pl +++ b/tools/songdb.pl @@ -47,6 +47,9 @@ my %albums; my %years; my %filename; +my %lcartists; +my %lcalbums; + my $dbver = 1; if(! -d $dir or $help) { @@ -160,9 +163,29 @@ sub dodir { $$id3{'ALBUM'} = "" if ($$id3{'ALBUM'} eq ""); $$id3{'TITLE'} = "" if ($$id3{'TITLE'} eq ""); - # prepend Artist name to handle duplicate album names from other - # artists - my $albumid = $id3->{'ALBUM'}."___".$id3->{'ARTIST'}; + # Only use one case-variation of each album/artist + if (exists($lcalbums{lc($$id3{'ALBUM'})})) { + # if another album with different case exists + # use that case (store it in $$id3{'ALBUM'} + $$id3{'ALBUM'} = $lcalbums{lc($$id3{'ALBUM'})}; + } + else { + # else create a new entry in the hash + $lcalbums{lc($$id3{'ALBUM'})} = $$id3{'ALBUM'}; + } + + if (exists($lcartists{lc($$id3{'ARTIST'})})) { + $$id3{'ARTIST'} = $lcartists{lc($$id3{'ARTIST'})}; + } + else { + $lcartists{lc($$id3{'ARTIST'})} = $$id3{'ARTIST'}; + } + + # prepend Dir name to handle duplicate album names in different + # dirs. Meaning multi-artist cds will be handled correctly if + # put in a single directory. + my $albumid = $id3->{'ALBUM'}."___".$dir; + if($albumid ne "___") { my $num = ++$albums{$albumid}; if($num > $maxsongperalbum) { -- cgit