diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-07-19 02:26:00 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-07-19 02:31:58 +0300 |
commit | 8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b (patch) | |
tree | 2fedb59f1d083e4473bfcfa42954881fdd72cd51 | |
parent | ebf9c1844f18aa22d49504d4deab4da0dbac6fc7 (diff) | |
download | idest-8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b.tar.gz idest-8335e1d85fe5cc6a9fc0146a1edf5f94aacdae6b.tar.bz2 |
Update
-rw-r--r-- | doc/idest.texi | 256 | ||||
-rw-r--r-- | examples/Makefile.am | 5 | ||||
-rw-r--r-- | examples/dry-run.scm | 14 | ||||
-rw-r--r-- | examples/settitle.scm | 11 | ||||
-rw-r--r-- | src/cmdline.opt | 2 |
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 |
192 | There are frames that can appear only once in a tag, and there are | 193 | There are frames that can appear only once in a tag, and there are |
193 | such that can appear multiple times. These latter have some | 194 | ones that can appear multiple times. These latter have some |
194 | additional fields which serve to discern between them. In | 195 | additional 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}. |
196 | The number and semantics of qualifiers are frame-dependent. For | 197 | The 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 |
216 | descriptor @samp{my-comment}, no matter what their language. | 217 | descriptor @samp{my-comment}, no matter what their language. |
217 | 218 | ||
219 | @anchor{list-frames} | ||
218 | @xopindex{list-frames, introduced} | 220 | @xopindex{list-frames, introduced} |
219 | To examine the qualifiers a particular frame has, use the | 221 | To 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 | |||
233 | the frame ID and its qualifiers (if any). The second one contains a | 235 | the frame ID and its qualifiers (if any). The second one contains a |
234 | short description of this frame purpose. | 236 | short description of this frame purpose. |
235 | 237 | ||
238 | @anchor{filter--list-frames} | ||
236 | @xopindex{filter, introduced} | 239 | @xopindex{filter, introduced} |
237 | To select one or several frames of interest, give their names as | 240 | To select one or several frames of interest, give their names as |
238 | argument (a comma-separated list) to the @option{--filter} | 241 | argument (a comma-separated list) to the @option{--filter} |
@@ -283,6 +286,7 @@ year: 1995 | |||
283 | genre: Folk | 286 | genre: 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} |
287 | If you wish to display another frames, use the @option{--filter} | 291 | If 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} |
319 | To describe frames in a verbose manner, use the @option{--describe} | 323 | To 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 | ||
429 | If a comment with this content descriptor exists, its content will be | 433 | In the example above, if a comment with this content descriptor |
430 | replaced with the new one. If not, a new comment frame will be | 434 | exists, its content will be replaced with the new one. If not, a new |
431 | created. | 435 | comment frame will be created. |
432 | 436 | ||
433 | If comment is given without a particular content descriptor, all | 437 | If a frame which can appear multiple times (such as e.g. comment) is |
434 | existing comments will be removed and a new comment frame will be | 438 | being set without qualifiers, all existing frames of this type will be |
435 | added. Its content descriptor field will be empty and its | 439 | removed and replaced with a new one. Its qualifiers will be set to |
436 | language field will be set to @samp{XXX}. | 440 | default values. |
437 | 441 | ||
438 | @xopindex{latin1, using with --set} | 442 | @xopindex{latin1, using with --set} |
439 | Textual fields will be saved in the UTF-8 encoding. To store them | 443 | Textual 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}. | ||
455 | Non-optional arguments supply destination files: | ||
456 | |||
457 | @example | ||
458 | $ idest --copy sample.mp3 track1.mp3 track2.mp3 | ||
459 | @end example | ||
460 | |||
461 | As a result of this operation all tags from @file{sample.mp3} will be | ||
462 | copied to @file{track1.mp3} and @file{track2.mp3}. | ||
463 | |||
464 | @anchor{filter--copy} | ||
465 | @xopindex{--filter, used with @option{--copy}}. | ||
466 | As with another operations, you can abridge the scope of copying to | ||
467 | a certain subset of frames by using the @option{--filter} option, | ||
468 | e.g.: | ||
469 | |||
470 | @example | ||
471 | $ idest --copy sample.mp3 --filter TPE1,TCOM track1.mp3 track2.mp3 | ||
472 | @end example | ||
473 | |||
474 | You can also use @option{--copy} together with @option{--set} in a | ||
475 | single invocation. In this case, the frames will first be copied from | ||
476 | the source file and then the resulting tags will be modified according | ||
477 | to 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 |
459 | with caution. | 497 | with 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} |
463 | option, or (for compatibility with @command{idest} 1.x) as an argument to | 502 | option, 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 | ||
525 | The 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 |
543 | file: jt_lluny.mp3 | 585 | file: jt_lluny.mp3 |
544 | ntags: 2 | 586 | ntags: 2 |
545 | version: 24.0 | 587 | version: 2.4.0 |
546 | offset: 0 | 588 | offset: 0 |
547 | length: 2131 | 589 | length: 2131 |
548 | version: 1.1 | 590 | version: 1.1 |
@@ -553,10 +595,9 @@ length: 128 | |||
553 | The first two lines show the name of the input file and the number of | 595 | The first two lines show the name of the input file and the number of |
554 | ID3 tags in it. Following are tag descriptions formatted as three | 596 | ID3 tags in it. Following are tag descriptions formatted as three |
555 | values for each tag. The @samp{version} line shows the tag version | 597 | values 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 |
557 | than 1 means it is a ID3v2 tag. The @samp{offset} line shows the | 599 | shows the offset of this tag in the file, and the @samp{length} line |
558 | offset of this tag in the file, and the @samp{length} line contains | 600 | contains size of this tag in bytes. |
559 | size 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 | ||
627 | You can omit the @samp{.scm} suffix, as @command{idest} will try it | ||
628 | automatically (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 |
622 | the default value of @code{%load-path}. | 666 | the default value of @code{%load-path}. |
623 | 667 | ||
668 | The script is loaded via @code{primitive-load-path} (@pxref{Loading,, | ||
669 | primitive-load-path,guile,The Guile Reference Manual}), so | ||
670 | @command{idest} will consult the @code{%load-extensions} list and | ||
671 | try suffixes from that list as described in | ||
672 | @ref{Loading,,%load-extensions,guile,The Guile Reference Manual}). | ||
673 | |||
624 | @item | 674 | @item |
625 | The script is read and evaluated. | 675 | The 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 |
629 | Environment,,command-line,guile,The Guile Reference Manual}). It | 679 | Environment,,command-line,guile,The Guile Reference Manual}). It |
630 | can also modify the argument list (e.g. by removing its command | 680 | can also modify the argument list (e.g. by removing its command |
631 | line options). Any changes it does to the argument list become | 681 | line options). It must not, however, modify @samp{argv[0]}. Any |
632 | visible to @command{idest}. The only requirement is that the modified | 682 | changes it does to the argument list become visible to |
633 | argument list must contain only input file names. | 683 | @command{idest}. The only requirement is that the modified argument | <