CLIDOWNROM is a cross-platform client that connects to the public CrocDB API to search and download ROMs with a high degree of relevance. It unifies CLI, interactive Shell, TUI, and GUI (with gamepad support) over the same search, filtering, and download services, displaying useful metadata and organizing transfers quickly, safely, and in an automatable way โ ideal for enthusiasts, collectors, and integrators.
- 4 Different Interfaces: CLI, Interactive Shell, TUI, and GUI navigable by joystick
- Smart Download: Multiple connections, automatic retry, and integrity verification
- Advanced Search: Relevance algorithm with filters by platform, region, and year
- Internationalization: Full support for multiple languages
- Smart Cache: Local caching system to optimize performance
- Detailed Logs: Full logging system for debugging and auditing
Non-interactive interface ideal for scripts and automation:
clidownrom search "Super Mario" --platform snes --region USA
clidownrom download --id 12345 --output ./roms/
clidownrom random --platform nes --count 5Advanced REPL with command history and autocomplete:
clidownrom --interface shell
> search "Zelda" --platform snes
> download 1
> historyFull-screen interface navigable by keyboard, inspired by htop:
clidownrom --interface tuiGraphical interface navigable by joystick/gamepad for TV usage:
clidownrom --interface gui- Python 3.8 or higher
- Windows 10+ or Linux (Ubuntu 18.04+)
git clone https://github.com/Oraculo-sh/CLIDOWNROM.git
cd CLIDOWNROM
pip install -r requirements.txtDownload the precompiled executable from the releases page.
# Busca bรกsica
python main.py search "Super Mario Bros"
# Busca com filtros
python main.py search "Zelda" --platform snes --region USA --year 1991
# ROMs aleatรณrias
python main.py random --platform nes --count 10# Download por ID
python main.py download --id 12345
# Download de resultados de busca
python main.py search "Metroid" --download
# Download com configuraรงรตes especรญficas
python main.py download --id 12345 --no-boxart --output ./custom/# Visualizar detalhes
python main.py info --id 12345
# Formato JSON para scripts
python main.py info --id 12345 --format json# Listar configuraรงรตes
python main.py config --list
# Alterar configuraรงรฃo
python main.py config --set download.max_concurrent 5
# Resetar para padrรตes
python main.py config --resetThe user_config.yml file allows you to customize the application's behavior:
api:
base_url: "https://api.crocdb.net"
timeout: 30
max_retries: 3
download:
max_concurrent: 3
timeout: 30
download_boxart: true
verify_integrity: true
app:
language: "en" # ou "pt"
logging:
level: "INFO"
console_output: true
file_output: true| Button | Action |
|---|---|
| A | Select/Confirm |
| B | Back/Cancel |
| X | Download |
| Y | Information |
| D-Pad | Navigate |
| Analog | Navigate (alternative) |
CLIDOWNLOAD/
โโโ ROMS/
โ โโโ [platform]/
โ โ โโโ *.rom
โ โ โโโ boxart/
โ โ โโโ *.jpg
โโโ temp/
โ โโโ downloads/
โ โโโ cache/
โ โโโ teste/
โโโ logs/
โ โโโ lastlog.txt
โ โโโ session-*.log
โโโ config/
โโโ config.yml
- English (en_us) - Default
- Portuguese (pt_br) - Brazilian
- Russian (ru) - ะ ัััะบะธะน
To add new languages, create a YAML file in src/locales/ using en_us.yml as a reference.
The system automatically detects and loads new language files when they are placed in the src/locales/ directory, as long as the filename follows the standard locale code format (e.g., fr_fr.yml, es_es.yml, de_de.yml).
git clone https://github.com/Oraculo-sh/CLIDOWNROM.git
cd CLIDOWNROM
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txtpython -m pytest tests/pyinstaller --onefile --name clidownrom main.py- Automatic caching of platform and region lists
- Configurable expiration time
- Automatic cleanup of old cache
- Automatic mirror speed testing
- Download with multiple connections
- Hash-based integrity verification
- Automatic retry on failure
lastlog.txt: Full output of the last executionsession-*.log: Detailed logs with timestamp- Automatic rotation of old logs
- Fork the project
- Create a branch for your feature (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style
- Add tests for new functionality
- Update documentation when necessary
- Use descriptive commits
- โ Full CLI interface
- โ Interactive Shell interface
- โ TUI interface with Textual
- โ GUI interface with gamepad support
- โ Download system with multiple connections
- โ Smart cache
- โ Internationalization (EN/PT)
- โ Full logging system
- โ Configuration via YAML file
- Gamepad may not work on some Linux distributions without additional configuration
- TUI may have rendering issues in very old terminals
- Very fast downloads may overload some mirrors
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
- CrocDB for the ROMs API
- Python community for excellent libraries
- Contributors and testers
CLI Download ROM - Download your favorite ROMs in style! ๐ฎ