$delete_year, $delete_v1genre, $delete_comment, $delete_all,
$delete_genre, $genre, $add_tags, $delete_tags, @replace_tags);
-Configure(qw(bundling no_ignore_case));
+Configure(qw(no_ignore_case));
my $optret=GetOptions(
- "verbose|v" => \$verbose,
- "help|h" => \$help,
- "artist|a=s" => \$artist,
- "album|l=s" => \$album,
- "song|s=s" => \$track,
- "tracknum|n=s" => \$tracknum,
- "year|y=i" => \$year,
- "v1genre|1=s" => \$v1genre,
- "comment|c=s" => \$comment,
- "delete-artist|A" => \$delete_artist,
- "delete-album|L" => \$delete_album,
- "delete-song|S" => \$delete_track,
- "delete-tracknum|N" => \$delete_tracknum,
- "delete-year|Y" => \$delete_year,
- "delete-v1genre|0" => \$delete_v1genre,
- "delete-comment|C" => \$delete_comment,
- "delete|delete-all|D" => \$delete_all,
- "delete-genre|G|delete-tags" => \$delete_genre,
- "genre|g|replace-all-tags|R=s" => \$genre,
- "add-tags|tags|t=s" => \$add_tags,
- "delete-tags|T=s" => \$delete_tags,
- "replace-tags|r=s{2}" => \@replace_tags,
+ "verbose|v" => \$verbose,
+ "help|h" => \$help,
+ "artist|a=s" => \$artist,
+ "album|l=s" => \$album,
+ "song|s=s" => \$track,
+ "tracknum|n=s" => \$tracknum,
+ "year|y=i" => \$year,
+ "v1genre|1=s" => \$v1genre,
+ "comment|c=s" => \$comment,
+ "delete-artist|A" => \$delete_artist,
+ "delete-album|L" => \$delete_album,
+ "delete-song|S" => \$delete_track,
+ "delete-tracknum|N" => \$delete_tracknum,
+ "delete-year|Y" => \$delete_year,
+ "delete-v1genre|0" => \$delete_v1genre,
+ "delete-comment|C" => \$delete_comment,
+ "delete|delete-all|D" => \$delete_all,
+ "delete-genre|delete-all-tags|G" => \$delete_genre,
+ "genre|g|replace-all-tags|R=s" => \$genre,
+ "add-tags|tags|t=s" => \$add_tags,
+ "delete-tags|T=s" => \$delete_tags,
+ "replace-tags|r=s{2}" => \@replace_tags,
);
usage() if(!@ARGV || !$optret || $help);
die("Usage: $me [-vhALSNY0CDG] [-a ARTIST] [-l ALBUM] [-s SONG] [-n TRACKNUM] FILES...\n".
" $me [-y YEAR] [-g GENRE] [-1 V1GENRE] [-c COMMENT] [--] FILES...\n".
" $me [-t TAGS,TO,ADD] [-T TAGS,TO,DELETE] FILES...\n".
- " $me [-r TAGS,TO,DELETE, TAGS,TO,ADD] [-R TAGS,TO,OVERWRITE,WITH] FILES...\n".
-
- " verbose|v \n".
- " help|h \n".
- " artist|a=s \n".
- " album|l=s \n".
- " song|s=s \n".
- " tracknum|n=s \n".
- " year|y=i \n".
- " v1genre|1=s \n".
- " comment|c=s \n".
- " delete-artist|A \n".
- " delete-album|L \n".
- " delete-song|S \n".
- " delete-tracknum|N \n".
- " delete-year|Y \n".
- " delete-v1genre|0 \n".
- " delete-comment|C \n".
- " delete|delete-all|D \n".
- " delete-genre|G|delete-tags \n".
- " genre|g|replace-all-tags|R=s \n".
- " add-tags|tags|t=s \n".
- " delete-tags|T=s \n".
- " replace-tags|r=s{2} \n".
-
- " -d|--dir=PATH Base directory of source files (default: ARGV[0])\n".
- " -f|--database=FILE Path to database file (default: basedir/.id3fs)\n".
- " -e|--extensions=EXT1,EXT2 File extensions to index (default: mp3, ogg, flac)\n".
- " -l|list List tags in use\n" .
- " -v|--verbose Verbose\n".
- " -h|--help This help\n".
- " -- End of options\n");
+ " $me [-r TAGS,TO,DELETE TAGS,TO,ADD] [-R TAGS,TO,OVERWRITE,WITH] FILES...\n".
+ "With no options, displays current info in tag\n".
+ "Options:\n".
+ " -a|--artist=ARTIST Set artist\n".
+ " -l|--album=ALBUM Set album\n".
+ " -s|--song=SONG Set song\n".
+ " -n|--tracknum=NUM Set tracknum\n".
+ " -y|--year=NUM Set year\n".
+ " -1|--v1genre=GENRE Set ID3v1 genre\n".
+ " -c|--comment=COMMENT Set comment\n".
+ " -A|--delete-artist Delete artist\n".
+ " -L|--delete-album Delete album\n".
+ " -S|--delete-song Delete song\n".
+ " -N|--delete-tracknum Delete tracknum\n".
+ " -Y|--delete-year Delete year\n".
+ " -0|--delete-v1genre Delete ID3v1 genre\n".
+ " -C|--delete-comment Delete comment\n".
+ " -D|--delete|delete-all Delete entire ID3 tag\n".
+ " -G|--delete-genre|--delete-all-tags Delete all tags stored in genre\n".
+ " -g|-R|replace-all-tags|--genre=GENRE Replace all tags in genre tag\n".
+ " -t|--add-tags|tags=TAG1,TAG2 Add tags to genre tag, merging with existing ones\n".
+ " -T|--delete-tags=TAG1,TAG2 Delete tags from genre\n".
+ " -r|--replace-tags TAGS1 TAGS2 Replace TAGS1 in genre with TAGS2\n".
+ " -v|--verbose Verbose display\n".
+ " -h|--help This help\n".
+ " -- End of options\n");
}
__END__
return $self;
}
-sub artist
+sub set
{
- my $self=shift;
- return $self->sanitise($self->stripslashes($self->{audiofile}->artist()));
-}
-
-sub album
-{
- my $self=shift;
- return $self->sanitise($self->stripslashes($self->{audiofile}->album()));
+ my ($self, $thing, $value)=@_;
+ if($value)
+ {
+ $value=$self->sanitise($self->stripslashes($value));
+ $self->{audiofile}->$thing($value);
+ }
+ else
+ {
+ $value=$self->sanitise($self->stripslashes($self->{audiofile}->$thing()));
+ }
+ return $value;
}
-sub audiotype
-{
- my $self=shift;
- return $self->sanitise($self->stripslashes($self->{audiofile}->audiotype()));
-}
+sub artist { return(shift->set("artist", @_)); }
+sub album { return(shift->set("album", @_)); }
+sub track { return(shift->set("track", @_)); }
+sub tracknum { return(shift->set("tracknum", @_)); }
+sub v1genre { return(shift->set("v1genre", @_)); }
+sub comment { return(shift->set("comment", @_)); }
+sub audiotype { return(shift->set("audiotype")); }
+sub haspic { return(shift->set("haspic")); }
-sub haspic
-{
- return undef; # NEXTVERSION
-# my $self=shift;
-# return $self->{audiofile}->haspic();
-}
+sub delete_artist { shift->{audiofile}->delete_artist(); }
+sub delete_album { shift->{audiofile}->delete_album(); }
+sub delete_track { shift->{audiofile}->delete_track(); }
+sub delete_tracknum { shift->{audiofile}->delete_tracknum(); }
+sub delete_year { shift->{audiofile}->delete_year(); }
+sub delete_v1genre { shift->{audiofile}->delete_v1genre(); }
+sub delete_comment { shift->{audiofile}->delete_comment(); }
+sub delete_all { shift->{audiofile}->delete_all(); }
+sub delete_genre { shift->{audiofile}->delete_genre(); }
+sub delete_tags { shift->{audiofile}->delete_tags(); }
-sub v1genre
+sub year
{
- my $self=shift;
- return $self->sanitise($self->stripslashes($self->{audiofile}->v1genre()));
+ my ($self, $year)=@_;
+ if($year)
+ {
+ $year=$self->format_year($year);
+ $self->{audiofile}->year($year);
+ }
+ else
+ {
+ $year=$self->{audiofile}->year();
+ }
+ return $year;
}
-sub year
+sub format_year
{
- my $self=shift;
- my $year=$self->sanitise($self->stripslashes($self->{audiofile}->year()));
- if(defined($year) && $year =~/(\d{4})/)
+ my ($self, $year)=@_;
+ if($year)
{
- $year=$1;
+ $year=$self->sanitise($self->stripslashes($year));
+ if(defined($year) && $year =~/(\d{4})/)
+ {
+ $year=$1;
+ }
}
return $year;
}
+
+sub add_tags
+{
+ my($self, $tags)=@_;
+ die("FIXME: implement add_tags()\n");
+}
+
sub tags
{
my $self=shift;