CLI tool for building and maintaining a local offline archive of ZX Spectrum and related releases from the ZXArt API.
- API Integration: Loads releases and associated files from ZXArt.
- Local Database Sync: Stores products, releases, and file metadata in a local SQLite database with deduplication and normalization.
- TOSEC-style Naming:
- Cleans and transliterates titles and publisher names (handles Cyrillic, Polish, Czech, Spanish, etc.).
- Builds names with flags like
[h],[p],[tr], etc., based on legal status and release type. - Handles versioning, language tags, media parts (e.g. Tape 1 of 2), and duplicate indexing.
- Hardware-based Folder Structure:
- Organizes files into folders by hardware platform (e.g.
ZX Spectrum,ATM,TS-Conf,Next,Sam Coupe,ZX80, etc.). - Further subfolders based on category, starting letter, and product title.
- Organizes files into folders by hardware platform (e.g.
- Additional Hardware Flags:
- Detects and adds
(GS),(ULAPlus),(KM8B),(128K),(+D)tags in TOSEC names.
- Detects and adds
- Automatic File Path Resolution:
- Generates clean, consistent, and deduplicated storage paths.
- Includes support for multi-part releases and different formats (tape, disk, rom, snapshot, etc.).
- CLI-only project
- No web server
- No external database server
- Local database:
storage/database.sqlite
Install dependencies:
docker compose run --rm composer installList available commands:
docker compose run --rm cli listRun synchronization:
docker compose run --rm cli sync
docker compose run --rm cli sync:releasesReset local database:
docker compose run --rm cli resetRun a queued task or daemon:
docker compose run --rm cli run:task <id>
docker compose run --rm cli run:daemonIf PHP 8.2+ is installed locally, commands can also be run without Docker:
composer install
php ./cli.php list
php ./cli.php sync
php ./cli.php sync:releases
php ./cli.php reset