acxi changelog:
acxi version: 3.6.02 acxi date: 2024-04-08
The following is the acxi changelog
================================================================================ Version: 3.6.02 Patch: 0 Date: 2024-04-08 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Repo is moved to Codeberg.org. Mirrored to github until end of December, 2023. All smxi repos on github are now archive status, and will not be updated again. This release includes the tag prefill fix 1 from 3.6.01-1 (see 3.6.01 changes). -------------------------------------------------------------------------------- SPECIAL THANKS: 1. Thanks to Mraof codeberg issue #12 for finding another filename character that didn't get handled correctly (@). -------------------------------------------------------------------------------- KNOWN ISSUES: -------------------------------------------------------------------------------- BUGS: -------------------------------------------------------------------------------- FIXES: 1. For syncing, failed to handle '@' in file name. Or rather, an escape was being applied to it, like with $, but that is not necessary, and broke the handling. No escape/unescapes are required for @ and %. This issue was actually caused by my trying to be too clever and anticipating a problem that actually does not exist, thus creating the actual problem. -------------------------------------------------------------------------------- ENHANCEMENTS: -------------------------------------------------------------------------------- CHANGES: -------------------------------------------------------------------------------- DOCUMENTATION: -------------------------------------------------------------------------------- CODE: 1. Changed global new lines to inxi style: each sub has 1 empty line above it, and no empty lines occur in a sub. This makes the code much easier to scan and maintain. acxi was sort of halfway towards that, but it had never been completed. -------------------------------------------------------------------------------- -- Harald Hope - Mon, 08 Apr 2024 20:42:43 -0700 ================================================================================ Version: 3.6.01 Patch: 00 Date: 2024-03-07 -------------------------------------------------------------------------------- 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: 1. MAN: Fixed troff error. -------------------------------------------------------------------------------- CODE: -------------------------------------------------------------------------------- -- Harald Hope - Thu, 7 Mar 2024 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 min size for all lossless audio files in directory for the supplied --input type. These will print out summary ALERT items per file found, right above the main summary area at end of per track output. While no tests will ever be perfect, the goal is to minimize possible failure points that might creep in unnoticed. 4. New feature, prefill with Album Artist track titles. Requires syntax: --multiartist [at|ta]:[separator]. Use --ma for short form. Assuming separator '-', then 'at:-' means: Artist - Title, and 'ta:-' means: Title - Artist. Do not include spaces in separator, just the actual character(s) used. Will pick first occurance of provided separator value to split track title, and everything after first occurance as either Title or Artist. This uses the numbered track title listing in the info file that --prefill uses, like so: 01. Band Name / Track Title -------------------------------------------------------------------------------- CHANGES: 1. No changes. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updated man, help, for revised -Z -v0 option, and for using metaflac for source file sample rate data. 2. Added help/man documentation for --z-min-size/--z-min-size, and for Z_MIN_SIZE/Z_MIN_TIME configuration items. 3. Added help/man documentation for --multiartist/--ma. -------------------------------------------------------------------------------- CODE: 1. The ease of implementing the new --resample output option is a direct result of the refactor of the -Z analyze feature, by splitting out the metaflac data logic into its own function, that then became available to call to from other parts of acxi, which it wasn't before the refactor. I've never seen a case where a good refactor didn't open the door to more functionality. -------------------------------------------------------------------------------- -- Harald Hope - Mon, 06 Dec 2021 12:35:35 -0700 ================================================================================ Version: 3.5.01 Patch: Date: 2021-10-08 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bug fix for --clean, completed some options that were started but were slightly incomplete, like -Z now supports all input types, and --resample now applies a decent default Shibata dithering when resampling down to 16 bit. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. -Z -v2 only shows ffp/hash data for metaflac/FLAC sourced data. That's how it is, the data is not present in ffprobe sourced intput file data. -------------------------------------------------------------------------------- BUGS: 1. See Fix 1, needs to enforce path syntax for --clean -s/-d, otherwise will offer to delete your entire destination. -------------------------------------------------------------------------------- FIXES: 1. Found issue with --clean, -s and -d require either full relative to user HOME or full path (~/music, /home/user/music). Never tested other path possibilities so never noticed these when not complete path. Also added protection against starting -d/-s paths with ../. That leads to very unpredictable results. Both of these are handled now in Validation. 2. In size tool, failed to round KiB values. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Big upgrade for -Z/-Xq, now accepts all input types. Non FLAC input types use ffprobe. FLAC defaults to using metaflac for data. Using the --ffprobe option forces FLAC analysis to use ffprobe, which is easily 10-30x slower than metaflac, and also doesn't contain the flac ffp md5 hash signatures. 2. Added default dither type if resampling to < 24 bit depth of Shibata. Added configuration and --dither item to allow users to change dither type. For --resample only. Default type is shibata, which puts noise at higher frequencies. Note that ffmpeg does not apply dithering by default. Used ffmpeg list: https://ffmpeg.org/ffmpeg-resampler.html Types: 0; rectangular; triangular; triangular_hp; lipshitz; shibata; low_shibata; high_shibata; f_weighted; modified_e_weighted; improved_e_weighted 3. Added standard override default config file: /etc/acxi.conf.d/acxi.conf to list of config files to check. That's in case distros ever package it. -------------------------------------------------------------------------------- CHANGES: 1. Validation now permits non flac input types for -Z/-Xq options. 2. For -v2 cleaned up syncing output a bit. Added resample info for -v2 as well. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Man update for -s/-d path syntax for --clean, and -s/-d not using ../. 2. Man/help update for expansion of -Z/-Xq input types, and for --ffprobe override option. -------------------------------------------------------------------------------- CODE: 1. Refactored package Analyze to support non flac input types, and also to show proper input type being processed. Changed a few other components for this as well, like Checksums, Validation, get_options(). 2. Moved get_options into new package OptionsHandler, the verify section was getting a bit unwieldy, best to have it be in its own sub. This also aligns inxi and acxi in style, which is good. 3. Sorted configuration items. -------------------------------------------------------------------------------- -- Harald Hope - Fri, 10 Oct 2021 15:42:08 -0700 ================================================================================ Version: 3.5.00 Patch: Date: 2021-09-24 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- This is the final tidying up of the new features introduced and evolved in 3.4.01, and given the number of new features, and changes, this also will be rolled into next major version, 3.5.00. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. No new ones. -------------------------------------------------------------------------------- BUGS: 1. In one case, --test, by triggering -v3, would trip a debugger that should have been a --debug switch, and since there was no internal actual $b_debug, there was no way to run pure debugger switches internally. This is now corrected. -------------------------------------------------------------------------------- FIXES: 1. None this release. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added -Xl (el, not uc eye), sets all lines lower case, then upper cases anything found after a '.'. Good for cases where the entire file is upper case, but it's got a lot of sentences, and you don't want the upper case first of all primary words that u gives you. Requires in most cases going back in and re-uppercasing some items, but it's less work to do it this way for extreme cases. -------------------------------------------------------------------------------- CHANGES: 1. --test no longer activates --verbosity 3, that was creating annoying output in situations where --test is being used to generate screen only output, for example: acxi -s./ -SE --test Now --test just tests, which was its intended role, and you can tell add what -v levels you want. 2. --debug no longer alters $VERBOSITY levels, it just sets a $b_debug flag. This disconnects --test, --debug, and -v actions completely. 3. Changed line starter for -X from 'Fix: ' to '; : ', and for -Xw, ' ' to '; '. That looks a lot cleaner, and creates a nice box effect around the info file output block. The '; : ' and '; ' also make it more clear when the action was written and when not, without being visually messy. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updated --test, --debug, --verbosity, and CONFIG items to account for the changes in use of internal VERBOSITY and b_test/b_debug flags. 2. Refactored and made more useful README.txt, now it's updated to focus on all the acxi features, not just the syncing part, and also is divided into sections better, and is more readable, with enough information to get users started. 3. Cleaned up double spaces in man page. -------------------------------------------------------------------------------- CODE: 1. Removed some weight from --test and --debug, see CHANGES 1,2. Changed if $VERBOSITY > 3 tests to if $b_debug. Removed VERBOSITY connection to --test. 2. Removed some development debuggers and fixed some comments for logic. 3. Added EOF closing comment to man page, should have implemented that years ago. That's required to validate man download via -U, it was using a test on a string in the man page, which isn't a good idea since that can change. 4. Got rid of white space between negation ! and all items except things like -f, -d, -r. -------------------------------------------------------------------------------- -- Harald Hope - Wed, 24 Sep 2021 17:30:17 -0700 ================================================================================ Version: 3.4.01 Patch: Date: 2021-09-21 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Big update, lots of fixes, new features, enhanced features, cleaned up output, you name it, this one has it! Huge usability and processing speed improvements, with a focus on large bulk processing actions, and with -g globbing option, running bulk actions on a subset of directories. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. -E does not work in bulk jobs, only per flac directory. -------------------------------------------------------------------------------- BUGS: 1. A code cleanup remove a few too many white spaces in front of ), in this case, for -T, that was required, not to clean up. Search and replace can be dangerous sometimes. This regression was probably introduced around 3.4.00 or so. 2. In cases of 1 single flac file, -K and --ffps would skip filename and show only the ffp hash. Metaflac required explicit --with-filename for metaflac output. Default is to print file name only when > 1 flac files found. -------------------------------------------------------------------------------- FIXES: 1. -V exited on error, but should not have. This prevented bulk -V checks from running. Now error message goes to screen but it keeps looping. Useful for checking larger sets of audio files to determine which are corrupted. 2. -V, -K, -D: corrected indentation of output to make more readable/scannable. Particularly useful if outputting results to file for many directories. 3. Added -Xn pattern, some cases where track number is DNN, converts to D-NN. as expected now. -Xd more date variants added. 4. Added 'Personnel:', 'Performers:' to performers pre ID. 5. Tiny fix, acxi was neglecting to apply the os path separator correctly in at least one location, which in fringe cases could lead to windows failing under certain conditions, though windows support is only theoretical. 6. Added error handler for trying to run -E/--prefill on any bulk job, flac files must be present in the given --source directory or it exits with error. 7. Fixed output for various features, corrected indentation errors, removed ... in some cases, added : for directory name processing features. 8. Polished up option mis-use error handling, polished up validation logic. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Going with Fix 1, -v3 now will output results of ffp test initially so you can get the full verbose version. 2. New feature: --dupes/--duplicates: allows checking collection for duplicates of flac files, then gives a report of the directories that had duplicates, and the directories that first had the files that were duplicated. Useful for trimming out redundant stuff from your collection. 3. New feature: --analyze/-Z: prints to screen flac bits, sampling rate, track times (per file) found in -s source directory/ies. Also prints total time, total size, and average kbs of all flacs in directory. Depending it may be possible to extend this to other than flac. -v1 (default) shows flac data in one line; -v 2 makes key: value pairs, one per line, adds ffp hash signature; -v 3 adds raw full seconds and file size in bytes to time/size info for file and totals. 4. Going along with --analyze, -Xq now includes avg kbs, total time and size of flacs, per directory of flacs. 5. New feature: --source-glob/-g: accepts wild card paths if you only want to update or check certain directories within the main --source working directory. Requires --source, wild card path must be within --source, like: acxi -s ./ -g 'BandName*' -V Will only verify folders starting with BandName. Remember to always quote the value otherwise your shell will expand the wild cards!! Accepts standard globbing options like {one,two,three}, [0-9], etc. This is really useful if you want to carry out any acxi action/option on only a subset of directories inside of a larger collection, for example, setting the ARTIST tag value for all directories of that artist in that main directory. acxi -s ./ -g '{FredDolans,Fred Dolans,Fred_Dolans}*' -T "ARTIST%:Fred Dolans" 6. New refined feature: --checksum-ffps/--ffps. Improves previous method of: acxi -s./ -K --no-md5sum --test which is awkward. Prints output to screen, turns off md5 generation. Good for bulk ffp generation, output redirect to file, etc. 7. Finally added --resample {bits:khz} and --resample-override. This is useful for resampling 24 bit flacs to 16 bit, for example. Note that in general you want to resample to a sampling rate that evenly divides the starting rate, for example, with 24 bit, 192 or 96 khz original, resample to 16:48, or if for some reason you actually have 88.2khz sampling rate, resample to 16:44.1. Or if your starting sampling rate is 48khz, use 16:48. Use -Z option to determine sample rates and bit depth of original you are resampling. In general, do not resample to greater bit depths or sampling rates, that's pointless. Note that if you resample 192, 96, or 48khz originals to 44.1 khz, the CD audio standard, you end up messing up the samples because almost all of them have to be synthesized, but if you use a sample rate that evenly divides with the start, no dithering or other undesirable results will occur, generally speaking. --resample supports 16; 20; 24 bit and 44.1; 48; 88.2; 96; 192 defaults, which are in general the only ones you'd ever want to use. Syntax sample: --resample 16:48 --resample-override switch allows you to use the almost full range of options in --resample, 4-32 bits, 1-655 khz sampling rate. -------------------------------------------------------------------------------- CHANGES: 1. Small changes in output, got rid of some '...' in processing / checking directory outputs, added ':' anytime the action references checking or processing a directory, that makes it more consistent and predictable overall. Sample: Checking myDirectory... becomes: Checking: myDirectory. Sample: Starting sync of StartDirectory to EndDirectory becomes: Starting sync of: StartDirectory to: EndDirectory Exception is when the action uses print, not say, and the results of the action are printed on same line after the ... 2. Changed --exclude-append short form to -y, inconsistent to use -X, and want -X for --infofix short form. Actually this was also a bug, -X short had never been used for --exclude-append though it was supposed to have been, so no loss to anyone. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updated man, help for --duplicates, --analyze, --ffps, --resample, --resample-override. 2. Redid top SYNOPSIS section to include short forms, that makes it easier to use as a reminder tool. Reordered items as well to be more clear. -------------------------------------------------------------------------------- CODE: 1. Fully transitioned to 'say' when we want line breaks at end of print line. This cleans the code up and makes it easier to see what's going on in various line output scenarios. 'print' is used now when we do NOT want a linebreak at end of line, and in other more complex scenarios where it is appropriate. 2. Moved -G/--aggregate logic to package Aggregate, it's not really related to autotagging. Moved -X/--infofix to package InfoFix, Moved -Z/--analyze, and, -Xq logic to Analyze package. AutoTag and Checksums were getting too much clutter in them. 3. Renamed/simplified launch/trigger subs names in Packages, forgot to do that when I made the classes for 3.0.0. 4. Reordered validation functions, and cleaned up and reorganized some of them to get rid of redundant logic. -------------------------------------------------------------------------------- -- Harald Hope - Tue, 21 Sep 2021 19:57:01 -0700 ================================================================================ Version: 3.4.00 Date: 2021-08-20 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New major version that rolls up recent new -E, -X, --no-md5 features (now that they are reasonably stable), new changelog format, AAC support, and changed options for --verbosity,-v and --version, into 3.4.00. Also some small bug fixes, tweaks, adjustments, and new feature --no-md5. -------------------------------------------------------------------------------- BUGS: 1. --start had a bug when start > 1, it needed to subtract 1 from count to show correct total in auto.tag. This was the expected result: Actual totals: 15 tracks, 2 missing. --start 3, 13 real tracks. It would have shown 16 track count in auto.tag in that case before the fix. 2. When using some features with -s [item-directory] instead of -s ./, paths were not reset correctly for all features, resulting in failed operations. -------------------------------------------------------------------------------- FIXES: 1. Added more date syntax variants to -Xd date correct tool. Had failed to handle Month-DD-YYYY syntax. Fixed glitch that made MM/DD/[45]Y fail. Fixed Month DD, YYYY. 2. Added more track numbering variants to -Xn too. Failed to handle '01] '. 3. Tweaked --prefill, let it start looking for track numbers if line > 4. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added --no-md5 for -D/-K, to go along with --no-ffp. md5 generation takes a long time, and isn't needed for certain purposes. This can be quite useful when checking many ffps from many recordings. For example: acxi -s./ -K --no-md5 --test > ffps.txt The --test flag makes it not do the actual ffp file creation, which isn't necessarily desirable. 2. Added 'q' to --infofix/-X, this lets you add in two rows after top band / gig info header, Quality: /4 () and FLAC: bits/sample frequency (channels). 3. To go along with 2, added --info-rating {2-xxx} to let people set different default ratings. Also added INFO_RATING item to tagging user values section. -------------------------------------------------------------------------------- CHANGES: 1. Got rid of --log, --basic, --full, --verbose, and replaced them with -v/--verbosity [0-4]. Left --quiet and --debug, since those make sense. Left internal support for --basic, --full, --verbose, and --log to not break any user habits. I'm not sure why acxi ever used LOG_LEVEL, I suspect it was some legacy thing that was just used without thinking about it. But it's annoyed me for a while since it makes no sense either reading the code or trying to explain it in man/help since --log never logged anything, it was just a screen output verbosity switch. -v [0-4] is also relatively standard option for verbosity levels, it's also less typing. 2. Got rid of -v as alternate for --version, having only --version is fine, and was wasting the more useful -v short form for --verbosity. 3. Changed configuration variables LOG_LEVEL to VERBOSITY, but left internal support for legacy LOG_LEVEL. While top configurations will show $VERBOSITY, user configuration tool supports either. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Man, help updates for -v/--verbosity change, and for new --no-ffp feature. Reordered configuration values section to be a bit more clear, some things were not alphabetically listed within sections, sections were slightly oddly ordered. Added q explanation to --infofix and INFO_RATING to config section. 2. Made this changelog match new format of inxi.changelog, which is easier to work with, and easier to read. Using easier to scan subject headers BUGS, FIXES, ENHANCEMENTS, CHANGES, DOCUMENTATION, CODE, plus line dividers, and extra linebreaks to avoid having it all crammed together and hard to read. -------------------------------------------------------------------------------- CODE: 1. More cleanups of unnecessary whitespace after ( or before ). 2. Refactored ffp/md5 create to match ffp/md5 verify, broke into 3 subs, which makes it cleaner. 3. Changed all internal uses of $LOG_LEVEL to $VERBOSITY, which is what it should have always been since acxi has never logged, and this was just an output verbosity feature all along. 4. Added space after all comments that contain logic or variables. This will let geany/scite users edit acxi with code folding. This is due to a scite folding engine weakness where it gets confused and tries to treat stuff after # as actual logic. ================================================================================ Version: 3.3.29 Date: 2021-06-29 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- This is another big trader release, lots of new features, mostly specialized but very useful. Note that the official 'release' 3.3.28 was skipped because all these changes sort of flowed into one another, and took a while, and a lot of testing, to get stable and reasonably reliable. While this will never be done, the logic is now radically enhanced, and really has optimized the process of dealing with audio collection tagging while not resorting to the types of automated and often drastically wrong bulk taggers, which can never be reliable due to the randomness of user data and behavior, but the steps are now very optimized and generally require very little effort to yield excellent and reliable tagging results. Enjoy, while most of these new features are very specialized, if you recognize what is being done and appreciate the ability to create high quality and reliable tagging, you may just be among the people who will benefit from these changes. If not, well, that's fine too, this wasn't made for you in that case, so you can move along, nothing to see here. -------------------------------------------------------------------------------- FIXES: 1. Updated error handlers for using non compatible options together, that logic had been too loose, and permitted using options that could not be used together. 2. For larger collections, had forgotten to 'prune' excluded directories from list of files to go through, that leads to slow downs when the dataset is very large, that now prunes as expected. that's for File::Find operations. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added support for AAC and M4A. Note that if you want tags to transfer, use the m4a container format, if not, use aac. This requires using either the native ffmpeg aac codec, or the better regarded libfdk_aac codec. Only supports input type flac. 2. --prefill / -E takes data from well structured and formatted info.txt files and transfers it to auto.tag file. Saves a lot of time. See --prefill-file filename for using alternate info file names, but I don't recommend doing that. Note that -E requires either -S or -M autotag creation options. See man page for required structures. 3. Added default -C/-S/-M auto.tag create to generate 10, not 8, performer lines. Why not, sometimes groups are big. 4. To compliment -E prefill, and speed up tagging even more, added -X/---infofix, which cleans up info.txt file in preparation for prefill of auto.tag. This is getting close to as much as can practically be done without implementiing machine learning, heh. But it's VERY fast now to process a standard show or recording. Any further speedups will result in much less time saved than these did. See man page for -X options and action explanations. d option fixes dates to ISO YYYY-MM-DD format; n fixes track numbers in file, which -E requires to be a specific format; t fixes upper/lower case track titles, wraps track times after title in parentheses if missing (-E ignores those when updating track titles), and w writes the changes to file. Without w, only what would have happened prints out in terminal, with w, the changes are written to file. Very effective and convenient. -------------------------------------------------------------------------------- DOCUMENTATION: 1. For the obsessive, made man page 80 columns wide, ok, who cares? nobody, except people trying to work with command line tools in absurdly narrow terminal windows, but there you have it. We aim to please. General man and help cleanup and fixes as well. Have to update and fix docs once in a while, afterall!! ================================================================================ Version: 3.3.27 Date: 2020-08-22 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bug fix!!! Oops... 3.3.26 flac > flac had issue. -------------------------------------------------------------------------------- BUGS: 1. Many thanks to issue #9 who pointed out that the small changes that made flac to flac conversion possible inadvertently broke flac to lossy conversions, which was obviously a bad thing. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added opus type to --ffmpeg, to make it complete for the free audio codecs. Rarely used, but now you can. -------------------------------------------------------------------------------- CODE: 1. Used this mistake to refactor the validations a bit more to make it easier to avoid such mistakes in the future, and also updated the man page to add some new options and features which were not completely documented, or documented inconsistently. ================================================================================ Version: 3.3.26 Date: 2020-08-18 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Flac > Flac conversion, tiny update As changes go, this may be the smallest one ever, I think I only had to add something like 4 to 8 characters in acxi, but might as well call it the current acxi re releases. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Just because, well, sometimes in rare cases you might want to rerip flac files you got from some random place to a new set of flac files. For example, if you get some old flacs, and just want to make sure they are actually up to date and with the quality level you want, you just run: acxi -i flac -o flac -s [source] -d [destination] -q 8 and away you go, new flacs. Note, I came across a case where a very old flac file would not convert to a lossy format because there was something wrong with the flac formatting, the codec was too old that had been used to convert it, or something, in the end, with that one, I just used audacity, open file, export to itself as flac, then it all worked, but I thought, well, why not? Sometimes you have flacs you have little to no idea about how they were made, and maybe you prefer always having quality 8, as in the above example, and don't want to spend any time researching the old flac files. ================================================================================ Version: 3.3.25 Date: 2020-05-03 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bug fix release. -M used with --start exposed a small bug in auto.tag generation. -------------------------------------------------------------------------------- BUGS: 1. Found a small bug, if -M multidisc auto.tag file generated, and --start used that is not 1, the disc totals would not reflect the different --start value. There was actually another bug in the logic, but it was only exposed when -M + --start were used together. ================================================================================ Version: 3.3.24 Date: 2020-04-23 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Point release - enforce -s/--source use for tagging/checksum options. -------------------------------------------------------------------------------- FIXES: 1. Only one change, but I realized I kept forgetting to set -s explicitly for -A, -C, -S, -M, -G, -T, -I, -V tagging or checksum options. That's actually quite dangerous to your collection, particularly when using something like -I or -T, and I'd made that mistake enough times to realize I had to enforce -s explicit use for these. ================================================================================ Version: 3.3.23 Date: 2020-04-11 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Two small fixes, to make things a bit more consistent and intuitive. -------------------------------------------------------------------------------- FIXES: 1. Added 'UNSET' value to --tag, so you can remove a single or more tags and their content, not just modify or add them. 2. A slightly complicated logical puzzle, now --clean also removes excluded directories / files as expected, and subsequent sync acfions will not create the excluded directories, which was the case before this correction. ================================================================================ Version: 3.3.22 Date: 2020-03-09 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Some small and convenient updates: -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added --start [integer] to let you make tag file generation numbering start from 0 to any integer. This lets you match your tagged track numbers to file track numbers, say, starting at 00.flac, or starting at 05.flac, now the acxi generated auto.tag will reflect that as long as you use the --start [integer] when generating the test file. Note that if you forget, you can just run acxi -Ss./ --test --start 0 for example which will print out the disk/track numbers to terminal and you can just copy that into your auto.tag file if you already had started it. 2. Another corner case feature, --recurse [integer], let's you run acxi only on the directory you want, going in from 0 to x levels. This has various utility, for instance, if you don't want to include a subdirectory of flacs, you would use -Ss./ --recurse 0 and it will only generate auto.tag data for the level you are in. 3. Issue #8 requested a way to override default behavior to skip all '.' dot files, added --dot, --no-dot [override for if you use DOT=true in configuration file], and configuration item DOT, which takes true/false value. Since false is the default acxi behavior, the only value that makes sense to use there is true, otherwise don't use that configuration item. ================================================================================ Version: 3.3.21 Date: 2020-01-22 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Several bug fixes in the 20/21 releases: -------------------------------------------------------------------------------- BUGS: 1. Small bug introduced that made acxi not start on older Perls due to accidental use of a Perl 5.028 and newer feature. 2. acxi was not properly escaping the tag data for MP3 files, which led to failures in some cases of strange character use. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added support for AIF lossless type. ================================================================================ Version: 3.3.19 Date: 2019-12-31 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- This turned into a big release, lots of new features, mostly around making tagging and image embedding faster and easier. Also some bug fixes that matter in corner cases. -------------------------------------------------------------------------------- FIXES: 1. Fixed -D checksum delete, better handling of weird ffp.txt and md5.txt type file names, now it will catch and delete more than before. 2. Finally figured out how to fix an annoying error that would pop up when File::Find was trying to read files in a root only readable directory, like lost+found, now correctly using File::Find::prune for all non readable directories. Could not use this for non-readable files because I found cases of readable files tripping the non readable input warning message. Only shows the message for each directory once per update to avoid redundant messages. 3. Found an oversight, file name escaping was not being done on tagging, only syncing, so I made new escape_file and unescape_file subroutines, and now everything escapes and unescapes as expected. Tested on worst case file names i use for testing purposes. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Expanded auto.tag to have 8 PERFORMER, 5 COMMENT, 4 SOURCE, items, and added CDDB and ISRC in case you want to add or preserve those CD database ID values. This should be enough lines to handle most common situations. 2. New feature! --image/-I takes file name, or full path, to image file to embed into flac files. This is a flac only feature. Note that I urge moving to opus if you like embedded album art, opus supports natively getting the meta data, including image blocks, from flac files, but ogg only supports the comment block, doing images with ogg is a pain and is probably never going to happen in acxi, unless someone provides a neat and clean patch. 3. Another new feature, --tag/-T, which takes an argument of structure: "TAG1%:value^^TAG2%:value", where TAGx is the name of the FLAC comment field you want to replace or update or add. This lets you update for example all the files in a folder to have the same GENRE, or update artist/album name, or dates, whatever. 4. Added -R as shortcut for --remove-images now that --images is running, that can be useful. Note that --autotag and --image will never add images if the flac file already has image blocks in it, so -R is required to force the removal there. 5. Added --remove-padding/-P option, to force attempt at padding removal on tagging updates. This really slows tagging down, and as far as I could tell, repeated tagging does not appear to change padding, so I made this a non default action for -A and -T actions. ================================================================================ Version: 3.3.18 Date: 2019-12-19 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Maintenance release. None massive, but they add up to a nice package of improvements and enhancements -------------------------------------------------------------------------------- BUGS: 1. Fixed bug with ffmpeg based shn/wav/ to flac conversion. The flac quality was not being used, and it would always default to the ffmpeg default (5, I think). Technically, this was the cause: -aq / -q:a do not actually do anything, ffmpeg reverts to default quality 5 always. This is fixed by using -compression_level instead, which works as expected. -------------------------------------------------------------------------------- FIXES: 1. Fixed missing linebreak in help menu, that made the output after last line for --clean fail to wrap, now it's all hunky-dory. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added a really silly but on rare occasion useful feature, now acxi will let you convert mp3 to flac. Why? don't do it, there's only a tiny handful of cases where this makes any sense at all. But now you can. 2. Added 2 more PERFORMER%: items and 1 more COMMENT%: to default auto.tag, that avoids having to manually add them if you needed more, 6 performers seems to cover most cases. -------------------------------------------------------------------------------- CODE: 1. Added case insensitive sorts, no idea how I missed that one, now as acxi chugs through your collection, the sorts will be a more intuitive case insensitive as the syncs etc run. ================================================================================ Version: 3.3.17 Date: 2019-10-19 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- This is just a small point release. -------------------------------------------------------------------------------- BUGS: 1. I'd neglected to reset the list of found files each time file find was used, which led to glitches when using the new -AD / -AK combination option. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. The main new feature is adding -M @ for alphabetical pattern matching, for cases where you want to use letters for disk numbers, like A-01.flac for example. There are cases where this makes sense, not often, but sometimes. This extends -M, which previously only supported the % ([0-9]) item, to support pretty much any real world multidisc indicator scenario in a file name. ================================================================================ Version: 3.3.16 Date: 2019-10-08 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Some small fixes and enhancements. -------------------------------------------------------------------------------- FIXES: 1. Added backtick ` escape. 2. Adjusted default copy values, removed some big file types, pdf, doc, tif, which a lossy collection probably does not need. 3. Removed --alt-ag, which was awkward to use, now --aggregate accepts a comma separated list of file names and types. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added --exclude, to let people exclude any string or strings found in the value passed to it. 5. Made it possible to do: acxi -AD [or -AK] -s ... so you don't have to type the stuff out twice when tagging then generating checksum files. ================================================================================ Version: 3.3.14 Date: 2019-08-14 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Documentation only release. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updated man, help, and doc pages. ================================================================================ Version: 3.3.12 Date: 2019-08-12 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New feature added, -G. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --aggregate/-G and --alt-ag [track id] which lets you collect all auto.tag files, or with --alt-ag, any other filename in a collection to one place. This can be useful for tracking changes and exchanging information about such things. ================================================================================ Version: 3.3.06 Date: 2019-08-10 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- A few small enhancements, -K and -D. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. New shortcuts: -K for --checksum; -D for --checksum-delete, -V for --checksum-verify. Got tired of typing the long forms. ================================================================================ Version: 3.3.05 Date: 2019-08-10 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New feature, -M. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --autotag-create-multi / -M will follow a pattern you provide it to identify your track numbering scheme for multi disc sets. This still has to be documented, but it's working well. I was initially thinking of making the logic 'smart' and to try to figure out automatically when file starters indicated disc numbers, but there are so many variants, it wasn't going to happen. Note: this does not support multi folder disc storage, like: Disc 1/ Disc 2/ because that's a real pain to deal with in automated systems that have to figure out where they are in your music library without actually knowing that. But assuming you've gotten rid of those legacy ways of storing per cd files, this will speed things up significantly, to a few minutes on a large multi disc set. ================================================================================ Version: 3.3.04 Date: 2019-08-10 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Fixes to checksum features. -------------------------------------------------------------------------------- FIXES: 1. Stablized --checksum-verify, it now largely works as intended, checks against existing md5 files, and checks flac file integrity. 2. Converts windows or *nix line endings and folder paths to the local version so the .md5 sum file data will work no matter what OS generated the file or is checking it. ================================================================================ Version: 3.3.03 Date: 2019-08-09 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New --checksum-verify feature. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. New feature --checksum-verify, to be used, currently, with --checksum or --checksum-delete. Will also verify FLAC files. This is time consuming, and is not yet handled by forking, and may not be because making forking output consistent is a real pain. ================================================================================ Version: 3.3.02 Date: 2019-08-09 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bug fixes, fixes, new --ffmpeg experimental feature. -------------------------------------------------------------------------------- BUGS: 1. --checksum was not correctly changing directories, and so would only make the checksums for the first directory it encountered in the following directories, resulting in checksum test failures, of course. -------------------------------------------------------------------------------- FIXES: 1. Improvement. All the features now sort the file list so the files/directories are processed in order, which makes for nicer screen output. 2. Fixed some help menu ordering things. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added --ffmpeg flag. Don't use this, it's experimental, and so far the experiments don't look or work well. -------------------------------------------------------------------------------- CHANGES: 1. Changed default opus bitrate to 144. ================================================================================ Version: 3.3.0 Date: 2019-07-27 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Rolling all the recent updates into acxi 3.3. I believe I've found all the issues I'm going to find on my own with tagging and image embedding. -------------------------------------------------------------------------------- FIXES: 1. Better handling of file name/paths, now avoiding some errors that could happen if file name contained regex characters. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Self updater -U/--update. No need to manually grab man/acxi from github anymore, let acxi do it for you. 2. Autotagging: --autotag/-A, --autotag-create/-C, --autotag-create-single/-S, --remove-images, which work with the newly created auto.tag text file format for quickly creating the tag data for a collection/album. Does not support Forking. 3. Checksum generation: --checksum and --checksum-delete. Either only create, or first delete old files, then create new checksum files. Does not support Forking. Only support flac ffp and md5. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Documentation pages: https://smxi.org/docs/acxi-man.htm https://smxi.org/docs/acxi-options.htm ================================================================================ Version: 3.2.16 Date: 2019-07-27 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Self updater -U added. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. -U self updater. I got tired of manually updating it. Now it joins all the other *xi tools to have a self-updater. 2. Preserves REPLAYGAIN values when creating autotag-create file. This can help when the people who made the source flacs took the time to set replaygain data, but did not do any other tagging, or did incorrect tagging. ================================================================================ Version: 3.2.11 Date: 2019-07-27 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- auto.tag prefills added for single, checksum improvements. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --autotag-create-single will also fill in the TRACKTOTAL and TRACKNUMBER for a single disk set. Due to complexity of handling various user multidisk naming and folder schemes, too hard to automate. But for single disks, it will speed up the auto.tag file generation process. -------------------------------------------------------------------------------- CHANGES: 1. --checksum-delete now triggers --checksum so you don't have to type it again. ================================================================================ Version: 3.2.8 Date: 2019-07-26 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bugs and new auto tag feature. -------------------------------------------------------------------------------- BUGS: 1. Found a long standing weakness that would result in some file paths/names containing regex characters, which would in some cases result in output or internal errors, failures to find paths. This has been corrected, and now all file trims use s/\Q$PATH\E// escapes, which I didn't know about. Those prevent anything in the variables executing as a regex character. Easy fix! -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --autotag-create which creates an auto.tag file in the folder you are working on, prepopulated with track blocks with filenames already filled in. ================================================================================ Version: 3.2.4 Date: 2019-07-24 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New auto tag feature. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --autotag which uses a file, auto.tag, which follows a specific syntax to automatically generate tags for a recording/album. Includes support for per track specifics, etc. ================================================================================ Version: 3.2.2 Date: 2019-07-21 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Fixes, new checksum features, docs updates. -------------------------------------------------------------------------------- FIXES: 1. Trimming off source and destination directory paths from copy, sync, and checksum generation paths. Since those show at the beginning, there's no point in repeating them over and over. --log 3 / --full will show the full paths however if you want. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. --checksum and --checksum-delete. --checksum will create .md5 and .ffp checksum files in each directory in --source that contains flac files. Only flac lossless format supported. --checksum-delete if used together with --checksum will delete all .md5, .ffp, .m5.txt, and .ffp.txt. The latter two are because some tools add a .txt extension, which is an error. Current requirements are metaflac for .ffp generation, and md5sum for md5 generation, though I may move to native Perl for md5 since there is no strict need to use an external program for that. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Man and help updated to show checksum features, and also rearranged a bit more to make more readable. Note that you can view online versions of the help and man at: https://smxi.org/docs/acxi-man.htm https://smxi.org/docs/acxi-options.htm -------------------------------------------------------------------------------- CODE: 1. More refactoring, now it's pretty much done, all main logic is wrapped in packages aka classes, which makes working on it easier. ================================================================================ Version: 3.2.0 Date: 2019-07-15 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Big update. Forking, shn to flac, copy type improvements, --log output option, docs updates. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. now supports forking, using either --fork/-F [0-xxx], or config value: FORK=[0-xx]. This lets you use multithreading to run big conversions more quickly. Note that with really big jobs, in some cases, the OS will act a bit odd after a while if you assigned too many forks, but in general is very fast and works well. Thanks prupert for this suggestion on techpattern.com/forums. Requires Perl module Parallel::ForkManager, will exit if FORK is greater than 0 and module not present. 2. Finally, option to convert shn to flac. Requires shorten codec library and ffmpeg. See README.txt for where to find the shorten codec if you don't have it (hint: if you can play shn files, you probably have it). 3. New option: -a/--append, which lets you append more copy types on a one time basis to your existing list. This can be useful if for example you are doing a one time conversion of a mixed flac/shn directory to all flac: acxi -i shn -o flac -s /my/shn-flacs -d /my/flacs -a flac will copy over your flacs to the flac, if any found, and convert the shn to flac. 4. Screen output verbosity can now be triggered by the new --log [0-3] if you prefer that way to trigger verbosity levels. --debug will keep working but may be used for something else in future versions. -------------------------------------------------------------------------------- CHANGES: 1. Got rid of some confusing terms for screen output: --debug becomes --full --default becomes --basic -------------------------------------------------------------------------------- DOCUMENTATION: 1. Redo of man and help. Help reorganized into two sections, one for syncing options, like -c, -a, -d, -s, -i, -o, --fork, etc. The other is for screen output options, like -h, --version, --log, --basic, --full, --verbose. -------------------------------------------------------------------------------- CODE: 1. Internal refactor to use packages/classes in some areas like Validation and configuration file processing. This makes the code easier to work on since you can fold those packages away in your code editor. ================================================================================ Version: 3.1.3 Date: 2019-07-05 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Fixes and docs updates. nlink options added. -------------------------------------------------------------------------------- FIXES: 1. Issue #2 - fix for failure of File::Find to detect files or directories in a cifs mounted smb file system. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added default $File::Find::dont_use_nlink = 1 with override --nlink which sets it to 0, --no-nlink which sets it to 1, default, plus configuration item which allows for override as well via DONT_USE_NLINK item. Values 0 or 1. 1 is default. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updates to man page as well to note the new options and explanation. ================================================================================ Version: 3.1.2 Date: 2019-07-04 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bugs and fixes. -------------------------------------------------------------------------------- BUGS: 1. When -q used, failed to assign quality level to opus. -------------------------------------------------------------------------------- FIXES: 1. Improved error handling, now prints out all pretest errors before exiting. This should make it easier for new users to figure out how to setup acxi. Also made tests more granular, now does not run quality or application present tests if invalid input/output type. Note that acxi will exit with the last error return number found in that case. ================================================================================ Version: 3.1.1 Date: 2019-01-03 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Bugs and Fixes. -------------------------------------------------------------------------------- BUGS: 1. Ogg quality level assigned to opus which leads to the worst quality level for opus. -------------------------------------------------------------------------------- FIXES: 1. Added two filters (for " and $) in path/file name. This corrected issue #1 by gyratory. Thanks gyratory for finding that oversight and filing an issue report. ================================================================================ Version: 3.1.0 Date: 2018-12-18 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- Opus support, ogg fractional quality, docs. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added support for Opus output type. 2. Added Ogg quality fractional levels, and the -1 value. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Corrected man/comments/help inconsistencies. ================================================================================ Version: 3.0.0 Date: 2018-12-07 -------------------------------------------------------------------------------- RELEASE NOTES: -------------------------------------------------------------------------------- New --clean, --test option, cleanups, fixes, bug fixes, man page added. -------------------------------------------------------------------------------- BUGS: 1. Some tagging bugs were fixed for flac->mp3 generation. -------------------------------------------------------------------------------- FIXES: 1. Improved error handling. More protections in place against user configuration and option use errors. 2. Improved output formatting, should usually fit in 80 column display. 3. Added the ability to have your target (compressed, lossy) directory inside your source directory. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. New --test option to test your configurations before actually running the syncs live. 2. New --clean option to remove files/directories not found in your source directory. Includes protections against accidental use. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Created a man page. -------------------------------------------------------------------------------- CODE: 1. Modernized Perl 5. The Perl runs with warnings/strict mode enabled as well.