my ($artist, $album, $track, $tracknum, $year, $v1genre, $comment,
$delete_artist, $delete_album, $delete_track, $delete_tracknum,
$delete_year, $delete_v1genre, $delete_comment, $delete_all,
- $delete_genre, $genre, $add_tags, $delete_tags, @replace_tags);
+ $delete_genre, $genre, $add_tags, $delete_tags, $overwrite_tagvals,
+ $delete_tagvals);
Configure(qw(no_ignore_case));
my $optret=GetOptions(
"delete-genre|delete-all-tags|G" => \$delete_genre,
"genre|g|replace-all-tags|R=s" => \$genre,
"add-tags|tags|t=s" => \$add_tags,
+ "overwrite-tagvals|tagvals|o=s" => \$overwrite_tagvals,
"delete-tags|T=s" => \$delete_tags,
- "replace-tags|r=s{2}" => \@replace_tags,
+ "delete-tags-with-values|O=s" => \$delete_tagvals,
);
usage() if(!@ARGV || !$optret || $help);
sub do_deletes
{
my($file)=@_;
- $file->delete_artist() if($delete_artist);
- $file->delete_album() if($delete_album);
- $file->delete_track() if($delete_track);
- $file->delete_tracknum() if($delete_tracknum);
- $file->delete_year() if($delete_year);
- $file->delete_v1genre() if($delete_v1genre);
- $file->delete_comment() if($delete_comment);
- $file->delete_all() if($delete_all);
- $file->delete_genre() if($delete_genre);
- $file->delete_tags($delete_tags) if($delete_tags);
- if(@replace_tags && $replace_tags[0])
+ if($delete_all)
{
- $file->delete_tags($replace_tags[0]);
+ $file->delete_all();
+ # we don't want to save the tag if we've deleted it
+ return 0;
}
-
- return($delete_artist || $delete_album || $delete_track ||
- $delete_tracknum || $delete_year || $delete_v1genre ||
- $delete_comment || $delete_all || $delete_genre ||
- $delete_tags || (@replace_tags && $replace_tags[0]));
+ $file->delete_artist() if($delete_artist);
+ $file->delete_album() if($delete_album);
+ $file->delete_track() if($delete_track);
+ $file->delete_tracknum() if($delete_tracknum);
+ $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);
+ $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 || $overwrite_tagvals);
+ return($donesomething ? 1 : 0);
}
sub do_adds
$file->comment($comment) if($comment);
$file->genre($genre) if($genre);
$file->add_tags($add_tags) if($add_tags);
- if(@replace_tags && $replace_tags[0])
- {
- $file->add_tags($replace_tags[1]);
- }
-
- return($artist || $album || $track || $tracknum || $year || $v1genre ||
- $comment || $genre || $add_tags || (@replace_tags && $replace_tags[0]));
+ $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($overwrite_tagvals));
+ return( $donesomething ? 1 : 0 );
}
sub do_write
sub do_display
{
my($file)=@_;
+ my $artist=$file->artist();
+ my $album=$file->album();
+ my $track=$file->track();
+ my $tracknum=$file->tracknum();
+ my $year=$file->year();
+ my $comment=$file->comment();
+ my $v1genre=$file->v1genre();
+ my @tags=$file->tags();
+ @tags = map { (ref($_) eq "ARRAY") ? join('/', grep {defined;} @{$_}) : $_; } @tags;
+ if($verbose)
+ {
+ print $file->path(), ":\n";
+ print " tracknum: $tracknum\n" if($tracknum);
+ print " artist: $artist\n" if($artist);
+ print " album: $album\n" if($album);
+ print " song: $track\n" if($track);
+ print " year: $year\n" if($year);
+ print " v1genre: $v1genre\n" if($v1genre);
+ print " comment: $comment\n" if($comment);
+ }
+ else
+ {
+ my @fields=($file->path(), $tracknum, $artist, $album, $track,
+ $year, $v1genre, $comment);
+ @fields=map { defined($_) ? $_ : ""; } @fields;
+ print join(':', @fields), "\n";
+ }
+ if(@tags)
+ {
+ if($verbose) { print " tags: "; }
+ else { print $file->path() . ":tags:"; }
+ print join(", ", @tags), "\n";
+ }
}
sub usage