diff -ur SlimServer_v6.1.1.orig/HTML/Default/songinfo.html SlimServer_v6.1.1/HTML/Default/songinfo.html --- SlimServer_v6.1.1.orig/HTML/Default/songinfo.html 2005-07-22 02:04:16.000000000 +0200 +++ SlimServer_v6.1.1/HTML/Default/songinfo.html 2005-08-28 15:47:22.705383402 +0200 @@ -80,6 +80,13 @@ [% END %] + [% IF track.album.shelfmark %] + + [% "SHELFMARK" | string; "COLON" | string %] + [% track.album.shelfmark | html %] + + [% END %] + [% IF track.album.disc %] [% "DISC" | string; "COLON" | string %] @@ -90,7 +97,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 %] diff -ur SlimServer_v6.1.1.orig/HTML/Fishbone/songinfo.html SlimServer_v6.1.1/HTML/Fishbone/songinfo.html --- SlimServer_v6.1.1.orig/HTML/Fishbone/songinfo.html 2005-07-22 02:04:17.000000000 +0200 +++ SlimServer_v6.1.1/HTML/Fishbone/songinfo.html 2005-08-28 15:44:33.017426638 +0200 @@ -72,6 +72,16 @@ [% END %] + [% IF track.album.shelfmark %] + + + [% "SHELFMARK" | string; "COLON" | string %] + + + [% track.album.shelfmark | html %] + + + [% END %] [% IF track.album.disc %] @@ -88,7 +98,17 @@ [% "TRACK" | string; "COLON" | string %] - [% track.tracknum %] + [% 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 %] diff -ur SlimServer_v6.1.1.orig/Slim/Buttons/TrackInfo.pm SlimServer_v6.1.1/Slim/Buttons/TrackInfo.pm --- SlimServer_v6.1.1.orig/Slim/Buttons/TrackInfo.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/Buttons/TrackInfo.pm 2005-08-28 14:42:57.000000000 +0200 @@ -281,9 +281,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); } diff -ur SlimServer_v6.1.1.orig/Slim/DataStores/DBI/Album.pm SlimServer_v6.1.1/Slim/DataStores/DBI/Album.pm --- SlimServer_v6.1.1.orig/Slim/DataStores/DBI/Album.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/DataStores/DBI/Album.pm 2005-08-28 14:52:48.000000000 +0200 @@ -10,7 +10,7 @@ $class->table('albums'); - $class->columns(Essential => qw/id title titlesort contributors year artwork_path disc discc musicmagic_mixable/); + $class->columns(Essential => qw/id title titlesort contributors year artwork_path disc discc shelfmark musicmagic_mixable/); $class->columns(Stringify => qw/title/); diff -ur SlimServer_v6.1.1.orig/Slim/DataStores/DBI/DataModel.pm SlimServer_v6.1.1/Slim/DataStores/DBI/DataModel.pm --- SlimServer_v6.1.1.orig/Slim/DataStores/DBI/DataModel.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/DataStores/DBI/DataModel.pm 2005-08-28 14:42:57.000000000 +0200 @@ -346,12 +346,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, diff -ur SlimServer_v6.1.1.orig/Slim/DataStores/DBI/DBIStore.pm SlimServer_v6.1.1/Slim/DataStores/DBI/DBIStore.pm --- SlimServer_v6.1.1.orig/Slim/DataStores/DBI/DBIStore.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/DataStores/DBI/DBIStore.pm 2005-08-28 14:51:45.000000000 +0200 @@ -894,6 +894,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+))?/) { @@ -1174,7 +1183,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}; @@ -1278,6 +1287,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" @@ -1379,6 +1389,7 @@ $albumObj->disc($disc) if $disc; $albumObj->discc($discc) if $discc; + $albumObj->shelfmark($shelfmark) if $shelfmark; $albumObj->year($track->year) if $track->year; $albumObj->update(); @@ -1394,8 +1405,8 @@ my $albumName = defined($albumObj) ? $albumObj->titlesort : ''; my $primary_contributor = defined($contributors[0]) ? $contributors[0]->namesort : defined($albumObj) ? $albumObj->contributors : ''; - # Save 2 get calls - my ($titlesort, $tracknum) = $track->get(qw(titlesort tracknum)); + # Save 3 get calls + my ($titlesort, $tracknum, $indexnum) = $track->get(qw(titlesort tracknum indexnum)); my @keys = (); @@ -1403,6 +1414,7 @@ push @keys, $albumName || ''; push @keys, $disc if defined($disc); push @keys, sprintf("%03d", $tracknum) if defined $tracknum; + push @keys, sprintf("%03d", $indexnum) if defined($indexnum); push @keys, $titlesort || ''; $track->multialbumsortkey(join ' ', @keys); diff -ur SlimServer_v6.1.1.orig/Slim/DataStores/DBI/Track.pm SlimServer_v6.1.1/Slim/DataStores/DBI/Track.pm --- SlimServer_v6.1.1.orig/Slim/DataStores/DBI/Track.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/DataStores/DBI/Track.pm 2005-08-28 14:42:57.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', diff -ur SlimServer_v6.1.1.orig/Slim/Formats/FLAC.pm SlimServer_v6.1.1/Slim/Formats/FLAC.pm --- SlimServer_v6.1.1.orig/Slim/Formats/FLAC.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/Formats/FLAC.pm 2005-08-28 14:55:09.000000000 +0200 @@ -24,13 +24,14 @@ use IO::Seekable qw(SEEK_SET); my %tagMapping = ( + 'INDEXNUMBER' => 'INDEXNUM', 'TRACKNUMBER' => 'TRACKNUM', 'DISCNUMBER' => 'DISC', 'URL' => 'URLTAG', 'musicbrainz_sortname' => 'ARTISTSORT', ); -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 = 1885693293; diff -ur SlimServer_v6.1.1.orig/Slim/Utils/Prefs.pm SlimServer_v6.1.1/Slim/Utils/Prefs.pm --- SlimServer_v6.1.1.orig/Slim/Utils/Prefs.pm 2005-07-22 02:04:15.000000000 +0200 +++ SlimServer_v6.1.1/Slim/Utils/Prefs.pm 2005-08-28 15:23:01.000000000 +0200 @@ -91,21 +91,25 @@ 'mDNSname' => 'SlimServer', 'titleFormat' => [ 'TITLE', - 'DISC-TRACKNUM. TITLE', - 'TRACKNUM. TITLE', - 'TRACKNUM. ARTIST - TITLE', - 'TRACKNUM. TITLE (ARTIST)', - 'TRACKNUM. TITLE - ARTIST - ALBUM', + 'DISC-TRACKNUM.INDEXNUM. TITLE', + 'TRACKNUM.INDEXNUM. TITLE', + 'TRACKNUM.INDEXNUM. ARTIST - TITLE', + 'TRACKNUM.INDEXNUM. TITLE (ARTIST)', + 'TRACKNUM.INDEXNUM. TITLE - ARTIST - ALBUM', 'FILE.EXT', - 'TRACKNUM. TITLE from ALBUM by ARTIST', + 'TRACKNUM.INDEXNUM. TITLE from ALBUM by ARTIST', 'TITLE (ARTIST)', 'ARTIST - TITLE' ], 'guessFileFormats' => [ '(ARTIST - ALBUM) TRACKNUM - TITLE', + '(ARTIST - ALBUM) TRACKNUM.INDEXNUM - TITLE', '/ARTIST/ALBUM/TRACKNUM - TITLE', + '/ARTIST/ALBUM/TRACKNUM.INDEXNUM - TITLE', '/ARTIST/ALBUM/TRACKNUM TITLE', - '/ARTIST/ALBUM/TRACKNUM. TITLE' + '/ARTIST/ALBUM/TRACKNUM.INDEXNUM TITLE', + '/ARTIST/ALBUM/TRACKNUM. TITLE', + '/ARTIST/ALBUM/TRACKNUM.INDEXNUM. TITLE' ], 'disabledplugins' => [], 'enabledfonts' => ['small', 'medium', 'large', 'huge'], diff -ur SlimServer_v6.1.1.orig/SQL/SQLite/dbcreate.sql SlimServer_v6.1.1/SQL/SQLite/dbcreate.sql --- SlimServer_v6.1.1.orig/SQL/SQLite/dbcreate.sql 2005-07-22 02:04:14.000000000 +0200 +++ SlimServer_v6.1.1/SQL/SQLite/dbcreate.sql 2005-08-28 14:42:57.000000000 +0200 @@ -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 diff -ur SlimServer_v6.1.1.orig/strings.txt SlimServer_v6.1.1/strings.txt --- SlimServer_v6.1.1.orig/strings.txt 2005-07-22 02:04:21.000000000 +0200 +++ SlimServer_v6.1.1/strings.txt 2005-08-28 14:42:57.000000000 +0200 @@ -6230,6 +6230,13 @@ PT Faixa SE Spår +INDEX + DE Index + EN Index + ES Índice + FR Index + IT Indice + SONGTITLE CZ Název skladby DE Liedertitel @@ -6334,6 +6341,10 @@ PT Disco SE Skiva +SHELFMARK + DE Signatur + EN Shelfmark + LENGTH CZ Délka DE Dauer