--- /dev/null 2005-02-27 12:46:19.655273128 +0100 +++ SlimServer_v6.0.2/SQL/SQLite/Upgrades/8.sql 2005-07-03 15:45:31.000000000 +0200 @@ -0,0 +1,4 @@ +-- +-- Force db recreation by upping the schema + +UPDATE metainformation SET version = 8; --- SlimServer_v6.0.2/SQL/SQLite/dbcreate.sql.unmodified 2005-07-03 15:46:07.000000000 +0200 +++ SlimServer_v6.0.2/SQL/SQLite/dbcreate.sql 2005-07-03 16:40:08.000000000 +0200 @@ -11,7 +11,7 @@ total_time integer -- cumulative play time ); -INSERT INTO metainformation VALUES (7, 0, 0); +INSERT INTO metainformation VALUES (8, 0, 0); CREATE TABLE tracks ( id integer UNIQUE PRIMARY KEY NOT NULL, @@ -20,6 +20,9 @@ titlesort varchar, -- version of title used for sorting album integer, -- album object tracknum integer, -- track number in album + tracktotal integer, -- total number of tracks in album + indexnum integer, -- index number in track + indexmax integer, -- number of last index in track (indices count from zero!) ct varchar, -- content type of track tag integer, -- have we read the tags yet age integer, -- timestamp for listing @@ -83,6 +86,7 @@ CREATE TABLE albums ( id integer UNIQUE PRIMARY KEY NOT NULL, + shelfmark varchar, -- (unique) mark for the media (CD, DVD, Tape etc.) this album is on title varchar, -- title titlesort varchar, -- version of title used for sorting contributors varchar, -- stringified list of contributors --- SlimServer_v6.0.2/SQL/SQLite/sql.version.unmodified 2005-07-03 15:44:30.000000000 +0200 +++ SlimServer_v6.0.2/SQL/SQLite/sql.version 2005-07-03 15:45:16.000000000 +0200 @@ -8,3 +8,4 @@ 4 99999 5 99999 6 99999 +7 99999 --- SlimServer_v6.0.2/HTML/Default/songinfo.html.unmodified 2005-07-03 18:29:06.000000000 +0200 +++ SlimServer_v6.0.2/HTML/Default/songinfo.html 2005-07-03 23:00:23.000000000 +0200 @@ -75,6 +75,13 @@ [% END %] + [% IF track.album.shelfmark %] + + [% "SHELFMARK" | string; "COLON" | string %] + [% track.album.shelfmark | html %] + + [% END %] + [% IF track.album.disc %] [% "DISC" | string; "COLON" | string %] @@ -85,7 +92,14 @@ [% IF track.tracknum %] [% "TRACK" | string; "COLON" | string %] - [% track.tracknum | html %] + [% track.tracknum | html %][% IF track.tracktotal %]/[% track.tracktotal | html %][% END %] + + [% END %] + + [% IF track.indexnum %] + + [% "INDEX" | string; "COLON" | string %] + [% track.indexnum | html %][% IF track.indexmax %]/[% track.indexmax | html %][% END %] [% END %] --- SlimServer_v6.0.2/Slim/DataStores/DBI/Track.pm.unmodified 2005-07-03 16:33:03.000000000 +0200 +++ SlimServer_v6.0.2/Slim/DataStores/DBI/Track.pm 2005-07-03 17:40:39.000000000 +0200 @@ -31,6 +31,9 @@ our %otherColumns = ( 'size' => 'audio_size', 'offset' => 'audio_offset', + 'tracktotal' => 'tracktotal', + 'indexnum' => 'indexnum', + 'indexmax' => 'indexmax', 'year' => 'year', 'secs' => 'secs', 'cover' => 'cover', --- SlimServer_v6.0.2/Slim/DataStores/DBI/DataModel.pm.unmodified 2005-07-04 00:02:25.000000000 +0200 +++ SlimServer_v6.0.2/Slim/DataStores/DBI/DataModel.pm 2005-07-04 00:04:27.000000000 +0200 @@ -337,12 +337,12 @@ 'album' => ['albums.titlesort','albums.disc'], 'contributor' => ['contributors.namesort'], 'artist' => ['contributors.namesort'], - 'track' => ['tracks.multialbumsortkey', 'tracks.disc','tracks.tracknum','tracks.titlesort'], - 'tracknum' => ['tracks.disc','tracks.tracknum','tracks.titlesort'], + 'track' => ['tracks.multialbumsortkey', 'tracks.disc','tracks.tracknum','tracks.indexnum','tracks.titlesort'], + 'tracknum' => ['tracks.disc','tracks.tracknum','tracks.indexnum','tracks.titlesort'], 'year' => ['tracks.year'], 'lastPlayed' => ['tracks.lastPlayed'], 'playCount' => ['tracks.playCount'], - 'age' => ['tracks.age desc', 'tracks.disc', 'tracks.tracknum', 'tracks.titlesort'], + 'age' => ['tracks.age desc', 'tracks.disc', 'tracks.tracknum', 'tracks.indexnum', 'tracks.titlesort'], ); # This is a weight table which allows us to do some basic table reordering, --- SlimServer_v6.0.2/Slim/DataStores/DBI/DBIStore.pm.unmodified 2005-07-03 17:11:02.000000000 +0200 +++ SlimServer_v6.0.2/Slim/DataStores/DBI/DBIStore.pm 2005-07-03 18:17:20.000000000 +0200 @@ -865,6 +865,15 @@ if (defined $attributesHash->{'TRACKNUM'}) { $attributesHash->{'TRACKNUM'} = Slim::Music::Info::cleanTrackNumber($attributesHash->{'TRACKNUM'}); } + if (defined $attributesHash->{'TRACKTOTAL'}) { + $attributesHash->{'TRACKTOTAL'} = Slim::Music::Info::cleanTrackNumber($attributesHash->{'TRACKTOTAL'}); + } + if (defined $attributesHash->{'INDEXNUM'}) { + $attributesHash->{'INDEXNUM'} = Slim::Music::Info::cleanTrackNumber($attributesHash->{'INDEXNUM'}); + } + if (defined $attributesHash->{'INDEXMAX'}) { + $attributesHash->{'INDEXMAX'} = Slim::Music::Info::cleanTrackNumber($attributesHash->{'INDEXMAX'}); + } # Turn the tag SET into DISC and DISCC if it looks like # or #/# if ($attributesHash->{'SET'} and $attributesHash->{'SET'} =~ /(\d+)(?:\/(\d+))?/) { @@ -1163,7 +1172,7 @@ # Normalize ARTISTSORT in ContributorTrack->add() the tag may need to be split. See bug #295 # # Push these back until we have a Track object. - for my $tag (qw(COMMENT BAND COMPOSER CONDUCTOR GENRE ARTIST ARTISTSORT PIC APIC ALBUM ALBUMSORT DISCC)) { + for my $tag (qw(COMMENT BAND COMPOSER CONDUCTOR GENRE ARTIST ARTISTSORT PIC APIC ALBUM ALBUMSORT DISCC SHELFMARK)) { next unless defined $attributes->{$tag}; @@ -1265,6 +1274,7 @@ my $album = $attributes->{'ALBUM'}; my $disc = $attributes->{'DISC'}; my $discc = $attributes->{'DISCC'}; + my $shelfmark = $attributes->{'SHELFMARK'}; my $albumObj; # Create a singleton for "No Album" @@ -1360,6 +1370,7 @@ $albumObj->disc($disc) if $disc; $albumObj->discc($discc) if $discc; + $albumObj->shelfmark($shelfmark) if $shelfmark; $albumObj->update(); $track->album($albumObj); @@ -1380,6 +1391,7 @@ push @keys, $albumName || ''; push @keys, $disc if defined($disc); push @keys, sprintf("%03d", $track->tracknum) if defined($track->tracknum); + push @keys, sprintf("%03d", $track->indexnum) if defined($track->indexnum); push @keys, $track->titlesort() || ''; $track->multialbumsortkey(join ' ', @keys); --- SlimServer_v6.0.2/Slim/DataStores/DBI/Album.pm.unmodified 2005-07-03 19:36:35.000000000 +0200 +++ SlimServer_v6.0.2/Slim/DataStores/DBI/Album.pm 2005-07-03 19:37:19.000000000 +0200 @@ -10,7 +10,7 @@ $class->table('albums'); - $class->columns(Essential => qw/id title titlesort contributors artwork_path disc discc musicmagic_mixable/); + $class->columns(Essential => qw/id title titlesort contributors artwork_path disc discc shelfmark musicmagic_mixable/); $class->columns(Stringify => qw/title/); --- SlimServer_v6.0.2/Slim/Buttons/TrackInfo.pm.unmodified 2005-07-03 21:46:06.000000000 +0200 +++ SlimServer_v6.0.2/Slim/Buttons/TrackInfo.pm 2005-07-03 22:35:10.000000000 +0200 @@ -257,9 +257,27 @@ push (@{$client->trackInfoLines}, $client->string('ALBUM') . ": $album"); push (@{$client->trackInfoContent}, 'ALBUM'); } - + + if (my $shelfmark = $track->album()->shelfmark()) { + push (@{$client->trackInfoLines}, $client->string('SHELFMARK') . ": $shelfmark"); + push (@{$client->trackInfoContent}, undef); + } + if (my $tracknum = $track->tracknum()) { - push (@{$client->trackInfoLines}, $client->string('TRACK') . ": $tracknum"); + if (my $tracktotal = $track->tracktotal()) { + push (@{$client->trackInfoLines}, $client->string('TRACK') . ": $tracknum/$tracktotal"); + } else { + push (@{$client->trackInfoLines}, $client->string('TRACK') . ": $tracknum"); + } + push (@{$client->trackInfoContent}, undef); + } + + if (my $indexnum = $track->indexnum()) { + if (my $indexmax = $track->indexmax()) { + push (@{$client->trackInfoLines}, $client->string('INDEX') . ": $indexnum/$indexmax"); + } else { + push (@{$client->trackInfoLines}, $client->string('INDEX') . ": $indexnum"); + } push (@{$client->trackInfoContent}, undef); } --- SlimServer_v6.0.2/Slim/Formats/FLAC.pm.unmodified 2005-07-03 16:01:38.000000000 +0200 +++ SlimServer_v6.0.2/Slim/Formats/FLAC.pm 2005-07-03 16:07:04.000000000 +0200 @@ -24,12 +24,13 @@ use IO::Seekable qw(SEEK_SET); my %tagMapping = ( + 'INDEXNUMBER' => 'INDEXNUM', 'TRACKNUMBER' => 'TRACKNUM', 'DISCNUMBER' => 'SET', 'URL' => 'URLTAG', ); -my @tagNames = qw(ALBUM ARTIST BAND COMPOSER CONDUCTOR DISCNUMBER TITLE TRACKNUMBER DATE); +my @tagNames = qw(SHELFMARK ALBUM ARTIST BAND COMPOSER CONDUCTOR DISCNUMBER TITLE TRACKNUMBER TRACKTOTAL INDEXNUMBER INDEXMAX DATE); # peem id (http://flac.sf.net/id.html http://peem.iconoclast.net/) my $PEEM = 1835361648; --- SlimServer_v6.0.2/strings.txt.unmodified 2005-07-03 18:30:11.000000000 +0200 +++ SlimServer_v6.0.2/strings.txt 2005-07-03 19:24:45.000000000 +0200 @@ -5908,6 +5908,13 @@ PT Faixa SE Spår +INDEX + DE Index + EN Index + ES Índice + FR Index + IT Indice + SONGTITLE DE Liedertitel DK Sangtitel @@ -6005,6 +6012,10 @@ PT Disco SE Skiva +SHELFMARK + DE Signatur + EN Shelfmark + LENGTH DE Dauer DK Varighed