id3fs-index -l: bare tags: don't display tags with children (eg year)
[id3fs.git] / lib / ID3FS / DB.pm
index 143c568..5821b53 100644 (file)
@@ -152,9 +152,10 @@ sub last_update
 sub bare_tags
 {
     my($self)=@_;
-    my $sql=("SELECT tags.name FROM tags\n" .
-            "WHERE tags.parents_id=''\n" .
-            "GROUP BY tags.name\n");
+    my $sql=("SELECT t1.name FROM tags t1\n" .
+            "LEFT JOIN tags t2 on t1.id=t2.parents_id\n" .
+            "WHERE t1.parents_id='' AND t2.id IS NULL\n" .
+            "GROUP BY t1.name\n");
     my @names=$self->cmd_firstcol($sql);
     return (@names);
 }
@@ -266,6 +267,7 @@ sub add
     }
 
     $year="UNKNOWN" if(!$self->ok($year) || $year =~ /^0+$/);
+    $year+=1900 if($year=~/^\d\d$/);
     $self->add_tag($file_id, "year", $year);
     if($year=~/^(\d\d\d)\d$/)
     {
@@ -290,30 +292,29 @@ sub add
     {
        $self->add_tag($file_id, "audiotype", $audiotype);
     }
+    else
+    {
+       # should never happen
+       $self->add_tag($file_id, "audiotype", "UNKNOWN");
+    }
 
     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    ($channels eq "2") { $channels="stereo";  }
+       elsif ($channels eq "1") { $channels="mono";    }
+       elsif ($channels eq "0") { $channels="UNKNOWN"; }
+       $self->add_tag($file_id, "channels", $channels);
     }
 
     if($self->ok($bitrate))
     {
+       $bitrate="UNKNOWN" if($bitrate=~/^0+$/);
        $self->add_tag($file_id, "bitrate", $bitrate);
     }
 
     if($self->ok($samplerate))
     {
+       $samplerate="UNKNOWN" if($samplerate=~/^0+$/);
        $self->add_tag($file_id, "samplerate", $samplerate);
     }