Skip to main content

Archive extractor and executable runner - scans directories, recursively extracts nested archives, and provides an interactive interface to run executables.

Project description

PeelX

PeelX Hero

Recursively extract nested archives and run every installer. One command, zero hassle.


How It Works

BEFORE                                    AFTER
downloads/                                downloads/
  Gigabyte_LAN_Driver.zip                   Gigabyte_LAN_Driver/
    -> LAN_Driver_v2.1.rar                    setup.exe
        -> setup.exe                          readme.nfo
        -> readme.nfo                       ASUS_Audio_v6.0/
  ASUS_Audio_v6.0.zip                         install.exe
    -> audio_driver.zip                       release.txt
        -> install.exe                      MSI_BIOS_Update/
        -> release.txt                        flash.exe
  MSI_BIOS_Update.7z                          info.nfo
    -> bios_v1.4.rar
        -> flash.exe
        -> info.nfo

  15 archives, nested 2-3 deep              Clean folders, ready to run
  + .sfv, .par2, .r00-.r99 clutter          All archives and junk removed

One command:

peelx downloads/

PeelX extracts every archive (including archives inside archives), cleans up all the leftovers, and drops you into an interactive selector where you can run each executable in sequence.


Features

Recursive nested extraction - Archives within archives within archives. PeelX keeps extracting until there's nothing left to unpack, up to 50 levels deep.

Split archive support - Handles multi-part archives (.r00-.r99, .z01-.z99, .001-.999, .7z.001, etc.) automatically. Extracts from the main archive file and cleans up every split part.

Interactive executable selector - After extraction, a curses-based interface shows every executable found across all your extracted folders. Navigate with arrow keys, preview NFO/README files in a side panel, and run installers directly. It also tracks which ones you've already run.

Automatic cleanup - Removes all archive files, split parts, checksums (.sfv, .md5, .sha1, .sha256, .crc), and parity files (.par2) after extraction. NFO files and extracted content are preserved.

Cross-platform - Windows, Linux, macOS, and WSL. On WSL, PeelX auto-detects the environment and converts paths so Windows executables launch correctly.

Safety first - Dry-run mode lets you preview every action without touching files. Backup mode copies archives before deletion. A hard limit of 50 extraction iterations prevents runaway loops.


Installation

From PyPI (recommended)

# Core install (ZIP, TAR, GZ, BZ2, XZ support built-in)
pip install peelx

# Full install with RAR and 7z support
pip install peelx[all]

Windows Standalone

Download peelx.exe from the Releases page. No Python required, just drop it in your PATH or run it directly.

From Source

git clone https://github.com/TheDecipherist/PeelX.git
cd PeelX
pip install -e .[all]
peelx

Quick Start

# Run in the current directory
peelx .

# Run against a specific folder
peelx ~/Downloads/drivers/

# Preview what would happen (no files modified)
peelx ~/Downloads/drivers/ --dry-run

# Detailed output showing every file
peelx ~/Downloads/drivers/ --debug

That's it. PeelX scans the target directory, finds every folder containing archives, extracts recursively, cleans up, and launches the interactive selector.


Why PeelX?

You've been there. Everyone has.

You just built a new PC or you're setting up a fresh Windows install, so you head to Gigabyte's support page to grab drivers. Fifteen downloads later your Downloads folder is full of ZIP files. You open the first one. Inside: another ZIP. Or a RAR. You extract that too. Now you've got a setup.exe buried two folders deep alongside a pile of .sfv and .r00 files you don't need.

Multiply that by fifteen. That's thirty manual extractions, fifteen rounds of "find the installer," and fifteen cleanup passes to get rid of the archive junk. Tedious, repetitive, and exactly the kind of thing a script should handle.

It's not just a motherboard driver problem either. Firmware updates, game mods, driver packs, software collections - anything distributed as nested archives hits the same wall. Double-wrapped ZIPs are everywhere.

PeelX was built to make this a one-command operation:

peelx ~/Downloads/drivers/

Every archive extracted. Every nested archive extracted. All the .sfv, .par2, and .r00 files cleaned up. Every setup.exe found and presented in a clean interface so you can run them one by one.


Interactive Selector

After extraction, PeelX launches an interactive curses-based UI with two display modes:

Split-Screen Mode (default)

+-------------------------------------------+------------------------+
|  EXECUTABLES                              |  PREVIEW               |
|                                           |                        |
|  [ ] Gigabyte_LAN/setup.exe              |  Release: LAN Driver   |
|  [*] ASUS_Audio/install.exe   (ran 1x)   |  Version: 6.0.1.8     |
|  [ ] MSI_BIOS/flash.exe                  |  Date: 2025-03-15     |
|  [ ] Realtek_WiFi/setup.exe              |                        |
|  [*] NVIDIA_Driver/setup.exe  (ran 1x)   |  Install Notes:        |
|                                           |  Run as administrator  |
|                                           |  Reboot after install  |
+-------------------------------------------+------------------------+
|  Up/Down: Navigate | Enter: Run | q: Quit | Right: Full preview   |
+-------------------------------------------+------------------------+

Full-Screen Preview Mode

Press the right arrow key to expand the preview panel to full screen. Useful for reading longer NFO files. Press left arrow to go back to the split view.

Key Features

  • NFO/README auto-detection - Finds .nfo, .txt, .diz, and .readme files associated with each executable. Uses priority-based matching: exact name match, common readme filenames, any info file in the same directory, then parent directory search.
  • Execution tracking - Executables you've already run show up highlighted in green with a run count. State saves to executions.log so it persists across sessions.
  • Multi-encoding support - Reads info files with UTF-8, Latin-1, CP437, CP1252, and ISO-8859-1 fallback so NFO art renders correctly.

Supported Formats

Format Extensions Notes
ZIP .zip Built-in, no dependencies
TAR .tar, .tgz, .tbz2 Built-in, no dependencies
GZ .gz Built-in, no dependencies
BZ2 .bz2 Built-in, no dependencies
XZ .xz Built-in, no dependencies
RAR .rar, .r00-.r99 Requires rarfile package or system unrar
7z .7z, .7z.001+ Requires py7zr package or system 7z

Split archive variants (.r00, .r01, .z01, .z02, .001, .002, etc.) are all detected and handled automatically.


CLI Options

peelx [directory] [options]

Positional:
  directory              Directory to scan (default: archives)

Options:
  --dry-run              Preview all actions without extracting or deleting
  --backup               Create backup copies before deleting archives
  --no-interactive       Use simple text menu instead of curses UI
  --debug                Show detailed output with individual file names
  -h, --help             Show help message

Building a Windows Executable

PeelX includes a build script that packages everything into a standalone .exe using PyInstaller:

# If installed via pip
peelx-build-exe

# Or from source
python build_exe.py

The build script installs any missing dependencies (PyInstaller, rarfile, py7zr, windows-curses) and produces a single-file executable at dist/peelx.exe. Has to be run on Windows since PyInstaller builds for the current platform.


License

PeelX is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

peelx-1.0.2.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

peelx-1.0.2-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file peelx-1.0.2.tar.gz.

File metadata

  • Download URL: peelx-1.0.2.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for peelx-1.0.2.tar.gz
Algorithm Hash digest
SHA256 63d7137a33da7e17343e61f587cf4617e1218d39a678c5bcb51f57eaa1477b7f
MD5 388c3ef0a6be25c520dc09938720046f
BLAKE2b-256 e10c24c7b9fd9c37e1dc341e95ab82348a2281b734c5724e9e0e5faa787c7a80

See more details on using hashes here.

File details

Details for the file peelx-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: peelx-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for peelx-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1923b17d8605cac0effc02954455d6b2cfd74ab73a1d59299b4be8cdbeaecfe1
MD5 05fe64516cd9b90700d833a364da63f2
BLAKE2b-256 8df287c721ad2a500b0f9eca0e6c3817e3c218cfb12b794445bb0c257f18885b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page