IdEst -- history of user-visible changes. 2015-11-06 Copyright (C) 2009-2011, 2015 Sergey Poznyakoff See the end of file for copying conditions. Please send bug reports to Version 2.0.90 (Git) * The --convert option can be used to remove unnecessary ID3 formats. For example, if the file input.mp3 contains both version 1 and 2 tags, the following will remove version 1 tags: idest --convert=2 input.mp3 * Fix processing of unknown frames. * Fix operation of setpic and pic modules with Guile 2.x. * Improve documentation Version 2.0 "PW", 2011-08-01 * New option --info (-i) idest --info shows information about input file structure. * Set mode shortcut. When setting frames, you can omit the `--set' option from all assignments, except the first one, e.g.: idest --set track=1 year=1985 album=Maremar track01.mp3 * New option --copy (-c) The `--copy=FILE' option copies frames from FILE to each file from the file list. All frames are copied, unless the `--filter' option is specified (see below), in which case only the listed frames are copied. The `--copy' option can be used together with `--set', `--script' and `--batch' options. * New option --filter (-F) The `--filter=FRAME-LIST' option can be used in conjunction with `--query', `--copy' and `--delete'. It abridges the scope of operation to the fields from FRAME-LIST. The `--delete --filter=FRAME-LIST' is equivalent to `--delete=FRAME-LIST'. * New option --list-frames (-L) Lists the supported frame IDs, along with their qualifiers and descriptions. * The --convert option The argument to `--convert' option is either a single major version number or a comma-separated list of version numbers. * The --id-version option The semantics of the `--id-version' option has changed. Now it instructs the program to write new and changed tags in the specified major ID3 format (1 or 2). In the contrast to the `--convert' option, this option does not affect files which underwent no changes. The argument to `--id-version' option is either a single major version number or a comma-separated list of version numbers. * New option --default-id-version (-U) The `--default-id-version' option sets the default ID3 version to use. It differs from `--id-version' (`-V') in that the default version is used only if the input file originally had no ID3 tags. * New option --describe (-D) Prints verbose frame descriptions instead of their short names. * The `--script' option. The `--script' (`-S') option stops further argument processing and passes the rest of command line as arguments to the script. The script can modify the arguments (e.g. by removing its command-line options). The modified arguments are then returned to idest and processed as a list of input file names. * Argument to the --script option is searched in the %load-path. This feature is disabled if the argument contains directory separators (/). * New option --dry-run The `--dry-run' (`-n') option can be used together with `--script' or `--batch' options. It instructs idest to print all the modifications the script produced without actually applying them to the file(s). Use it to check whether your scripts work in the expected way and correctly modify the frames. For example, to test the script `modify.scm' run idest --dry-run --script modify.scm *.mp3 * New option --format The `--format=NAME' (`-H NAME') option instructs idest to run a user-defined format NAME. This option stops further argument processing and passes the rest of command line as argument to the format script. To obtain a list of available formats along with short descriptions of them, run `idest --format=help'. See also `User-defined formats and batch scripts', below. * New option --batch The `--batch=NAME' (`-B NAME') option instructs idest to run a user-defined batch modification module NAME. This option stops further argument processing and passes the rest of command line as argument to the batch script. To obtain a list of available batch scripts along with short descriptions of them, run `idest --batch=help'. See also `User-defined formats and batch scripts', below. * The --delete option takes optional argument The argument, if supplied, is a comma-separated list of the frame names to delete. * Frame qualifiers are displayed at the output. Certain frames hold a set of additional fields, apart from their actual value and can appear mutliple times provided that those additional field differ. We call these fields "frame qualifiers". For example, comment frames (COMM) have two qualifiers: language and content descriptor. In query mode, qualifiers are displayed after the corresponding frame name and are separated by colons, e.g.: comment:eng:RESULT: value comment:eng:CDDB_TrackNumber: 8 * All idest operations accept qualified frame names. The full syntax is: NAME:QUAL Where NAME is a frame name or ID and QUAL stands for a list of qualifiers separated by colons. Empty qualifiers and '*' act as wildcards, matching any actual field value. For example: --query title,comment::my-comment --delete=comment:eng:my-comment --set comment:esp:mi-comentario="Valor de prueba" --set comment::my-comment="Test value" * Frame display names in query mode Frame specifications in query mode can contain optional "frame display name". When present, it will be displayed instead of the frame ID. The full syntax is: NAME%ID[:QUAL] (See above for a description of the optional QUAL part). For example: idest --query=Title%TIT2,Artist%TPE1,Author%TOLY,Composer%TCOM *.mp3 * Changes in Scheme representation of frame lists. Each frame in the list is represented by a cons. The car of this cons is the frame name (a string). Its cdr is an association list of the frame properties. The keys in this list are property IDs (Scheme symbols). The following properties are defined for all frames: descr frame description text value of this frame More properties are defined at a per-frame basis to represent frame qualifiers. For example, for "comment" (COMM) frames: lang a three-letter code of the language in which the text is written condesc content descriptor Unsupported or partially-supported frames contain a single property: rawdata. The value of this property is a list of frame fields. Each field is represented by a triplet (ORD TYPE VALUE), where ORD is the ordinal number of that field in frame, TYPE is its type (integer) and VALUE is its value (string). If TYPE is one of numeric types, VALUE is the numeric value converted to string (string->number will bring it back to number). If TYPE is a string type, VALUE contains the string in the appropriate encoding. Otherwise, VALUE holds the field value as a binary string. Each byte in such a string is represented by two hexagesimal digits. For example, "AB\n" is represented as 41420A. * Guile startup files. When run with the --script option, idest searches for files .idest.scm, $HOME/.idest.scm and $GUILE_SITE/idest/idest.scm (where HOME is the user home directory and GUILE_SITE is Guile site-wide directory). The first of them which is found is loaded as a Scheme source file. * Guile scripts can access and modify command line arguments. See "The `--script' option" above. * User-defined formats and batch scripts. User-defined formats provide a convenient way to extend `idest' functionality. A format is a Guile script. It differs from the usual scripts in that it is written as a module and stored in directory "idest/format", somewhere in the %load-path. Formats are invoked using the `--format' (`-H') option (see above). Several formats are shipped with the idest. Batch scripts are similar to formats, except that they provide a way to modify tags. Batch scripts are stored in "idest/format" directory and are called via the `--batch' (`-B') option (see above). Version 1.2, 2011-04-10 * Compiles with Guile 2.0 * New option --verbose * Improve signal handling Version 1.1, 2009-03-29 Fix bug that caused endless loop on multiple ID3v2 comment frames. Version 1.0, 2009-03-19 Initial release. ========================================================================= Copyright information: Copyright (C) 2009-2011, 2015 Sergey Poznyakoff Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last changed them. Local variables: mode: outline paragraph-separate: "[ ]*$" eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "changes. " time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\n" end: