X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FID3FS%2FDB.pm;h=143c56874dd1db63e1dc9e8ab4dc3db8c8754f72;hb=4f5ee0606c8b9726493ffab0e97872c670498184;hp=984bec0248ba228d0f62e07e676cbec72acf9c74;hpb=a77a37a3794cc178915a3c0982c6043e918b96a4;p=id3fs.git diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index 984bec0..143c568 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -195,13 +195,6 @@ sub relativise # absolute paths have empty first element due to leading / shift(@path) if($path[0] eq ""); shift(@rel) if($rel[0] eq ""); - if($path[0] ne $rel[0]) - { - # no path in common, return absolute - # should never happen - # FIXME - return $name; - } # f: /home/foo/bar/baz.mp3 # r: /home/ianb/music/albums while(@path && @rel && ($path[0] eq $rel[0])) @@ -240,13 +233,17 @@ sub add my $audiotype=$file->audiotype(); my @tags=$file->tags(); my $haspic=$file->haspic(); + my $channels=$file->channels(); + my $bitrate=$file->bitrate(); + my $samplerate=$file->samplerate(); $artist=undef unless($self->ok($artist)); print "$self->{me}: $path: no artist tag defined\n" unless(defined($artist)); my $artist_id=$self->add_to_table("artists", $artist); my $path_id=$self->add_to_table("paths", $pathpart); $album=undef unless($self->ok($album)); - if($self->{verbose} && !defined($album)) +# if($self->{verbose} && !defined($album)) FIXME + if(!defined($album)) { print "$self->{me}: $path: no album tag defined\n"; } @@ -256,12 +253,19 @@ sub add { "artists_id" => $artist_id, "albums_id" => $albums_id, "paths_id" => $path_id }); - for my $tag (@tags) + if(@tags) + { + for my $tag (@tags) + { + $self->add_tag($file_id, @$tag); + } + } + else { - $self->add_tag($file_id, @$tag); + $self->add_tag($file_id, "UNTAGGED"); } - $year="UNKNOWN" unless($self->ok($year)); + $year="UNKNOWN" if(!$self->ok($year) || $year =~ /^0+$/); $self->add_tag($file_id, "year", $year); if($year=~/^(\d\d\d)\d$/) { @@ -286,6 +290,33 @@ sub add { $self->add_tag($file_id, "audiotype", $audiotype); } + + if($self->ok($channels)) + { + if($channels eq "2") + { + $self->add_tag($file_id, "channels", "stereo"); + } + elsif($channels eq "1") + { + $self->add_tag($file_id, "channels", "mono"); + } + else + { + $self->add_tag($file_id, "channels", $channels); + } + } + + if($self->ok($bitrate)) + { + $self->add_tag($file_id, "bitrate", $bitrate); + } + + if($self->ok($samplerate)) + { + $self->add_tag($file_id, "samplerate", $samplerate); + } + } sub add_tag @@ -535,19 +566,19 @@ CREATE TABLE id3fs ( CREATE TABLE paths ( id INTEGER, name text, - PRIMARY KEY(id DESC) + PRIMARY KEY(id ASC) ); CREATE TABLE artists ( id INTEGER, name text, - PRIMARY KEY(id DESC) + PRIMARY KEY(id ASC) ); CREATE TABLE albums ( id INTEGER, name text, - PRIMARY KEY(id DESC) + PRIMARY KEY(id ASC) ); CREATE TABLE files ( @@ -556,7 +587,7 @@ CREATE TABLE files ( artists_id, albums_id, paths_id, - PRIMARY KEY(id DESC), + PRIMARY KEY(id ASC), FOREIGN KEY(artists_id) REFERENCES artists(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(albums_id) REFERENCES albums(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(paths_id) REFERENCES paths(id) ON DELETE CASCADE ON UPDATE CASCADE @@ -566,7 +597,7 @@ CREATE TABLE tags ( id INTEGER, parents_id INTEGER, name text, - PRIMARY KEY(id DESC) + PRIMARY KEY(id ASC) ); CREATE TABLE files_x_tags (