OK, I'm definitely doing something wrong here.
As mentioned above, I'm switching from using the PyFFI Automator application, to just using PyFFI directly. So I have the latest version of Python loaded (64-bit), and PyFFI 2.1.7. Note that this setup does work in the automator.
I extracted all of "Oblivion - Meshes.bsa" into the PyFFI\utilities\toaster\in folder, then right clicked on oblivion_optimize.ini and chose "Run PyFFI".
That's when things went haywire...
I started receiving HUNDREDS of "no handlers could be found..." errors, which from previous threads I know to be harmless. But I thought that message was only supposed to appear a couple times, not hundreds or thousands?
Additionally, python is being launched several times per second, such that hundreds of instances appear in my Task Manager, and all 4GB of my memory and 100% of my processor is being used. And nothing is appearing in the Out folder.
What the heck am I doing wrong? (Or, point me to some documentation on this, as I've had no luck as of yet.)
I woudn't suggest sticking with the 64bit Python for one. If you're using Bash, it isn't supported yet, and fiddling with multiple Python installs on the same machine gets dicey.
Second, you don't need to do stuff in the in/out folders anymore either. The OP really needs to get updated with good, solid, actually useful information at some point that reflects where PyFFI has evolved to.
You can extract your meshes into any folder you want, preferably NOT somewhere under Program Files or ProgramFiles(x86) because UAC will beat you to a pulp for that. Then all you have to do is right click on the folder you extracted the meshes to and select "Optimize with PyFFI". One window should open, and it'll sit quietly using up as many cores as you've told that ini file to allow. It'll take a considerable amount of time, but the end result is the same. Also, PyFFI 2.1.7 hasn't displayed any of the previous version's errors or warnings on the vanilla meshes, so it should sail through without any trouble. It even properly skips the .egm and .tri files that come with helms and some hairs. So that's no longer a worry either.
If you have meshes that have already had errors introduced, 2.1.7 can't fix those. You'll need to do vanilla ones again on any it broke before.
If it helps anyone, this is my current Oblivion_optimize.ini file:
[main]; run optimize spellspell = optimize[options]; any patterns of files that should be skipped, being as conservative as possible; (without quotes, separate different regular expressions by a space); at the moment:; - skipping hair nifs (vertex ordering!); - skipping roothavok nifs (not sure why, investigating); - skipping any nif that is known to have an egm or tri associated with it; find . -name "*.egm" -or -name "*.tri" | sed 'sX.*/XXg' | sed 'sX.tri$XXg' | sed 'sX.egm$XXg' | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' | sort | uniq | xargs; (not necessary if all egm files are included, such as in vanilla Oblivion,; but some mods only include nifs without egm files, and this makes sure; these cases are handled as well); note: you can safely remove this list if you are sure that you are; optimizing fully extracted folders onlyskip = (?i)(?
That nasty looking skip sequence at the end was something H2ODK came up with and works well, but it needs a slightly altered process to be sure everything gets done. That's where oblivion_optimize2.ini file comes in:
[main]; run optimize spellspell = optimize[options]; any patterns of files that should be skipped; regex expressions; only run on files with these patternsonly = (?i)gnd[.]nif$ (?i)meshes.clutter
When I do an optimization, I use two batch files. #1:
"C:\Python26\python.exe" "C:\Python26\Scripts\niftoaster.py" --noninteractive --ini-file="C:\Program Files (x86)\PyFFI\utilities\toaster\default.ini" --ini-file="C:\Program Files (x86)\PyFFI\utilities\toaster\oblivion_optimize.ini" --dest-dir= --source-dir= --pause --overwrite "%1" > "PyFFILog.txt"
#2:
"C:\Python26\python.exe" "C:\Python26\Scripts\niftoaster.py" --noninteractive --ini-file="C:\Program Files (x86)\PyFFI\utilities\toaster\default.ini" --ini-file="C:\Program Files (x86)\PyFFI\utilities\toaster\oblivion_optimize2.ini" --dest-dir= --source-dir= --pause --overwrite "%1" > "PyFFILog.txt"
The first one takes ages to complete, the second usually goes by fairly quick because it's only looking for a specific set of info. What these do though is add a much more robust extra layer of "just in case" so that it REALLY won't touch any helmets and/or hairs and such.
I also have one other used specifically for cleaning any loose _far.nif files:
"C:\Python26\python.exe" "C:\Python26\Scripts\niftoaster.py" --noninteractive opt_cleanfarnif --dest-dir= --source-dir= --pause --overwrite "%1" > "PyFFILog.txt"
You may also notice that they all drop a log file when they're done. That's handy for quick-scanning for the word error or warning to see if any bugs cropped up. It also reduces the amount of spam from the handler messages.