squell / id3

ID3 mass tagger
https://squell.github.io/id3
Other
117 stars 7 forks source link
c-plus-plus id3 id3v1 id3v2 mp3 tagging

| ' \/ ` | ' \/ -) |||_,|||____|

   id3 - a command line mass tagger

                      _    

_ _ () (-< || | ' \/ \ ' (-< (-< //_, |||_/ ./_/// |/ |_|
id3 [-v] [-m] [-123] [-d] [-t title] [-a artist] [-l album] [-n tracknr] [-y year] [-g genre] [-c comment] [-f template] [-q format] [-D file] [-R] [-M] [-E] [-s size] [-u] [-rFRAME] [-wFRAME data] "filespec"

_                _      _   _          

| |__ () | |()
/
` / -|-</ | '| | ' \ | / \ ' \ _,\
//_|| || ./\|_/||| |_|
id3 mass tagger is a tool for listing and manipulating ID3 and Lyrics3 tags in multiple files. It can generate tag fields from the filename and other variables, and/or rename files, using an intuitive syntax.

   id3  currently supports old-style ID3v1 tags, Lyrics3v2, as well as the
   more complex ID3v2 format.  This means its  use  is  limited  to  audio
   files which use these formats, i.e. MPEG-1 Layer III.

      _   _             

| |() / \ ' \ | / \ ' (-< _/ ./_|__/||// |_|
Order of the options is only important where specified.

   filespec ...
      specifies the file(s) to be affected by the command.

      When using wildcards, enclose the specification in quotes in or-
      der for pattern matching to work; see SUBSTITUTION below.

   -h, --help
      show command line help

   -V, --version
      display version number and copyright

   -v, --verbose
      be verbose

   -1     process/add ID3v1 tags.

   -2     process/add ID3v2 tags.

   -3     process/add Lyrics3 tags.

      If more than one tag type is specified, they  are  all  written,
      and the left-most one that is found is used for variable substi-
      tution. If no tag type is specified, id3 will by default attempt
      to read ID3v2, Lyrics3 and ID3v1 tags in that order, only modify
      existing ID3v2 and Lyrics3 tags, and modify/add ID3v1 tags.

   -R, --recursive
      searches recursively; When this is  enabled,  `*'  wildcards  in
      filespec will also match against directory separators. Normally,
      this is not the case.

   -M, --keep-time
      preserve last modification time of files operated on

   -X, --no-glob
      disable internal globbing; as a consequence, the pattern  match-
      ing  functionality  will  not  be available.  Use this switch to
      force the treatment of filespec arguments as  simple  filenames,
      which might be useful if id3 is being called by shell scripts or
      other programs

   --     force the following argument to be interpreted  as  a  filename.
      Use this for files that start with a `-' (dash).

Modifying operations The default operation of id3 is to list the tags found. By using any of the following options, this behaviour is inhibited.

   -d, --delete
      do not re-use existing tag data. If no new  tag  information  is
      specified  in  conjunction  with  this option, all selected tags
      will be removed.

   -t title,           --title title
   -a artist,          --artist artist
   -l album,   -A album,   --album album
   -n tracknr, -T tracknr, --track tracknr
   -y year,            --year year
   -g genre,           --genre genre
   -c comment,         --comment comment

      add/replace the specified fields in all selected tags  with  the
      values  given.  Field  values are scanned for substitution vari-
      ables, see SUBSTITUTION below. If a  field  value  is  a  single
      variable, and its substitution fails, no operation is performed.

      Genres  can  be  specified either verbatim or by using their as-
      signed number, regardless of tag format.

   -f filename-template, --rename filename-template
      rename files encountered according  to  filename-template.   The
      argument  is  scanned for substitution variables. An empty vari-
      able will by default get replaced with "Unknown".  Trying to re-
      name to an already existing file will cause an error.

   -q format, --query format
      for each file encountered, format will get scanned for substitu-
      tion variables, and written to standard output. Using  this  op-
      tion will block any attempt to modify files.

   -m, --match
      match  mode; interpret any substitution variables (see SUBSTITU-
      TION below) found in a filespec as a wildcard, and set the  cor-
      responding tag field to the matched portion of the filename.

      Thus,    `id3   -m "%a - %t.mp3"'   is   short-hand   for   `id3
      -a %1 -t %2 "* - *.mp3"'.

   -D filename, --duplicate filename
      duplicate and copy the tags found  in  filename  to  the  target
      files.  The  tag in each target file is replaced after any vari-
      ables have been read, but before any fields are updated.

      Any original tag values not explicitly written to  the  new  tag
      (for  example,  by using -u) are lost. If filename does not have
      any tags, this option is identical to the -d option.

   -L, --list-genres
      produces a list of genres usable in ID3v1 tags,  and  their  as-
      signed numbers

   The  following options only apply on the tag most recently selected be-
   fore them, and only have meaning where relevant.

   -E, --if-exists
      only write a tag of the most recently selected type  if  a  file
      already contains it; do not add new ones.

   -u, --update
      update  all  standard tag fields by copying them from the source
      tag. This is similar to writing `-talnygc %t %a %l %n %y %g %c',
      but only operates on the most recent tag. It is possible for the
      source and destination tag to be the same.

   -s size, --size size
      try to write a new tag using exactly size bytes, adding / remov-
      ing padding as necessary. The resulting tag will have no padding
      if size is smaller than the actual size necessary.

   -rFRAME, --remove=FRAME
      remove occurrences of frames named FRAME from the  tag.  Consult
      the  format  documentation  for  valid  FRAME  names.   For text
      frames, it is equivalent to `-wFRAME ""'.

   -wFRAME data, --frame=FRAME data
      add / update a frame named FRAME with data in the  tag.  data is
      scanned  for  substitution  variables. Again, consult the format
      documentation. See COMPATIBILITY for more information.

   Short-form options can be stacked in a single argument for more  conve-
   nience.  For example, running

  id3 -2d -alt "Artist" "Album" "Title" *.mp3

   is equivalent to:

  id3 -2 -d -a "Artist" -l "Album" -t "Title" *.mp3

     _       _   _ _        _   _          

_ | | | |() | | |(_)__
(
-< || | ' (-< | | | || | | / \ ' \ /
/_,|.//_||_|_,|_|__/||_|

   id3 can perform "printf-like" substitution on the values prior to writ-
   ing them to a tag. Note that if you want to use pattern  matching,  you
   HAVE  TO  enclose  the  wildcard  specification  on the command line in
   quotes to prevent your shell from expanding any wildcards.

   \c     escape sequence. \n, \r, \t, \v, \f, \b, \a, get replaced as  in
      C,  any other character will be stripped of any special meaning.
      E.g., \n becomes the newline character, \\ a single backslash.

   %<modifiers>N
      where N <- [0..9]
      replaced with the portion of the file path matching the nth  `*'
      (asterisk)  wildcard  in  the  file specification. 0 is taken to
      mean 10.

   %<modifiers>c
      where c <- [a..z]
      replaced by values according to the following table:

      %t title
      %a artist
      %l album title
      %n track number
      %y year
      %g genre
      %c comment field
      %f file name (without path)
      %p path to filename
      %x auto-increasing counter
      %X file counter

      Values get read (where applicable) from the source tag, which is
      the  left-most tag selected on the command line, and reflect the
      state of the file before any modifications  were  made.  If  the
      source  value  is  not  available, the variable fails.  "%_p%_f"
      combines to the raw full path and file name. The "%x" value gets
      increased every time it has been substituted inside the same di-
      rectory, and is intended for auto-numbering. "%X" increases  for
      every file processed.

   %<modifiers>{FRAME}
      replaced  by  the  content  of  the  FRAME frame in the selected
      source tag; any frame writeable with the -w option can be  used;
      see COMPATIBILITY for more information.

   %%     replaced with a single "%", equivalent to \%

   %|text||alt text||...|?
      substituted by the first text that was completely successful, or
      fails as empty, see fall-backs below. This can  be  used  as  an
      all-or-nothing substitution. A lone "%?" always fails.

Available (optional):