use lib '/home/ianb/projects/id3fs/id3fs/lib'; # FIXME: remove
use strict;
use Getopt::Long qw(Configure);
+use File::Find;
use ID3FS::AudioFile;
use vars qw($me);
$me=($0=~/(?:.*\/)?(.*)/)[0];
+my @extensions=qw(mp3); # FIXME: flac ogg
my $verbose=0;
my $help=0;
my ($artist, $album, $track, $tracknum, $year, $v1genre, $comment,
usage() if(!@ARGV || !$optret || $help);
-while(my $filename=shift @ARGV)
+while(my $path=shift @ARGV)
{
- unless(-f $filename)
+ unless(-e $path)
{
- warn("$me: $filename: not found\n");
+ warn("$me: $path: not found\n");
next;
}
- my $file=ID3FS::AudioFile->new($filename);
- next unless($file);
- my $changes=0;
- $changes = do_deletes($file);
- $changes += do_adds($file);
- if($changes)
- {
- do_write($file);
- }
- else
+ File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path);
+}
+
+sub wanted
+{
+ my $ext='';
+ if(/.*\.(.*)/) { $ext=lc($1); }
+ if(-f && scalar(grep({ $ext eq lc($_);} @extensions)))
{
- do_display($file);
+ my $file=ID3FS::AudioFile->new($_);
+ return unless($file);
+ my $changes=0;
+ $changes = do_deletes($file);
+ $changes += do_adds($file);
+ if($changes)
+ {
+ do_write($file);
+ }
+ else
+ {
+ do_display($file);
+ }
}
}