eyeD3 - displays and manipulates id3-tags on mp3 files
eyeD3 [
options] PATH [
PATH...]
eyeD3 Manipulates ID3 tags in mp3 files and is able to read/write and
convert between ID3 v1.0, v1.1, v2.3 and v2.4 tags. High-level access is
provided to most frames, including APIC (i.e., images) frames.
The
eyeD3 command line interface is based on plugins that operates on
files. To list the available plugins use the
--plugins option and to
select a plugin pass its name using
--plugin=NAME.
The
PATH argument(s) along with optional usage of
--exclude are
used to tell
eyeD3 what files or directories to process. Directories
are searched recursively and every file encountered is passed to the selected
plugin until no more files are found.
-
-h, --help
- Show a brief help string and exit.
- --version
- Display version information and exit
-
--exclude=PATTERN
- A regular expression for path exclusion. May be specified
multiple times.
-
-L, --plugins
- List all available plugins.
-
-P NAME, --plugin=NAME
- Specify which plugin to use. The default is
´classic'
-
-C FILE, --config=FILE
- Supply a configuration file. The default is
´~/.eyeD3/config.ini', although even that is optional.
- --no-config
- Do not load the default user config
´~/.eyeD3/config.ini'. The -c/--config options are still honored if
present.
- --backup
- Plugins should honor this option such that a backup is made
of any file modified. The backup is made in same directory with a
´.orig' extension added.
-
-Q, --quiet
- A hint to plugins to output less.
-
--fs-encoding=ENCODING
- Use the specified file system encoding for filenames.
Default is detected from the current locale, overriding is useful for
example when reading from mounted file systems.
- --no-color
- Suppress color codes in console output. This will happen
automatically if the output is not a TTY (e.g. when redirecting to a file)
-
-l LEVEL[:LOGGER],
--log-level=LEVEL[:LOGGER]
- Set a log level. This option may be specified multiple
times. If a logger name is specified than the level applies only to that
logger, otherwise the level is set on the top-level logger. Acceptable
levels are ´debug', ´verbose', ´info',
´warning', ´error', ´critical'.
- --profiler
- Run using python profiler.
- --debugger
- Drop into python debugger when errors occur.
This plugin is the classic eyeD3 interface for viewing and editing tags.
All
PATH arguments are parsed and displayed. Directory paths are searched
recursively. Any editing options (
--artist,
--title) are
applied to each file read.
All date options (
--release-year excepted) follow ISO 8601 format. This
is ´yyyy-mm-ddThh:mm:ss'. The year is required, and each component
thereafter is optional. For example, "2012-03" is valid,
"2012--12" is not.
-
-a STRING, --artist=STRING
- Set the artist name.
-
-A STRING, --album=STRING
- Set the album name.
-
-b STRING, --album-artist=STRING
- Set the album artist name. "Various Artists", for
example. Another example is collaborations when the track artist might be
"Eminem featuring Proof" the album artist would be
"Eminem".
-
-t STRING, --title=STRING
- Set the track title.
-
-n NUM, --track=NUM
- Set the track number. Use 0 to clear.
-
-N NUM, --track-total=NUM
- Set total number of tracks. Use 0 to clear.
-
--track-offset=N
- Increment/decrement the track number by [-]N. This option
is applied after --track=N is set.
-
-d NUM, --disc-num=NUM
- Set the disc number. Use 0 to clear.
-
-G GENRE, --genre=GENRE
- Set the genre. If the argument is a standard ID3 genre name
or number both will be set. Otherwise, any string can be used. Use
--plugin=genres for a list of standard ID3 genre names/ids.
-
-Y YEAR, --release-year=YEAR
- Set the year the track was released. Use the date options
for more precise values or dates other than release.
-
-c STRING, --comment=STRING
- Set a comment. In ID3 tags this is the comment with an
empty description. See --add-comment to add multiple comment
frames.
-
--rename=PATTERN
- Rename file (the extension is not affected) based on data
in the tag using substitution variables: $album, $album_artist, $artist,
$best_date, $best_date:prefer_recording, $best_date:prefer_recording:year,
$best_date:prefer_release, $best_date:prefer_release:year,
$best_date:year, $disc:num, $disc:total, $file, $file:ext,
$original_release_date, $original_release_date:year, $recording_date,
$recording_date:year, $release_date, $release_date:year, $title,
$track:num, $track:total.
-1, --v1 Only read and write ID3 v1.x tags. By default, v1.x tags
are only read or written if there is not a v2 tag in the file.
-
-2, --v2
- Only read/write ID3 v2.x tags. This is the default unless
the file only contains a v1 tag.
- --to-v1.1
- Convert the file's tag to ID3 v1.1 (Or 1.0 if there is no
track number).
- --to-v2.3
- Convert the file's tag to ID3 v2.3.
- --to-v2.4
- Convert the file's tag to ID3 v2.4
-
--release-date=DATE
- Set the date the track/album was released
-
--orig-release-date=DATE
- Set the original date the track/album was released.
-
--recording-date=DATE
- Set the date the track/album was recorded
-
--encoding-date=DATE
- Set the date the file was encoded
-
--tagging-date=DATE
- Set the date the file was tagged
-
--publisher=STRING
- Set the publisher/label name
-
--play-count=[+]N
- Set the number of times played counter. If the argument
value begins with ´+' the tag's play count is incremented by N,
otherwise the value is set to exactly N.
-
--bpm=N
- Set the beats per minute value.
-
--unique-file-id=OWNER_ID:ID
- Add a unique file ID frame. If the ID arg is empty the
frame is removed. An OWNER_ID is required. The ID may be no more than 64
bytes.
-
--add-comment=COMMENT[:DESCRIPTION[:LANG]]
- Add or replace a comment. There may be more than one
comment in a tag, as long as the DESCRIPTION and LANG values are unique.
The default DESCRIPTION is ´' and the default language code is
´eng'.
-
--remove-comment=DESCRIPTION[:LANG]
- Remove comment matching DESCRIPTION and LANG. The default
language code is ´eng'.
- --remove-all-comments
- Remove all comments from the tag.
-
--add-lyrics=LYRICS_FILE[:DESCRIPTION[:LANG]]
- Add or replace a lyrics. There may be more than one set of
lyrics in a tag, as long as the DESCRIPTION and LANG values are unique.
The default DESCRIPTION is '' and the default language code is 'eng'.
-
--remove-lyrics=DESCRIPTION[:LANG]
- Remove lyrics matching DESCRIPTION and LANG. The default
language code is 'eng'.
- --remove-all-lyrics
- Remove all lyrics from the tag.
-
--text-frame=FID:TEXT
- Set the value of a text frame. To remove the frame, specify
an empty value. For example, --text-frame="TDRC:"
-
--user-text-frame=DESC:TEXT
- Set the value of a user text frame (i.e., TXXX). To remove
the frame, specify an empty value. e.g.,
--user-text-frame="SomeDesc:"
-
--user-url-frame=DESCRIPTION:URL
- Set the value of a user URL frame (i.e., WXXX). To remove
the frame, specify an empty value. e.g.,
--user-url-frame="SomeDesc:"
-
--add-image=IMG_PATH:TYPE[:DESCRIPTION]
- Add or replace an image. There may be more than one image
in a tag, as long as the DESCRIPTION values are unique. The default
DESCRIPTION is ´'. If PATH begins with ´http[s]://' then it
is interpreted as a URL instead of a file containing image data. The TYPE
must be one of the following: OTHER, ICON, OTHER_ICON, FRONT_COVER,
BACK_COVER, LEAFLET, MEDIA, LEAD_ARTIST, ARTIST, CONDUCTOR, BAND,
COMPOSER, LYRICIST, RECORDING_LOCATION, DURING_RECORDING,
DURING_PERFORMANCE, VIDEO, BRIGHT_COLORED_FISH, ILLUSTRATION, BAND_LOGO,
PUBLISHER_LOGO.
-
--remove-image=DESCRIPTION
- Remove image matching DESCRIPTION.
- --remove-all-images
- Remove all images from the tag
-
--write-images=DIR
- Causes all attached images (APIC frames) to be written to
the specified directory.
-
--add-object=OBJ_PATH:MIME-TYPE[:DESCRIPTION[:FILENAME]]
- Add or replace an object. There may be more than one object
in a tag, as long as the DESCRIPTION values are unique. The default
DESCRIPTION is ´'.
-
--remove-object=DESCRIPTION
- Remove object matching DESCRIPTION.
- --remove-all-objects
- Remove all objects from the tag
-
--add-popularity=EMAIL:RATING[:PLAY_COUNT]
- Adds a pupularity metric. There may be multiples popularity
values, but each must have a unique email address component. The rating is
a number between 0 (worst) and 255 (best). The play count is optional, and
defaults to 0, since there is already a dedicated play count frame.
-
--remove-popularity=EMAIL
- Removes the popularity frame with the specified email
key.
- --remove-v1
- Remove ID3 v1.x tag.
- --remove-v2
- Remove ID3 v2.x tag.
- --remove-all
- Remove ID3 v1.x and v2.x tags.
-
--remove-frame=FID
- Remove all frames with the given ID. This option may be
specified multiple times.
-
--max-padding=UM_BYTES
- Shrink file if tag padding (unused space) exceeds the given
number of bytes. (Useful e.g. after removal of large cover art.) Default
is 64 KiB, file will be rewritten with default padding (1 KiB) or max
padding, whichever is smaller.
-
--encoding=latin1|utf8|utf16|utf16-be
- Set the encoding that is used for all text frames. This
option is only applied if the tag is updated as the result of an edit
option (e.g. --artist, --title, etc.) or --force-update is specified.
--force-update Rewrite the tag despite there being no edit options.
- --preserve-file-times
- When writing, do not update file modification times.
Execution of a plugin other than ´classic' is possible through the
--plugin option.
This plugin manages art files and tags for albums, artists, etc...
Options --update-files and --update-tags are mutually exclusive.
- --update-files
- Write art files from tag images.
- --update-tags
- Write tag image from art files.
Performs various checks and fixes to directories of audio files.
Operates on directories at a time, fixing each as a unit (album, compilation,
live set, etc.). All of these should have common dates, for example but other
characteristics may vary. The --type should be used whenever possible,
´lp' is the default.
The following tests and fixes always apply:
- 1.
- Every file will be given an ID3 tag if one is missing.
- 2.
- Set ID3 v2.4.
- 3.
- Set a consistent album name for all files in the directory.
- 4.
- Set a consistent artist name for all files, unless the type
is ´various' in which case the artist may vary (but must exist).
- 5.
- Ensure each file has a title.
- 6.
- Ensure each file has a track # and track total.
- 7.
- Ensure all files have a release and original release date,
unless the type is ´live' in which case the recording date is set.
- 8.
- All ID3 frames of the following types are removed: USER,
PRIV
- 9.
- All ID3 files have TLEN (track length in ms) set (or
updated).
- 10.
- The album/dir type is set in the tag. Types of ´lp'
and ´various' do not have this field set since the latter is the
default and the former can be determined during sync. In ID3 terms the
value is in TXXX (description: ´eyeD3#album_type').
- 11.
- Files are renamed as follows:
- •
- Type ´various': ${track:num} - ${artist} - ${title}
- •
- Type ´single': ${artist} - ${title}
- •
- All other types: ${artist} - ${track:num} - ${title}
- •
- A rename template can be supplied in
--file-rename-pattern
- 12.
- Directories are renamed as follows:
- •
- Type ´live': ${best_date:prefer_recording} -
${album}
- •
- All other types: ${best_date:prefer_release} - ${album}
- •
- A rename template can be supplied in
--dir-rename-pattern
Album types
- •
- ´lp': A traditinal "album" of songs from a
single artist. No extra info is written to the tag since this is the
default.
- •
- ´ep': A short collection of songs from a single
artist. The string "ep" is written to the tag's
´eyeD3#album_type' field.
- •
- ´various': A collection of songs from different
artists. The string "various" is written to the tag's
´eyeD3#album_type' field.
- •
- ´live': A collection of live recordings from a
single artist. The string "live" is written to the tag's
´eyeD3#album_type' field.
- •
- ´compilation': A collection of songs from various
recordings by a single artist. The string "compilation'"is
written to the tag's ´eyeD3#album_type' field. Compilation dates,
unlike other types, may differ.
- •
- ´demo': A demo recording by a single artist. The
string "demo" is written to the tag's ´eyeD3#album_type'
field.
- •
- ´single': A track that should no be associated with
an album (even if it has album metadata). The string "single" is
written to the tag's ´eyeD3#album_type' field.
-
-t TYPE, --type TYPE
- One of the album types. How to treat each directory. The
default is "lp" although you may be prompted for an alternate
choice if the files look like another type.
- --fix-case
- Fix casing on each string field by capitalizing each
word.
-
-n, --dry-run
- Only print the operations that would take place, but do not
execute them.
- --no-prompt
- Exit if prompted.
- --dotted-dates
- Separate date with ´.' instead of ´-' when
naming directories.
-
--file-rename-pattern FILE_RENAME_PATTERN
- Rename file (the extension is not affected) based on data
in the tag using substitution variables: $album, $album_artist, $artist,
$best_date, $best_date:prefer_recording, $best_date:prefer_recording:year,
$best_date:prefer_release, $best_date:prefer_release:year,
$best_date:year, $disc:num, $disc:total, $file, $file:ext,
$original_release_date, $original_release_date:year, $recording_date,
$recording_date:year, $release_date, $release_date:year, $title,
$track:num, $track:total
-
--dir-rename-pattern DIR_RENAME_PATTERN
- Rename directory based on data in the tag using
substitution variables. Available substitution are the same as in
--file-rename-pattern
Display the full list of standard ID3 genres.
ID3 v1 defined a list of genres and mapped them to to numeric values so they can
be stored as a single byte. It is
recommended that these genres are
used although most newer software (including eyeD3) does not care.
Adds (or removes) the tags necessary for Apple iTunes to identify the file as a
podcast.
- --add
- Add the podcast frames.
- --remove
- Remove the podcast frames.
Outputs lame header (if one exists) for file. The ´lame' (or xing) header
provides extra information about the mp3 that is useful to players and
encoders but not officially part of the mp3 specification. Variable bit rate
mp3s, for example, use this header.
For more details see <
http://gabriel.mp3-tech.org/mp3infotag.html>.
´xing' is an alias for this plugin.
Create NFO files for each directory scanned. Each directory scanned is treated
as an album and a NFO (<
http://en.wikipedia.org/wiki/.nfo>) file is
written to standard out.
NFO files are often found in music archives.
Computes statistics for all audio files scanned.
- --verbose
- Show details for each file with rule violations.
Outputs all tags in XEP-118 XML format.
See: <
http://xmpp.org/extensions/xep-0118.html>
Command line options can be read from a configuration file using the -C/--config
option. It expects a path to an Ini
(<
http://docs.python.org/2/library/configparser.html>) file contain
sections with option values. For a sample config file see
/usr/share/doc/eyeD3/examples/config.ini.
If the file ´${HOME}/.eyeD3/config.ini' exists it is loaded each time
eyeD3 is run and the values take effect. This can be disabled with
´--no-config'.
http://eyed3.nicfit.net/
eyeD3 was written by Travis Shirk <
[email protected]>.