A Windows background watcher that auto-extracts scene releases dropped into a folder.
For each new subfolder, it:
- Extracts every
.zip(iteratively, so wrapper-zip-inside-zip works). - Extracts the resulting
.rarset (multi-volume.partNN.rarand old-style.rNNboth handled). - Sends the original zip and rar volumes to the Windows Recycle Bin once extraction succeeds — so you can right-click → Restore in Explorer if you ever need them back.
Each release ends with a one-line summary in the log:
[PASS] Some.Release-CORE -- 6 archives, 31.2 MB freed -> Recycle Bin (4.3s)
[FAIL] Other.Release-CORE -- rar:core.part1.rar (2 ok, archives kept, 1.1s)
[SKIP] Already.Extracted -- no archives (0.0s)
Tested against patterns like:
cr-kpl01.zip ... cr-kpl48.zip→core.part01.rar ... core.part48.rarcr-fu381.zip cr-fu382.zip→core.part1.rar core.part2.rarampuqkh1.zip ... ampuqkh5.zip→amped.part1.rar ... amped.part5.rarcr-qna4f.zip→core.rarlxp64p68.zip→ wrapper-zip-inside-zip
If extraction of any archive fails, no archives are deleted for that folder — the originals stay so you can investigate.
- Windows
- Python 3.10+ (only required if you don't build the
.exe) - A real
UnRAR.exeor7z.exesomewhere on disk:- Install WinRAR (gives you
C:\Program Files\WinRAR\UnRAR.exe) - Install real 7-Zip from https://www.7-zip.org/ (gives you
C:\Program Files\7-Zip\7z.exe) - Or grab the standalone UnRAR command-line from https://www.rarlab.com/rar_add.htm and drop
UnRAR.exenext tounpacker.py(the script also looks in.\bin\)
- Install WinRAR (gives you
The script auto-detects all the standard locations. Override with --unrar <full-path> if needed.
Don't use the WindowsApps
7z.exeshim. If7z.exeresolves toC:\Users\<you>\AppData\Local\Microsoft\WindowsApps\7z.exe, that's a Microsoft Store install stub — invoking it returns nothing useful and every rar will fail withFailed the read enough data: req=1048576 got=135. The script intentionally skips this path now, but you'll need a real 7-Zip or WinRAR installed.
This project staged itself at F:\Downloads\unpacker\. Double-click install.bat to move it to F:\unpacker\ (Explorer opens to the new location when it's done).
Requires uv.
uv sync
uv run unpacker.py --folder "F:\Downloads"Run this once on your Windows box:
build.batThat installs PyInstaller and produces dist\unpacker.exe. Then:
dist\unpacker.exe --folder "F:\Downloads"run-unpacker.bat is a convenience launcher — edit the FOLDER line at the top and double-click it. It uses dist\unpacker.exe if built, otherwise falls back to python unpacker.py.
| Flag | Default | What it does |
|---|---|---|
-f, --folder |
F:\Downloads |
Folder to watch |
-s, --stability |
30 |
Seconds a folder must be idle before processing — bump this if your downloads are slow so we don't extract while files are still arriving |
-i, --interval |
5 |
How often the worker checks for ready folders |
--unrar |
auto | Explicit path to UnRAR.exe / 7z.exe |
--log |
<script-dir>\unpacker.log |
Log file path (rotated at 2 MB, 3 backups) |
--once |
off | Scan existing subfolders once, process them, then exit |
--no-trash |
off | Permanently delete archives instead of sending them to the Recycle Bin |
--ignore-crc |
off | On rar CRC errors, retry with UnRAR.exe -kb (keep broken). Useful for releases that ship a corrupt companion file (e.g. a bad Vovsoft.url) — everything else still extracts. Requires UnRAR.exe / Rar.exe, not 7z.exe. |
Cleaned-up archives go to the Recycle Bin by default. To recover one:
- Open Explorer → Recycle Bin
- Sort by Date Deleted, find the archive(s)
- Right-click → Restore
Files are restored to their original location inside the release subfolder. If you'd rather skip the Recycle Bin entirely (e.g. these archives are huge and you've verified the unpack works), pass --no-trash.
Easiest: drop a shortcut to run-unpacker.bat into your Startup folder.
Win+R → shell:startup → paste shortcut here
For headless background operation, schedule it via Task Scheduler with "Run whether user is logged on or not".
Everything goes to both the console and unpacker.log next to the script/exe (rotated at 2 MB, 3 backups kept). Per-archive details (zip ->, rar ->, trash) are at INFO level; the one-line [PASS] / [FAIL] / [SKIP] summary is the easiest way to scan history.