aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: d0c9552536a4da35fe0a7fb9cf880a73f504a1df (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
IdEst -- history of user-visible changes. 2011-07-17
Copyright (C) 2009-2011 Sergey Poznyakoff
See the end of file for copying conditions.

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


Version 1.99.90, Git

* 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 and --script.

* 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 fields from FRAME-LIST.  The `--delete --filter=FRAME-LIST'
is equivalent to `--delete=FRAME-LIST'.

* New option --list-frames (-L)

Lists the supported frames 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
ID3 format.  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 --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.  Car of this
cons is the frame name (a string).  Its cdr is an association list
keeping this frame properties.  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.  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.

* Argument to the --script option is searched in the %load-path.

This feature is disabled if the argument contains directory separators
(/).

* Guile scripts can access and modify command line arguments.

* Test script `dry-run.scm'

The test script `dry-run.scm' is installed in the program script
directory.  It allows you 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 --script dry-run modify.scm *.mp3

The program will print input file names and frames produced by
`modify.scm' without actually touching your data.



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, 2010, 2011 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.