aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-07-19 02:26:00 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-07-19 02:31:58 +0300
commit8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b (patch)
tree2fedb59f1d083e4473bfcfa42954881fdd72cd51
parentebf9c1844f18aa22d49504d4deab4da0dbac6fc7 (diff)
downloadidest-8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b.tar.gz
idest-8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b.tar.bz2
Update
-rw-r--r--doc/idest.texi256
-rw-r--r--examples/Makefile.am5
-rw-r--r--examples/dry-run.scm14
-rw-r--r--examples/settitle.scm11
-rw-r--r--src/cmdline.opt2
5 files changed, 230 insertions, 58 deletions
<
diff --git a/doc/idest.texi b/doc/idest.texi
index f88b42a..bd6bad9 100644
--- a/doc/idest.texi
+++ b/doc/idest.texi
@@ -73,6 +73,7 @@ documents IdEst @value{VERSION}.
73* Frames:: ID3 Frames 73* Frames:: ID3 Frames
74* View:: Viewing Existing Tags 74* View:: Viewing Existing Tags
75* Modify:: Modifying Existing Tags 75* Modify:: Modifying Existing Tags
76* Copy:: Copying Tags Between Files
76* Delete:: Deleting Tags and Frames 77* Delete:: Deleting Tags and Frames
77* ID Versioning:: Storing Tags in Different ID3 Versions 78* ID Versioning:: Storing Tags in Different ID3 Versions
78* Structure:: Examining File Structure 79* Structure:: Examining File Structure
@@ -190,7 +191,7 @@ which identifies a frame.
190 191
191@cindex qualifiers 192@cindex qualifiers
192There are frames that can appear only once in a tag, and there are 193There are frames that can appear only once in a tag, and there are
193such that can appear multiple times. These latter have some 194ones that can appear multiple times. These latter have some
194additional fields which serve to discern between them. In 195additional fields which serve to discern between them. In
195@command{idest} parlance we call these fields frame @dfn{qualifiers}. 196@command{idest} parlance we call these fields frame @dfn{qualifiers}.
196The number and semantics of qualifiers are frame-dependent. For 197The number and semantics of qualifiers are frame-dependent. For
@@ -215,6 +216,7 @@ name can be omitted. Such an empty qualifier works as a
215@samp{COMM::my-comment} select the @samp{COMM} frames with content 216@samp{COMM::my-comment} select the @samp{COMM} frames with content
216descriptor @samp{my-comment}, no matter what their language. 217descriptor @samp{my-comment}, no matter what their language.
217 218
219@anchor{list-frames}
218@xopindex{list-frames, introduced} 220@xopindex{list-frames, introduced}
219To examine the qualifiers a particular frame has, use the 221To examine the qualifiers a particular frame has, use the
220@option{--list-frames} (@option{-L}) option. It lists all the supported 222@option{--list-frames} (@option{-L}) option. It lists all the supported
@@ -233,6 +235,7 @@ The output it produces consists of two columns: the first one shows
233the frame ID and its qualifiers (if any). The second one contains a 235the frame ID and its qualifiers (if any). The second one contains a
234short description of this frame purpose. 236short description of this frame purpose.
235 237
238@anchor{filter--list-frames}
236@xopindex{filter, introduced} 239@xopindex{filter, introduced}
237To select one or several frames of interest, give their names as 240To select one or several frames of interest, give their names as
238argument (a comma-separated list) to the @option{--filter} 241argument (a comma-separated list) to the @option{--filter}
@@ -283,6 +286,7 @@ year: 1995
283genre: Folk 286genre: Folk
284@end example 287@end example
285 288
289@anchor{filter--query}
286@xopindex{filter, in query mode} 290@xopindex{filter, in query mode}
287If you wish to display another frames, use the @option{--filter} 291If you wish to display another frames, use the @option{--filter}
288(@option{-F}) option: 292(@option{-F}) option:
@@ -317,7 +321,7 @@ Encoded by: lame
317 321
318@anchor{describe} 322@anchor{describe}
319To describe frames in a verbose manner, use the @option{--describe} 323To describe frames in a verbose manner, use the @option{--describe}
320(@option{-D}) option'' 324(@option{-D}) option:
321 325
322@example 326@example
323$ idest --describe --filter=artist,title,year file.mp3 327$ idest --describe --filter=artist,title,year file.mp3
@@ -426,14 +430,14 @@ frames that require it:
426$ idest --set comment:eng:My_comment='Noise reduction on' track01.mp3 430$ idest --set comment:eng:My_comment='Noise reduction on' track01.mp3
427@end example 431@end example
428 432
429If a comment with this content descriptor exists, its content will be 433In the example above, if a comment with this content descriptor
430replaced with the new one. If not, a new comment frame will be 434exists, its content will be replaced with the new one. If not, a new
431created. 435comment frame will be created.
432 436
433If comment is given without a particular content descriptor, all 437If a frame which can appear multiple times (such as e.g. comment) is
434existing comments will be removed and a new comment frame will be 438being set without qualifiers, all existing frames of this type will be
435added. Its content descriptor field will be empty and its 439removed and replaced with a new one. Its qualifiers will be set to
436language field will be set to @samp{XXX}. 440default values.
437 441
438@xopindex{latin1, using with --set} 442@xopindex{latin1, using with --set}
439Textual fields will be saved in the UTF-8 encoding. To store them 443Textual fields will be saved in the UTF-8 encoding. To store them
@@ -443,6 +447,40 @@ in ISO-8859-1, use the @option{--latin1} option:
443$ idest --latin1 --set artist='Llu@'is Llach' *.mp3 447$ idest --latin1 --set artist='Llu@'is Llach' *.mp3
444@end example 448@end example
445 449
450@node Copy
451@chapter Copying Tags Between Files
452@xopindex{copy, described}
453 To copy tags from one file to another, use the @option{--copy}
454(@option{-c}) option. Its argument supplies the @dfn{source file}.
455Non-optional arguments supply destination files:
456
457@example
458$ idest --copy sample.mp3 track1.mp3 track2.mp3
459@end example
460
461As a result of this operation all tags from @file{sample.mp3} will be
462copied to @file{track1.mp3} and @file{track2.mp3}.
463
464@anchor{filter--copy}
465@xopindex{--filter, used with @option{--copy}}.
466As with another operations, you can abridge the scope of copying to
467a certain subset of frames by using the @option{--filter} option,
468e.g.:
469
470@example
471$ idest --copy sample.mp3 --filter TPE1,TCOM track1.mp3 track2.mp3
472@end example
473
474You can also use @option{--copy} together with @option{--set} in a
475single invocation. In this case, the frames will first be copied from
476the source file and then the resulting tags will be modified according
477to the @option{--set} options. For example:
478
479@example
480$ idest --copy sample.mp3 --filter TPE1,TCOM \
481 --set year=2003 track1.mp3 track2.mp3
482@end example
483
446@node Delete 484@node Delete
447@chapter Deleting Tags and Frames 485@chapter Deleting Tags and Frames
448 486
@@ -458,7 +496,8 @@ $ idest --delete *.mp3
458 After this operation, all ID3 data are irrevocably lost, so use it 496 After this operation, all ID3 data are irrevocably lost, so use it
459with caution. 497with caution.
460 498
461@xopindex{filter, used with --delete} 499@anchor{filter--delete}
500@xopindex{filter, used with @option{--delete}}
462 A list of frame names can be given either with the @option{--filter} 501 A list of frame names can be given either with the @option{--filter}
463option, or (for compatibility with @command{idest} 1.x) as an argument to 502option, or (for compatibility with @command{idest} 1.x) as an argument to
464@option{--delete} (similarly to @option{--query}). For example, to 503@option{--delete} (similarly to @option{--query}). For example, to
@@ -483,6 +522,9 @@ form:
483$ idest --delete --filter=comment::Bit_Rate track01.mp3 522$ idest --delete --filter=comment::Bit_Rate track01.mp3
484@end example 523@end example
485 524
525The same applies to other frames that can appear multiple times
526(@pxref{Frames}).
527
486@node ID Versioning 528@node ID Versioning
487@chapter Storing Tags in Different ID3 Versions 529@chapter Storing Tags in Different ID3 Versions
488 530
@@ -542,7 +584,7 @@ a sequence of keyword / value pairs, as shown in the example below:
542$ idest --info jt_lluny.mp3 584$ idest --info jt_lluny.mp3
543file: jt_lluny.mp3 585file: jt_lluny.mp3
544ntags: 2 586ntags: 2
545version: 24.0 587version: 2.4.0
546offset: 0 588offset: 0
547length: 2131 589length: 2131
548version: 1.1 590version: 1.1
@@ -553,10 +595,9 @@ length: 128
553The first two lines show the name of the input file and the number of 595The first two lines show the name of the input file and the number of
554ID3 tags in it. Following are tag descriptions formatted as three 596ID3 tags in it. Following are tag descriptions formatted as three
555values for each tag. The @samp{version} line shows the tag version 597values for each tag. The @samp{version} line shows the tag version
556(major and minor numbers, separated by a dot). The major number greater 598(major and minor numbers, separated by dots). The @samp{offset} line
557than 1 means it is a ID3v2 tag. The @samp{offset} line shows the 599shows the offset of this tag in the file, and the @samp{length} line
558offset of this tag in the file, and the @samp{length} line contains 600contains size of this tag in bytes.
559size of this tag in bytes.
560 601
561@node Scripting 602@node Scripting
562@chapter Scripting 603@chapter Scripting
@@ -583,6 +624,9 @@ to this option specifies the name of the script file:
583$ idest --script list.scm *.mp3 624$ idest --script list.scm *.mp3
584@end example 625@end example
585 626
627You can omit the @samp{.scm} suffix, as @command{idest} will try it
628automatically (see below).
629
586 When this option is given, the following operations are performed: 630 When this option is given, the following operations are performed:
587 631
588@enumerate 1 632@enumerate 1
@@ -621,6 +665,12 @@ The default load path is formed as follows:
621@samp{$GUILE_SITE} is as described above and @var{load-path} is 665@samp{$GUILE_SITE} is as described above and @var{load-path} is
622the default value of @code{%load-path}. 666the default value of @code{%load-path}.
623 667
668The script is loaded via @code{primitive-load-path} (@pxref{Loading,,
669primitive-load-path,guile,The Guile Reference Manual}), so
670@command{idest} will consult the @code{%load-extensions} list and
671try suffixes from that list as described in
672@ref{Loading,,%load-extensions,guile,The Guile Reference Manual}).
673
624@item 674@item
625The script is read and evaluated. 675The script is read and evaluated.
626 676
@@ -628,9 +678,10 @@ The script can access command line arguments via the usual
628@code{command-line} function (@pxref{Runtime 678@code{command-line} function (@pxref{Runtime
629Environment,,command-line,guile,The Guile Reference Manual}). It 679Environment,,command-line,guile,The Guile Reference Manual}). It
630can also modify the argument list (e.g. by removing its command 680can also modify the argument list (e.g. by removing its command
631line options). Any changes it does to the argument list become 681line options). It must not, however, modify @samp{argv[0]}. Any
632visible to @command{idest}. The only requirement is that the modified 682changes it does to the argument list become visible to
633argument list must contain only input file names. 683@command{idest}. The only requirement is that the modified argument