aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: 11c88f999d7537c3263a692aec38613a7f5b87ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
IdEst -- history of user-visible changes. 2016-11-17
Copyright (C) 2009-2011, 2015, 2016 Sergey Poznyakoff
See the end of file for copying conditions.

Please send bug reports to <bug-idest@gnu.org.ua>


Version 2.0.90 (Git)

* Convert textual frames to/from the currently used character set

The character set is deduced from the locale settings.  It can also be
set explicitly using the --charset option.

* New option --broken-8bit-encoding

Use this option for files where textual frames are stored as
ISO-8859-1, but are actually using another 8-bit encoding.  The
argument to this option is the name of the enchoding actually used.

In query mode, this option helps display such frames properly.

Use it with the --fixup option to fix such frames in the file.

* New option --encoding

Specifies encoding to store textual frames in ID3 tags.

* New option --fixup

Modifies the ID3 v2 tag so that it can be understood by most devices.

* 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, 2016 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:

Return to:

Send suggestions and report system problems to the System administrator.