2025-09-10 17:17:34 +02:00
# RGSX CLI — Guide d’ utilisation
Ce guide couvre toutes les commandes disponibles du CLI et fournit des exemples prêts à copier (Windows PowerShell).
2025-09-12 17:00:51 +02:00
## Nouveau: mode interactif
Vous pouvez maintenant lancer une session interactive et enchaîner les commandes sans retaper `python rgsx_cli.py` à chaque fois :
```powershell
python rgsx_cli.py
```
Vous verrez :
```
RGSX CLI interactive mode. Type 'help' for commands, 'exit' to quit.
rgsx>
```
Dans cette session tapez directement les sous-commandes :
```
rgsx> platforms
rgsx> games --platform snes --search mario
rgsx> download --platform snes --game "Super Mario World (USA).zip"
rgsx> history --tail 10
rgsx> exit
```
Extras :
- `help` ou `?` affiche l’ aide globale.
- `exit` ou `quit` quitte la session.
- `--verbose` une fois active les logs détaillés pour toute la session.
## Tableau formaté (platforms)
La commande `platforms` affiche maintenant un tableau ASCII à largeur fixe (sauf avec `--json` ) :
```
+--------------------------------+-----------------+
| Nom de plateforme | Dossier |
+--------------------------------+-----------------+
| Nintendo Entertainment System | nes |
| Super Nintendo Entertainment.. | snes |
| Sega Mega Drive | megadrive |
+--------------------------------+-----------------+
```
Colonnes : 30 caractères pour le nom, 15 pour le dossier (troncature par `...` ).
## Aliases & synonymes d’ options (mis à jour)
Aliases des sous-commandes :
- `platforms` → `p`
- `games` → `g`
- `download` → `dl`
- `clear-history` → `clear`
Options équivalentes (toutes les formes listées sont acceptées) :
- Plateforme : `--platform` , `--p` , `-p`
- Jeu : `--game` , `--g` , `-g`
- Recherche : `--search` , `--s` , `-s`
- Forcer (download) : `--force` , `-f`
- Mode interactif (download) : `--interactive` , `-i`
Exemples avec alias :
```powershell
python rgsx_cli.py dl -p snes -g "Super Mario World (USA).zip"
python rgsx_cli.py g --p snes --s mario
python rgsx_cli.py p --json
python rgsx_cli.py clear
```
## Sélection ambiguë lors d’ un download (nouveau tableau)
Quand vous tentez un téléchargement avec un titre non exact et que le mode interactif est actif (TTY ou `--interactive` ), les correspondances s’ affichent en tableau :
```
No exact result found for this game: mario super yoshi
Select a match to download:
+------+--------------------------------------------------------------+------------+
| # | Title | Size |
+------+--------------------------------------------------------------+------------+
| 1 | Super Mario - Yoshi Island (Japan).zip | 3.2M |
| 2 | Super Mario - Yoshi Island (Japan) (Rev 1).zip | 3.2M |
| 3 | Super Mario - Yoshi Island (Japan) (Rev 2).zip | 3.2M |
| 4 | Super Mario World 2 - Yoshi's Island (USA).zip | 3.3M |
| 5 | Super Mario - Yoshi Island (Japan) (Beta) (1995-07-10).zip | 3.1M |
+------+--------------------------------------------------------------+------------+
Enter number (or press Enter to cancel):
```
Si vous annulez ou que le mode interactif n’ est pas actif, un tableau similaire est affiché (sans le prompt) suivi d’ un conseil.
## Recherche améliorée (multi‑ tokens) pour `games`
L’ option `--search` / `--s` / `-s` utilise maintenant la même logique de classement que les suggestions du download :
1. Correspondance sous-chaîne (position la plus tôt) — priorité 0
2. Séquence de tokens dans l’ ordre (non contiguë) — priorité 1 (écart le plus faible)
3. Tous les tokens présents dans n’ importe quel ordre — priorité 2 (ensemble de tokens plus petit privilégié)
Les doublons sont dédupliqués en gardant le meilleur score. Ainsi une requête :
```powershell
python rgsx_cli.py games --p snes --s "super mario yoshi"
```
affiche toutes les variantes pertinentes de "Super Mario World 2 - Yoshi's Island" même si l’ ordre des mots diffère.
Exemple de sortie :
```
+--------------------------------------------------------------+------------+
| Game Title | Size |
+--------------------------------------------------------------+------------+
| Super Mario World 2 - Yoshi's Island (USA).zip | 3.3M |
| Super Mario World 2 - Yoshi's Island (Europe) (En,Fr,De).zip | 3.3M |
| Super Mario - Yoshi Island (Japan).zip | 3.2M |
| Super Mario - Yoshi Island (Japan) (Rev 1).zip | 3.2M |
| Super Mario - Yoshi Island (Japan) (Rev 2).zip | 3.2M |
+--------------------------------------------------------------+------------+
```
Si aucun résultat n’ est trouvé, seul l’ en-tête est affiché puis un message.
2025-09-10 17:17:34 +02:00
## Prérequis
- Python installé et accessible (le projet utilise un mode headless; aucune fenêtre ne s’ ouvrira).
- Exécuter depuis le dossier contenant `rgsx_cli.py` .
2025-09-12 17:00:51 +02:00
## Syntaxe générale (mode classique)
2025-09-10 17:17:34 +02:00
Les options globales peuvent être placées avant ou après la sous-commande.
- Forme 1:
```powershell
python rgsx_cli.py [--verbose] [--force-update|-force-update] < commande > [options]
```
- Forme 2:
```powershell
python rgsx_cli.py < commande > [options] [--verbose] [--force-update|-force-update]
```
2025-09-12 17:00:51 +02:00
- `--verbose` active les logs détaillés (DEBUG) sur stderr.
2025-09-10 17:17:34 +02:00
- `--force-update` (ou `-force-update` ) purge les données locales et force le re-téléchargement du pack de données (systems_list, games/*.json, images).
2025-09-12 17:00:51 +02:00
Quand les données sources sont manquantes, le CLI télécharge et extrait automatiquement le pack (avec progression).
2025-09-10 17:17:34 +02:00
## Commandes
2025-09-12 17:00:51 +02:00
### 1) platforms (`platforms` / `p`) — lister les plateformes
2025-09-10 17:17:34 +02:00
- Options:
- `--json` : sortie JSON (objets `{ name, folder }` ).
Exemples:
```powershell
python rgsx_cli.py platforms
2025-09-12 17:00:51 +02:00
python rgsx_cli.py p --json
python rgsx_cli.py --verbose p
python rgsx_cli.py p --verbose
2025-09-10 17:17:34 +02:00
```
Sortie texte: une ligne par plateforme, au format `Nom<TAB>Dossier` .
2025-09-12 17:00:51 +02:00
### 2) games (`games` / `g`) — lister les jeux d’ une plateforme
2025-09-10 17:17:34 +02:00
- Options:
2025-09-12 17:00:51 +02:00
- `--platform | --p | -p <nom_ou_dossier>` (ex: `n64` ou "Nintendo 64").
- `--search | --s | -s <texte>` : filtre par sous-chaîne.
2025-09-10 17:17:34 +02:00
Exemples:
```powershell
python rgsx_cli.py games --platform n64
2025-09-12 17:00:51 +02:00
python rgsx_cli.py g --p "Nintendo 64" --s zelda
python rgsx_cli.py g -p n64 --verbose
2025-09-10 17:17:34 +02:00
```
Remarques:
2025-09-12 17:00:51 +02:00
- La plateforme est résolue par nom affiché (platform_name) ou dossier, insensible à la casse.
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
### 3) download (`download` / `dl`) — télécharger un jeu
2025-09-10 17:17:34 +02:00
- Options:
2025-09-12 17:00:51 +02:00
- `--platform | --p | -p <nom_ou_dossier>`
- `--game | --g | -g "<titre exact ou partiel>"`
- `--force | -f` : ignorer l’ avertissement d’ extension non supportée.
- `--interactive | -i` : choisir un titre parmi des correspondances quand aucun exact n’ est trouvé.
2025-09-10 17:17:34 +02:00
Exemples:
```powershell
# Titre exact
2025-09-12 17:00:51 +02:00
python rgsx_cli.py dl --p n64 --g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip"
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Titre partiel (sélection numérotée si aucun exact)
python rgsx_cli.py dl -p n64 -g "Ocarina of Time (Beta)"
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Forcer malgré extension
python rgsx_cli.py dl -p snes -g "pack_roms.rar" -f
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Verbose après sous-commande
python rgsx_cli.py dl -p n64 -g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip" --verbose
2025-09-10 17:17:34 +02:00
```
2025-09-12 17:00:51 +02:00
Pendant le téléchargement: progression %, taille (MB), vitesse (MB/s). Résultat final aussi dans l’ historique.
2025-09-10 17:17:34 +02:00
Notes:
2025-09-12 17:00:51 +02:00
- Les ROMs sont enregistrées dans le dossier plateforme correspondant (ex: `R:\roms\n64` ).
- Si le fichier est une archive (zip/rar) et que la plateforme ne supporte pas l’ extension, un avertissement apparaît (utiliser `--force` ).
2025-09-10 17:17:34 +02:00
### 4) history — afficher l’ historique
- Options:
- `--tail <N>` : n dernières entrées (défaut: 50)
- `--json` : sortie JSON
Exemples:
```powershell
python rgsx_cli.py history
python rgsx_cli.py history --tail 20
python rgsx_cli.py history --json
```
2025-09-12 17:00:51 +02:00
### 5) clear-history (`clear-history` / `clear`) — vider l’ historique
2025-09-10 17:17:34 +02:00
Exemple:
```powershell
2025-09-12 17:00:51 +02:00
python rgsx_cli.py clear
2025-09-10 17:17:34 +02:00
```
### Option globale: --force-update — purge + re-téléchargement des données
2025-09-12 17:00:51 +02:00
- Supprime `systems_list.json` , `games/` , `images/` puis retélécharge/extrait le pack.
2025-09-10 17:17:34 +02:00
Exemples:
```powershell
python rgsx_cli.py --force-update
2025-09-12 17:00:51 +02:00
python rgsx_cli.py p --force-update
2025-09-10 17:17:34 +02:00
```
## Comportements et conseils
2025-09-12 17:00:51 +02:00
- Résolution plateforme: par nom affiché ou dossier, insensible à la casse.
- `--verbose` : utile surtout pour téléchargements/extractions.
- Données manquantes: téléchargement + extraction automatiques.
2025-09-10 17:17:34 +02:00
- Codes de sortie (indicatif):
- `0` : succès
2025-09-12 17:00:51 +02:00
- `1` : échec téléchargement/erreur générique
2025-09-10 17:17:34 +02:00
- `2` : plateforme introuvable
- `3` : jeu introuvable
- `4` : extension non supportée (sans `--force` )
## Exemples rapides (copier-coller)
```powershell
2025-09-12 17:00:51 +02:00
# Démarrer le shell interactif
python rgsx_cli.py
# Lister plateformes (alias)
python rgsx_cli.py p
2025-09-10 17:17:34 +02:00
# Lister plateformes (JSON)
2025-09-12 17:00:51 +02:00
python rgsx_cli.py p --json
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Lister jeux N64 avec filtre (synonymes)
python rgsx_cli.py g --p n64 --s zelda
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Télécharger un jeu N64 (titre exact) avec alias
python rgsx_cli.py dl --p n64 --g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip"
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Télécharger (titre partiel) + sélection
python rgsx_cli.py dl -p n64 -g "Ocarina of Time"
2025-09-10 17:17:34 +02:00
2025-09-12 17:00:51 +02:00
# Historique (20 dernières entrées)
2025-09-10 17:17:34 +02:00
python rgsx_cli.py history --tail 20
2025-09-12 17:00:51 +02:00
# Purger et recharger le pack
2025-09-10 17:17:34 +02:00
python rgsx_cli.py --force-update
```