Pigroman takes loose files from your Skyrim Special Edition Mods (Skyrim Legendary Edition and Fallout 4 support may come in the future) and packages them into multiple BSA/BA2 files. This is useful if you have very large mods whose assets don't fit in a single BSA/BA2 file.
Pigroman takes one or more "Data" subfolders as input. It then scans the directories recursively and adds files to a specific path up until a certain size threshold is reached. Once the archive is big enough, a new archive is created. To create BSA/BA2 files, Pigroman uses Archive.exe, the packing utility included in the Creation Kit. Pigroman can also create empty .esl files for each archive. This is needed to load multiple BSA files in Skyrim Special Edition, since only one BSA file per esm/esp/esl is supported. The generated .esl files are totally empty and serve for the sole purpose to load the BSA files. Alternatively, you can edit your INI files to load additional archives without having additional plugins.
You need Python 3.7 and pip to use Pigroman.
$ pip install -r requirements.txt
$ python pigroman.py --help
usage: pigroman.py [-h] [-z] [-zz] [-s MAX_BLOCK_SIZE] [-e] -i DATA -f FOLDER
[FOLDER ...] [-nf NOT_FOLDER [NOT_FOLDER ...]] -o
OUTPUT_FOLDER -n OUTPUT_NAME -a ARCHIVE_FOLDER
[-p PARALLEL]
Splits and packs loose files in multiple Bethesda BSA files
optional arguments:
-h, --help show this help message and exit
-z, --compress Compresses the output archives
-zz, --aggregate-duplicates
Experimental option that aggregates identical files
into the same archive. Archive.exe seems to ignore
this.
-s MAX_BLOCK_SIZE, --max-block-size MAX_BLOCK_SIZE
Max size that an archive can assume before creating a
new archive. Note that the last archive can be up to
1/4 bigger than that. Default: 1G
-e, --esl Creates an .esl for each archive.
-i DATA, --data DATA Absolute path to the 'Data' folder. It must be a
folder called 'Data' with the game data structure.
-f FOLDER [FOLDER ...], --folder FOLDER [FOLDER ...]
Subfolders to include in the archive. They can be
either absolute paths to data_folder's subfolders, or
folder names (eg: 'meshes'). Specify more folders
separated by a space to pack multiple folders.
-nf NOT_FOLDER [NOT_FOLDER ...], --not-folder NOT_FOLDER [NOT_FOLDER ...]
Subfolders to exclude in the archive.
-o OUTPUT_FOLDER, --output-folder OUTPUT_FOLDER
BSAs (and ESLs) will be put in this folder.
-n OUTPUT_NAME, --output-name OUTPUT_NAME
Base name of the output archives. An index will be
added at the end of each archive name.
-a ARCHIVE_FOLDER, --archive-folder ARCHIVE_FOLDER
Absolute path to the folder that contains Archive.exe
-p PARALLEL, --parallel PARALLEL
Specified how many Archive.exe instances can be
running at the same time
$ python pigroman.py -e -z -s 1.5G -i "C:\fast_vapore\Skyrim Special Edition\ModOrganizer\mods\SkyVac-lfs\data" -o D:\bsaout -n "skyvac models and textures" -a "C:\fast_vapore\Skyrim Special Edition\Tools\Archive" -f textures meshes
Creates compressed archives (-z) up to ~1.5GB size each (-s), taking C:\fast_vapore\Skyrim Special Edition\ModOrganizer\mods\SkyVac-lfs\data
as data folder (-i), "textures" and "meshes" subfolders (-f), placing the final archives inside "D:\bsaout" (-o), naming them "skyvac models and textures0/1/2/3.bsa" (-n) and creating also "skyvac models and textures0/1/2/3.esl" (-e).
- Check Archive.exe logs to make sure that all files get added correctly
- Add support for multiple Archive.exe instances running in parallel
- GUI
This project is licensed under the GNU AGPL 3 License.
See the “LICENSE” file for more information.