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,
$delete_genre, $genre, $add_tags, $delete_tags, $overwrite_tagvals,
$delete_tagvals);
-Configure(qw(no_ignore_case));
+Configure(qw(bundling no_ignore_case));
my $optret=GetOptions(
"verbose|v" => \$verbose,
"help|h" => \$help,
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);
- 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);
+ }
}
}
$file->delete_year() if($delete_year);
$file->delete_v1genre() if($delete_v1genre);
$file->delete_comment() if($delete_comment);
- $file->delete_genre() if($delete_genre);
- $file->delete_tags($delete_tags, 0) if($delete_tags);
- $file->delete_tags($delete_tagvals, 1) if($delete_tagvals);
-
- my $donesomething=($delete_artist || $delete_album || $delete_track ||
- $delete_tracknum || $delete_year || $delete_v1genre ||
- $delete_comment || $delete_genre || $delete_tags ||
- $delete_tagvals);
+ $file->delete_genre() if($delete_genre || $genre);
+ $file->delete_tags($delete_tags, 0) if($delete_tags);
+ $file->delete_tags($delete_tagvals, 1) if($delete_tagvals);
+ $file->delete_tags($overwrite_tagvals, 1) if($overwrite_tagvals);
+
+ my $donesomething=($delete_artist || $delete_album || $delete_track ||
+ $delete_tracknum || $delete_year || $delete_v1genre ||
+ $delete_comment || $delete_genre || $delete_tags ||
+ $delete_tagvals || defined($genre) || $overwrite_tagvals);
return($donesomething ? 1 : 0);
}
$file->year($year) if($year);
$file->v1genre($v1genre) if($v1genre);
$file->comment($comment) if($comment);
- $file->genre($genre) if($genre);
$file->add_tags($add_tags) if($add_tags);
+ $file->add_tags($genre) if($genre);
+ $file->add_tags($overwrite_tagvals) if($overwrite_tagvals);
my $donesomething=(defined($artist) || defined($album) ||
defined($track) || defined($tracknum) ||
defined($year) || defined($v1genre) ||
defined($comment) || defined($genre) ||
- defined($add_tags));
+ defined($add_tags) || defined($overwrite_tagvals));
return( $donesomething ? 1 : 0 );
}
if(@tags)
{
if($verbose) { print " tags: "; }
- else { print $file->path() . ":tags:"; }
+# else { print $file->path() . ":tags:"; }
+ else { print "tags:"; }
print join(", ", @tags), "\n";
}
}