This repository has been archived by the owner on Feb 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathacxi.changelog
2427 lines (1768 loc) · 102 KB
/
acxi.changelog
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
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
================================================================================
Version: 3.6.01
Patch: 00
Date: 2023-09-16
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Repo is moved to Codeberg.org. Will mirror to github for a while, but eventually
plan is to remove the mirror.
--------------------------------------------------------------------------------
SPECIAL THANKS:
--------------------------------------------------------------------------------
KNOWN ISSUES:
--------------------------------------------------------------------------------
BUGS:
--------------------------------------------------------------------------------
FIXES:
1. For tag file prefill, failed to block subsequent occurances of performer line
start triggers. Added in a completed boolean to avoid this issue. Problem is
when info file has the initial band members list, but then the word Band or
other triggers occurs after the first empty line after the performer list.
--------------------------------------------------------------------------------
ENHANCEMENTS:
--------------------------------------------------------------------------------
CHANGES:
1. Changed where relevant github urls to codeberg.org urls.
--------------------------------------------------------------------------------
DOCUMENTATION:
--------------------------------------------------------------------------------
CODE:
--------------------------------------------------------------------------------
-- Harald Hope - Mon, 26 Jun 2023 13:31:53 -0700
================================================================================
Version: 3.6.00
Patch: 00
Date: 2023-01-23
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
The initial mp3 based review of tagging led to a major update: the new TagList
class/package for --taglist. This sends acxi to 3.6.00 since this is a
significant set of new features, and creates an entire new type of
functionality, which also blends very well with newer and existing
tagging/prefill type features.
The preceding changes were started with a more basic MP3 tag update, which added
tags that are same in id3v2.3 and id3v2.4 and have FLAC equivalents. Also used
this as an excuse to also review and add some Vorbis tags that make sense for
acxi to include in auto.tag and tagging/prefill features.
Also went through many features, documentation, etc, fixed logic errors,
inconsistent logic/docs errors, and added more public documention.
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. Once again, to the people who helped make free / libre audio possible, and in
particular, the people who worked so hard for so long at xiph.org to provide the
world with the codecs and tools we now use to listen to and work on audio.
2. To fourtysixandtwo, the acxi packager for Slackware (slackbuilds). The new
--taglist option was his suggestion. This is turning out to be really good and
useful already, since it allows for easy bulk testing of entire sets of
recordings at once, which acxi can then be used to correct.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. SYNC: Because MP3 tagging changed too much between versions, only
id3v2.3/id3v2.4 tags that are the same between versions AND have Vorbis
equivalents are supported.
Good tag FLAC > MP3 id3v2.x mapping resources:
https://wiki.hydrogenaud.io/index.php?title=Tag_Mapping
https://docs.mp3tag.de/mapping/
https://docs.mp3tag.de/mapping-table/
2. AUTOTAG: The tag SUBTITLE in Vorbis/FLAC is super specific, and should be
avoided. https://web.archive.org/web/20120429102447/http://reallylongword.org/\
vorbiscomment/
"SUBTITLE: This field is intended for use with FLAC, in order to connect
specific titles with an embedded cue sheet. A single file can effectively
contain multiple works, indexed by TRACK and INDEX in the case of cue sheets,
and they can be specified using subscripts like “SUBTITLE[TRACK 3]” or
“SUBTITLE[TRACK 7:INDEX 2]”. This should only be used for the case of multiple
works in the same file and not for cases where a single work has multiple
titles."
3. TAGLIST: With certain Vorbis tags when output to Perl, that contain cp-1252
windows characters, Perl simply crashes, or appears to be crashing, when those
get output to screen. This happens currently only with -L [acfi], and basically,
the crash happens when the data is being printed out. You can still find which
track it was to manually correct the tags with acxi, but as far as I know, there
is no way to trap this error and handle it more elegantly since it either just
hangs, or crashes, depending on whether print to screen or Dumper print to
screen. Dumper just crashes when it hits that string.
--------------------------------------------------------------------------------
BUGS:
1. TAG: In --tag, it was changing directory to SOURCE_DIRECTORY, but failed to
remove that from the file string, so tag updates failed unless you were using
-s ./. I hadn't noticed that because I almost always use -s./ with -T.
This led to things like --glob failing too, since it was never working from the
right directory in terms of the path/filename metaflac received.
2. OPTIONS: --nlink would never have worked because it was missing the 'n'
('link').
3. INFOFIX: Bug with date fix, was always showing true for test for dd-mm-yyyy
type, which could lead to failure to then update those dates.
--------------------------------------------------------------------------------
FIXES:
1a. SYNC: For mp3 tagging, was using DATE, didn't check for YEAR, but mp3 is very
likely to fail if you put a date in that value. Now checks for YEAR first, and
falls back to using year (YYYY) extracted from DATE.
Note that DATE is supported somewhat, but syntax differs between:
DATE:
Vorbis: DATE id3v2.3: TDAT; id3v2.4: TXXX:DATE
or
RECORDING DATE:
Vorbis: DATE: id3v2.2: TYE+TDA(+TIM) id3v2.3: TYER+TDAT(+TIME[22]) id3v2.4: TDRC
Docs don't agree, so not using DATE in mp3 except to extract year. Note that
--ty handles the year so we don't need to worry about what the literal syntax
is.
I don't want to get into detecting idv2 subversion, this is a messy non-free
codec and it shows by how poorly they did tagging version to version, as well as
how focused on corporate interests their efforts were.
1b. SYNC: sync was not showing cmd message for --dry, but also was poor code,
repeated, switched to use --dbg 5 command debugger or in --dry mode, to show
command with --dbg 5, or the simple tool command with --dry. Previously didn't
show anything, just 'Would have run:'. That was an oversight, must have messed
that test mode up a long time ago. But now works much better because you can
either see simple mode, or full command debugging mode, which integrates that
to the new $dbg[5] command debugger globally.
1c. SYNC: Never showed that mkdir and copy file were running in test mode, now
shows Test mode: for all 3 syncing actions if verbosity > 0.
2. PREFILL: Some of the prefill field names didn't fully match the listed
possible values. Also made all 2 word type field names support space, -, _, or
no space.
3. TAGLIST/SYNC: Added --no-utf8-convert to main::get_flac_tags(), this is for
all types, mp3, replaygain, and full tag lists.
4. INFOFIX: Was missing a date variant: dd-month-yyyy
5. SYNC/AUTOTAG/TAGLIST: Flac tag reader wasn't escaping file name, which led to
name with $ failing. Also, the mp3 tag string generator was passing the file
name in double quotes, which meant that the $ string was being treated as a
scalar and would have been empty as well. Or maybe caused perl to exit with
error since non declared variable was being attempted.
6. AUTOTAG/PREFILL: Removed ISRC tag from main body of auto.tag, that is a per
track always file, it is a unique idenitifier (or idenfiers in rare cases, like
musicbrainz) per file. I had always thought it was a per recording, not track,
id, but that is wrong.
7. IMAGES: -RI to trigger --image-remove has not worked in a long time, that's
now corrected so -I accepts no value with -RI, -I remove, -I image, or -RI image
as originally intended.
8a. OUTPUT: Added $line_small when no info.txt file found for --infofix, forgot
that.
8b. OUTPUT: Made $line_small more consistent across -Z, -X, and -L to separate
directory processing items.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. TAGLIST: New features: --taglist/-L. Depending on switches, can generate full
report of all tags per FLAC file in directory, a condensed version of those
tags, or data for creating an info.txt file. As with -X, w writes the data to
the file(s).
* a: switch output file from taglist.tag to auto.tag, and change tag:value
separator from '=' to '%:'
* c: generates condensed data from flac tags for tag list. For tags that do not
occur in every file, adds tags before block of tags that use them, and either
replaces them with next value. or if file does not have that tag, UNSETs the
tag.
* f: generates full taglist data. This is default if no args used. Adds UNIQUE
value TAGBLOCK which forces non cascade of tags per file. This is what you want,
so don't change that.
* i: generates info file data from flac tags for screen/info.txt.
* s: skips file exist tests, so will always run in each directory. Not used with
'w'.
* w: writes a, c, i, or f data to respective info.txt, taglist.tag, or auto.tag
files.
i + [cf] can be used together. a activates c by default, unless you specify f. c
and f can't be used together. s can't be used with w.
In latest testing, -Lc is generating the same set of condensed tags the original
files contain, minus some corrected tags, like having 'ALBUM ARTIST' and
ALBUMARTIST tags in the same file, or 'TRACKTOTAL' and 'TOTALTRACKS'. This was
seen in musicbrainz picard tagging at times.
2. AUTOTAG: AutoTag::process_tags() now handles multiline tag values. Which
should be avoided because very few media players support those correctly. But
needed since --taglist a/c/f support multiline tag values.
3. AUTOTAG/AUTOTAG-CREATE: Added --unique, which allows setting one time list
of tags to use only 1x in the file following that tag in the auto.tag file. This
can be used with -A, -S, -M. This will add that list of single use tags to an
existing auto.tag file with -A. Adds that set of tags to the per track tag list,
which are handled differently than block type tags, which can apply to > 1 file
per set.
Only supported for auto.tag creation with -C/-S/-M, or to force the list into
the tagging with -A if it was not set in auto.tag already. The TAGBLOCK value
tells -A to discard all previously found tags after each file processed. This is
only useful with -Lf generated auto.tag files that have complete sets of tags
per file.
-Lf sets a UNIQUE value TAGBLOCK automatically.
-La/-Lc UNSETs tag after last file that used that tag if the previous value is
not replaced by a new one and the next file did not contain that tag in the case
of multi use of a tag situations, so you don't need to do anything there.
4. AUTOTAG/PREFILL/TAGLIST: Added --autotag-file/--atf/--af for one time changes
of auto.tag file name. This was an oversight, but never had cause for it until
testing -La exposed the utility of being able to change auto.tag name to
something else.
5. AUTOTAG/PREFILL: To auto.tag generator, added CONDUCTOR, MIXER, PUBLISHER,
REMIXER, and variants for prefill, like:
CONDUCTOR: Conductor, Conducted by.
MIXER: Mixed by, Mixer, Mastered by, Masterer.
PUBLISHER: Publisher, Label
REMIXER: Remixer, remixed by, remasterer, remastered by.
6. AUTOTAG/TAGLIST: Added WORK, SUBTITLE, TITLESORT tags to list of supported
tags for tagging, but not to auto.tag because those are made for very specific
purposes and are unlikely to be used correctly. See Known Issues 2. Also added a
number of track file specific tags like REPLAYGAIN*, ACOUSTID*, etc, to the
track tags list for -Lc, -La, and -A. This means that track specific tags that
should never be carried over to next file are now protected much better. While
hard to get a complete list of tags that must only occur per file, never common
between files, very good progress was made to tighten this down.
7. IMAGES: Added --image-remove as synonym for -R, --remove-images
8. SYNC: Significantly expanded MP3 tags. Mapped all acxi tags in auto.tag/--tag
that have native mp3 id3v2 tags. Now supported:
ALBUM ALBUMARTIST ARTIST ARTISTSORT COMMENT COMPILATION COMPOSER CONDUCTOR
COPYRIGHT DATE DESCRIPTION DISKNUMBER DISCSUBTITLE DISKTOTAL GENRE ISRC LABEL
MEDIA MOOD MOVEMENTNAME ORGANIZATION PUBLISHER REMIXER SOURCEMEDIA SUBTITLE
TITLE TITLESORT TRACKNUMBER TRACKTOTAL YEAR
Note that because id3v2.x either doesn't have comparable DATE, LOCATION, OPUS,
PERFORMER, PRODUCER, VENUE tags, or v2.3 name is different from v2.4, those tags
are not supported.
9. VERSION: Added $self_patch to allow for checking development patch versions,
like pinxi uses. Helpful to make sure you have the right version. Also added to
--help (and date). This can be helpful during active development.
acxi --version
acxi version: 3.5.06-14 (2023-01-10)
10a. OPTIONS: Added --glob as alternative to --source-glob/-g.
10b. OPTIONS: Added --config/--configuration, to show you current active
configuration values. Shows first to last found, last overrides previous.
11. OUTPUT: Added new print line type: $line_result. This is used to separate
result blocks from processing blocks, before was using $line_small for both
types. this is used in -X, -L, --config, and -C/-S/-M --dry. See CHANGES 2.
--------------------------------------------------------------------------------
CHANGES:
1. CONFIG: Configuration item TAG_FILE has been changed to AUTOTAG_FILE, but
TAG_FILE will keep working. This is because we needed non-ambiguous names with
new TAGLIST_FILE configuration item.
2. OUTPUT: Changed print line small:
-----------------------------------------------------------------
to print line result:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for blocks of results in --config, -L, -C/-M/-S --dry, -X. This makes it
easier to tell the results apart from the processing blocks.
3. AUTOTAG-CREATE: -C, -S, -M should not be allowed to run external to the
directory that contains the flac files, that's too risky, so disabled that. I
think that was an oversight.
4. DEBUG: Removed --debug, replaced with specific --dbg x(,y) options globally.
See CODE 3a, 3b.
5. SYNC: Changed default output type to '', ogg is deprecated, and acxi should
not promote it as default. I don't want to assume what people might have been
using before. Added $OUTPUT_TYPE set test for sync to force explicit set in
config file or with -o. Added --config so people can easily check their configs.
--------------------------------------------------------------------------------
DOCUMENTATION:
1a. MAN: Forgot to list AIFF as input type for FLAC output type.
1b. MAN: Added MIXER and REMIXER to --prefill tags. Also cleaned up and made
more consistent prefill tag listing.
1c. MAN: Updated man page debugger section for --dbg xx triggers.
1d. MAN: Added more granular man docs for --dbg
1e. MAN: Fixed typo for config file path, had $HOME/.conf/ not .config/.
2. OPTIONS: Updated top part to have better examples with long and short forms.
3a. MAN/OPTIONS: updateed for -R/-I cleanups and corrections, and to make actions/
choices more clear.
3b. MAN/OPTIONS: Updated to add --glob.
4. MAN/OPTIONS/README.txt/: added for new --taglist, --taglist-file, --unique
options.
5. AUTOTAG-FILE: Sample auto.tag file, updated to add new tags and comments.
6a. DOCS: Created docs/acxi-values.txt to document internal acxi values.
* @dbg - the old --debug was too generic to be useful in real development.
* %run, %test, scalar assignments - document internal use of these variables.
* verbosity levels, and triggering switches.
* configuration items. Always see man for full explanations.
6b. DOCS: Overall, made sure man, help, acxi-values.txt, and internal logic are
the same. Surprising number of oddities had crept in, cleaning those up as they
get discovered.
--------------------------------------------------------------------------------
CODE:
1a. TAG DATA: Refactored flac2mp3_cmd() to make more flexible. Made it return
hash ref, not hash.
1b. TAG DATA: Extended main::get_flac_tags() to return 'all' tags in flac file,
for new package TagList. Changed old 'standard' to 'flac-mp3', since that was
used only to get flac to mp3 tags. Totally rewrote get_flac_tags as well, to be
more robust and dynamic.
2. Switched to qw(...) in some tag lists that are being updated frequently.
3a. DEBUG: Added --dbg [x-xx] for granular debugging. Added dbg switch docs in
docs/acxi-values.txt.
3b. DEBUG: Changed all previous $b_debug to more granular $dbg[x] tests, and
added many commented out say debugging items now that they can be switched off
and on in a more granular fashion.
4. OPTIONS: Major refactor of OptionsHandler, which had gotten messy and hard
to follow/read/use. Also got rid of the hack I used to turn off features by
setting to 0 in each major option item. Now all that is handled in
OptionsHandler::set_switches() and OptionsHandler::verify_selections(), and
options themselves only switch on $run and $test switches and assign values.
5a. SYNC: Changed to explicit sync switched on only if no other actions conflict
in OptionsHandler::set_switches(). This was previously always set to 1, true, on
top of acxi by default, now it's only set to true if no conflicting options are
used.
5b. SYNC: Refactored SyncCollection::convert_file(), that had a lot of
repetetive code, and also switched it to use $dbg[5] show $cmd debugger for both
active and --dry mode, or just the tool name/path in --dry mode. See FIX 10.
6. IMAGE: Redid $run{'image-embed'} and $run{'image-remove'} logic, and made
more predictable and understandable, which is how the failure had crept in.
7. VALIDATION: Validation had a legacy $b_error in every sub which is redundant
since $error_message can be tested t/f in all cases, removed all those.
--------------------------------------------------------------------------------
-- Harald Hope - Mon, 23 Jan 2023 15:00:00 -0800
================================================================================
Version: 3.5.06
Patch:
Date: 2022-12-26
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
A big prefill/infofix release. Many more possible info file syntaxes handled,
new -X fix options, corrections, bug fixes. This has been tested heavily on a
fairly large untagged concert collection (Grateful Dead shows), which had a very
good set of random ways of creating the info files, with varying syntaxes and
methods, so this was in essence an ideal training set. Though objectively, any
set generated over decades by random people is going to have most of the
randomly possible options.
A long time weakness is handled, now -Xc maps windows CF-1252 characters like
magic quotes to ASCII. These are really common because so many people use word
document type formatting to generate magic quotes etc.
Also features a big usability boost for help and man page, now lists in more
granular style, with order in help and man made the same. Broken into
Input/Output, Synching, Tagging, Checksums, Miscellaneous, and Debug/Output
controls. Over last years, a lot of feature sets have expanded, or been created,
making it harder to find the stuff in help or man. As with inxi, also added a
table of contents to the man page, which has gotten quite long, so users can
know which section to look for options.
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. All the pioneers over decades who helped create the entire concept of live
audience recordings, first and foremost, of course, the entire Grateful Dead
tape trading network, which created etree and archive.org type live concert
distribution, not to mention the original torrent tools to finally replace the
awful tape dubbing that had been the only option before that.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. Failing to use the Tracklist terminator strings can lead to the info file
getting unwanted changes to items after the set/track list. Solution of course
is to just add the terminator, but it's worth mentioning anyway.
2. If more than 1 date is in a line, the second one gets ignored. This is too
hard to fix, and would not really matter in almost all cases anyway.
3. -Xc fails to handle any non european type character sets, and only handles a
subset of CP-1252, but the most important one, the magic quotes/n,m dashes,
elipsis, etc. This is fine, there's a limit to what can be done safely with
character encoding corrections.
--------------------------------------------------------------------------------
BUGS:
1. In certain cases, -Xd got confused, and added extra block to the ISO date,
like 1966-11-25 > 1966-01-01-25. This was caused by insufficiently greedy
patterns for the number separators, which then led to certain mm dd getting
trapped one at a time (mm == 1, dd == 1) instead of as pairs separated by date
separators like -, ., _, /.
2. Configuration file processor was removing spaces from user configuration
values, that can lead to incorrect results, like turning: Bill Monroe to
BillMonroe.
--------------------------------------------------------------------------------
FIXES:
1. Forgot some words in -h for -M.
2a. INFOFIX: -Xn was treating times starting track title, like 5:43, as track
numbers because it was using :\s*, not :\s+, which led to undesired outcomes.
2b. INFOFIX: replace tabs with a space, tabs are just annoying in the context of
.txt files, and create odd layouts, since they always assume x spaces per tab,
but that behavior is not actually set in stone.
2c. INFOFIX: d/k found yet another variant, dd/mm/yyyy, added pretest to
determine which is being used, since you can't tell say, 09.08.2020 so it looks
for a day greater than 12 in the first or second position, then assigns the type
to use based on that pretest. Be aware of possible situation where two types
were used in the same file!
3. -i was triggering $test{'sync'} which is not correct, you should be able to
set input types for non syncing actions, since some of those only work with
specific codecs, like FLAC.
4. Slightly risky update, adding (20)?3x year ids, which could possibly trip bad
day of month == 30, 31, but then again, so could dom == 29.
5. PREFILL: added stripping of ';', '%' from end of track title.
Those have some meaning for Grateful Dead stuff but not relevant for track
titles in tags. Also added support for > 1 ([\d:.]+) at end of track.
6. PREFILL: reduced limit to first occurance of BAND/Linup performers prefill.
This allows for multiple lineups in one performance without having to move them
around in the info file.
7. SYNC: removed translate filter for file name: $dest_file =~ s/\`/\'/g;
This makes --clean remove say, 'Dan`s Song' each time.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1a. PREFILL: Added the following field names:
* 'Artist / Band' to ARTIST prefill field name list.
* 'Media', 'SourceMedia', 'Source Media', 'Source-Media' for SOURCEMEDIA tag.
* 'Producer', 'Taped by', 'Recorded by' for PRODUCER tag.
1b. PREFILL/AUTOTAG: Added CDDB, ETREE, ISRC, SHNID tags. ETREE and SHNID are
not an official tag from vorbis/flac, but might be useful for bands that have
etree ids or shnids, that way it can go somewhere in the tags, as well as being
a possible field name for prefill.
If etree/shnid id present, append to end of ALBUM like this: ' (etree [id])' or
' (shnid [id])'.
1c. PREFILL: Added option to add a terminator after the Setlist/Tracks block to
stop creating and counting tracks. This helps when there are numbered comments,
numbered per track notes, and so on, which could then trigger a track count
mismatch exit error. Also makes it so you don't have to do anything to the info
file other than add the terminator string. Supported (not case sensitive):
One or more: ':^<>' followed by zero or one ES, ESL, ET, ETL, END, END\-TRACKS,
END_TRACKS, END TRACKS, END\-SETLIST, END_SETLIST, END SETLIST, terminating in 1
or more ^_<>.
Must be only characters on line. '_', '-', '=' not supported because things like
------, =======, ________ are a common part of info file full line values.
1d. PREFILL/OPTIONS: Added option --prefill-tag/--pt/--pft to add temporary
--prefill tag completions, so you don't have to do the same thing over and over.
Can be used as option or configuration item. Remember to undo it when you are
done with job if you used the configuration option! Uses same syntax as
--tag/-T. This allows setting fields for prefilling either on a per recording,
per recording group, or always.
PREFILL_TAG=GENRE%:Heavy Metal^^IMAGE%:cover.jpg
If you use the configuration item, remember to remove the value after you are
done with the current job, or it will always get used. These values override
everything else in prefill, so use with caution.
--prefill-tag=UNSET unsets the configuration value temporarily, or replaces it
with the supplied tag values.
1e. Added alternate lineup starter values, so:
****Lineup this evening:
would start the lineup prefill. Goal here is to not have to change source info
files, or to change as little as possible, while keeping the syntax predicable.
1f. PREFILL/INFOFIX/OPTIONS: Added alternates --info-file, --if, --pf for
--prefill-file. Also made it active for --infofix, not just -S, -E autotag. Also
fixed validation which was a little too tight on that combo.
2a. INFOFIX: For -Xn, added support for common legacy numbering syntaxes: d1t12,
t12, s1t12, and less common 123-d1t23.
2b. INFOFIX: Extended -Xm, -Xn, -Xt to also use prefill track list terminator
method.
2c. INFOFIX: Added -Xm which attempts to add parenthesis around track times so
that the times don't get included in the track TITLE info. Also changes corner
wrapping with |...| to (...) Also moves time at start of title to end of title,
some people do that one, oddly enough.
2d. INFOFIX: Added -Xv. This adds an FFP verified to the q report. FLAC only. If
errors, shows the full file report, which can be useful. Note that running ffp
verification is slow. This is the same basic tool that --checksum-verify/-V
uses, with md5 checks disabled. Activates q as well.
2e. INFOFIX: Added -Xk, for adding day of week after fixed date string.
Activates d as well. Also clears out any existing day of week from line so you
don't need to manually delete it if it was not done with day of week after date.
Like so:
2020-04-23 (Thursday)
This uses core module POSIX::strftime, to avoid any non core module
requirements.
2f. INFOFIX: Added -X0. This turns off the leading characters usually added
before each line of output. Useful if you want to copy parts of the output.
2g. INFOFIX: Added -Xc. First try at long time weakness, failing to currect
windows cp-1252 characters like magic quotes etc. This may take a few iterations
since not only windows is going to have these issues, but this should cover a
solid 95%. Tested on several large sets of info files and worked well.
Grep output to locate where corrections happened. Shows when it corrects and
fails to correct for CP-1252. I'm not trying for 99% perfection, just to get the
most common offenders (Windows generated .txt files), which probably covers a
solid 95% of real cases.
2h. INFOFIX: Added -Xa. This adds auto track numbering to unnumbered track/set
lists. Supports either straight 2 digit zero padded numbers, or disk ids, like
1-12. Requires start of either :an: for basic numbering, and :an-1: for
multidisk numbering. Terminate with :: or <> as with other track list features.
2i. INFOFIX/PREFILL: Added {...} syntax for track times, along with existing
(..), [..]. Note that track times have to be at end of Title string, otherwise
it's a pain to do the logic. -Xm will move them from start of title to end.
3a. CHECKSUM DELETE: Added *.cfp (some shn thing), *sbeok, *.st5, shntool.txt
types to --checksum-delete. Those are almost always from SHN files, and aren't
relevant anymore. sbeok as far as I can tell is same as shntool_length.
3b. CHECKSUM DELETE: Added *ffps.txt, *md5sum.txt as possible -D delete file
names.
3c. CHECKSUM DELETE: Added index.html, robots.txt because some legacy file
downloaders added those. Also added .txt.1, .txt.2 since sloppy downloaders
could add those when trying to download repeatedly.
4a. OPTIONS: Added alternate --copy-append to --append/-a, to make it more
obvious and consistent with other option syntaxes.
4b. OPTIONS: Added optional names --dry-run, --dry. These are same as --test,
easy to remember if you think of it as a dry run, not a test.
5. Added -U 3, for updating from smxi server, github is a pain, better to do
most dev work on server, like with pinxi, then commit to github once largely
working. That github throttling of commits after a few done quickly is annoying.
6. Going along with -U 3, added --no-ssl, for older systems which may have
expired SSL certificates. Note that -U on such systems will not work generally
with or without --no-ssl, but -U 3 will.
--------------------------------------------------------------------------------
CHANGES:
1. Should be no real changes, just big polishing up and enhancements of existing
features.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. Man, help changes for new features, enhanced features, etc.
2. README.txt, man, and help updated for new options.
3. Reorganzed man page and help menu, with top navigation section on man page,
and more granular option subsections to make stuff easier to find.
4. Fixed some width issues on help output, some lines had strayed over 80
columns, or could be shortened by moving a word to next line.
--------------------------------------------------------------------------------
CODE:
1. Changed $test{'tag-create'} to $test{'autotag-create'} to make it consistent
with the %run values, too confusing otherwise.
2. Refactored prefill fields to be more flexible, easier to add prefill fields.
3. Made --checksum-delete/-D globbbing patterns cleaner and easier to update.
4. Fixed InfoFix::date_fix(), InfoFix::cp1252_fix(), Analyze::info_quality() to
correctly update the array reference, not to work on a copy then create a new
reference and return that, which is a bad habit I have.
5. Refactored AutoTag::prefill_data() to avoid redundant field name code.
--------------------------------------------------------------------------------
-- Harald Hope - Mon, 26 Dec 2022 11:02:50 -0800
================================================================================
Version: 3.5.05
Patch:
Date: 2022-11-09
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
A code and man and options cleanup, plus adding sample acxi.conf for packagers
and users who might like to see what configs look like.
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. Xiph.org, for all their great work in support of free software audio. And all
their cool little tools, like squishyball abx tester.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. Nothing really, adding support for DSD/DSF > FLAC conversion would be nice,
but is hardly critical or essential.
--------------------------------------------------------------------------------
BUGS:
1. Nothing except debugger left in place by accident.
--------------------------------------------------------------------------------
FIXES:
1. To -Xd, date fix, added variation yyyy/mm/dd.
2. Removed prefill debugger.
3. lame -V supports 0 - 9.999, not 9, though you'd never want to use 9.999
because it would really suck. Added decimal support.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. Prefill improvements.
--------------------------------------------------------------------------------
CHANGES:
1. No changes to speak of.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. For --prefill/-E, improved field name documentation in man page, otherwise
who could guess? Tedious, but best to list the field names and rules.
2. Fixed some man page typos and errors.
3. Added sample acxi.conf file for packagers to include if they want. That's
helpful since you can't realistically run acxi without setting at least basic
configurations, though you can if you have standard program locations, and use
the CLI switches each time you run acxi, but that gets tedious.
4. Added LICENSE.txt file. That's GPL v3 or later, as usual.
--------------------------------------------------------------------------------
CODE:
1. Some cleanups, but nothing major.
--------------------------------------------------------------------------------
-- Harald Hope - Wed, 09 Nov 2022 16:30:27 -0800
================================================================================
Version: 3.5.04
Patch:
Date: 2022-11-05
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Bug fix, corrections, fine tunings for 0 sized files, or files with 0 audio
data. Also more prefill field names, to let you fully auto-complete your
auto.tag file from the info file.
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. Everyone helping make Free as in Libre audio possible! xiph.org, Ardour,
Audacity. We wouldn't have free audio codecs or tools if it weren't for the
years of effort by these people and organizations.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. None currently.
--------------------------------------------------------------------------------
BUGS:
1. For -Xq crashed Perl on 0 length file, was trying to divide by 0 without
verifying it was not a zero value first. Added in error handlers, made code
easier to read.
2. -Z failed to list 0 length/size files, and also failed to show the errors in
ALERT section. That was only working for > 0 but < Min size/time
--------------------------------------------------------------------------------
FIXES:
1. With Bug 1, for -Xq, failed to exit on error. We don't want to write bad data
to info-fix file! But we do want to not exit for batch -Z jobs, we just want to
see the error in the output, but we don't want to terminate the analyze bulk
action.
2. Show 0 sample/size/duration for -Z, and also show size in B when < 1 KiB. I
had never considered the matter of < 1 KiB output as having value, but it does.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. Added Byte (B) to KiB < 1 print_size(), that allows showing tiny file sizes
in error conditions, and avoids showing 0 KiB when it might be 86 Bytes (the
size of a 0 sample FLAC).
2. Added Album, AlbumArtist, AlbumSort, Composer, Event, Genre, Cover/Image,
Producer to prefill field name options. This lets you use the info file to fully
complete the auto.tag file, no edits needed.
--------------------------------------------------------------------------------
CHANGES:
1. Handles 0 size audio source files consistently.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. Updated man page for new supported prefill field names, and also listed most
of the supported ones.
--------------------------------------------------------------------------------
CODE:
1. For process_ffprobe() and process_metaflac() changed returns to hash
reference. Yes, that's a touch slower than returning an array, but it's much
easier to read the code now.
2. Change ffprobe value 'N/A' to undef to allow for easier testing of results.
--------------------------------------------------------------------------------
-- Harald Hope - Sat, 05 Nov 2022 14:07:00 -0700
================================================================================
Version: 3.5.03
Patch:
Date: 2022-10-22
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Long overdue update to use info file supplied Field Names: for artist, venue,
city, date, taper. This also allows preservation of that more useful syntax when
processing info files for data, which has always been a weak spot of this
feature.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. The terms and names for the field names for prefill will require many more
iterations to get reasonably complete in terms of what people really use, but
since these are in the end always user generated string values, they will be
subject to randomness, but we'll get it working usually for most cases, which is
definitely an improvement.
2. The order, likewise, will be somewhat random, so location in particular may
be subject to some garbling in the output and will probably require cleanup, but
still an improvement.
--------------------------------------------------------------------------------
BUGS:
1. None known.
--------------------------------------------------------------------------------
FIXES:
1. None
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. Use field names as triggers to switch to field: value parsing for top artist
venue city state date completion for auto.tag generation. This will result in
clearly more accurate prefills for those tag items, since we're relying on
actual field names, not position in file to identify the field.
2. Added VENUE tag prefill, which is now possible with enhancement 1.
3. Added support for Taper: in info file for prefill of PRODUCER tag. That can
be located either in top block, or anywhere else in file.
--------------------------------------------------------------------------------
CHANGES:
1. None. Delightfully stable.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. Updated man page for auto.tag prefill using existing field names or automatic
detections.
--------------------------------------------------------------------------------
CODE:
1. Starting process of switching to array/hash references when passed between
functions/classes (subs/packages).
Done:
%info to $info hash ref:
AutoTag::populate_tag_file()
AutoTag::prefill_data()
@data to $data array ref
Analyze::info_data() - added $ref return apart from info_data();
AutoTag::prefill_data()
InfoFix::date_fix() - removed return
InfoFix::open_info_file()
InfoFix::run_fixes()
2. Reorganized top variables to be more obvious and easy to read/scan.
3. Made Data::Dumper output sort alpha/numeric, makes debugging easier.
--------------------------------------------------------------------------------
-- Harald Hope - Sun, 23 Oct 2022 17:46:38 -0700
================================================================================
Version: 3.5.02
Patch:
Date: 2021-12-06
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Refinements, fine tunings. The rule that a successful refactor always opens the
door to more possibilities remains valid!
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. -Z is slightly awkward to use because it only handles one input type at a
time, for example, if you had a directory filled with m4a, mp3, and aac files,
you'd have to run -Z once per type to get the full report. That may be not be
resolvable because adding > 1 input type lists would create issues in the
validation that would be a headache to resolve, but it might be something that
can be worked around. It does handle various syntaxes, like .FLAC, .Flac, and
.flac, but that's as far as it goes.
2. If using forking on syncing job, and error handler for failed sync action
kicks in, can't stop forking, that's too complicated to deal with for now.
3. The acxi documentation that suggests that AAC doesn't support tagging isn't
accurate, it does, but it's another proprietary format that requires mapping
known tags to aac format, similar to mp3. Also, apple has its own further
proprietary format, which I have zero interest in spending/wasting time chasing
after. Basically as far as acxi is concerned, since m4a tagging is native and
'just works' and can use aac as the audio data in the m4a container, I can see
no reason to waste time adding support for another erratic and inconsistent
proprietary tagging format.
--------------------------------------------------------------------------------
BUGS:
1. FLAC to m4a conversions were failing without error handling. Added error
handler to syncing section, with caveat it can't exit while forking is being
used. It will now print out an error message, if forking, alerting that it can't
stop itself, if no forking, will exit as expected. Issue was flac to m4a
requires one further option for ffmpeg.
--------------------------------------------------------------------------------
FIXES:
1. Added protection against resampling using dither if bit depths are the same.
2. Discovered a very strange globbing behavior, returns non existing matches
to the globbing pattern, no idea how that can happen since it's a glob of the
path/directory. Added test exists before putting results in source array.
3. aac/m4a codec pre-test was case sensitive, made case insensitive. Some
validation -eq tests for out/input types were not case insensitive.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. For -Z, -v 0 turns off the per file reports, and only shows the summary per
directory. This is useful to just gain a quick overview of what you have in a
collection.
2. For --resample, now shows bit depth:sample rate for each start file, and the
target resample rate, like: ....file.flac 24:96 to 16:48
This can be useful to avoid errors and unexpected results, for example, if you
failed to run -Z analyze on resample source, you'd still see you maybe made a
mistake on the rate.
3. For -Z, added feature to show possible incorrect lossy audio file sizes, and
for all audio formats, possible incorrect duration of track. Defaults are 1000
KiB for size, and 10 seconds for time. Added --z-min-size and --z-min-time as
overrides, and also configuration items Z_MIN_SIZE / Z_MIN_TIME for permanent
changing of values. 0 in either disables that test.
Defaults are 10 seconds min time for all audio files in directory, and 1000 KiB