2025-12-13 00:28:40 +01:00
|
|
|
|
# Minitel Slideshow Tool
|
|
|
|
|
|
**Convertisseur + Serveur Slideshow + Client WebSocket↔Série (tout-en-un)**
|
|
|
|
|
|
|
|
|
|
|
|
Interface graphique Tkinter permettant :
|
|
|
|
|
|
- la **conversion d’images** en fichiers **.vdt** optimisés (encodeur intégré, compatible *pic2jpeg2vdt*)
|
|
|
|
|
|
- un **serveur local WebSocket** pour diaporamas (start/stop/reset indépendants)
|
|
|
|
|
|
- un **client WebSocket ↔ port série** (Minitel)
|
|
|
|
|
|
- une liste de serveurs prédéfinis + saisie manuelle
|
|
|
|
|
|
- un temps d’affichage paramétrable
|
2025-12-14 00:47:26 +01:00
|
|
|
|
|
2025-12-14 00:45:46 +01:00
|
|
|
|
## Démonstration
|
|
|
|
|
|
|
2025-12-14 00:47:26 +01:00
|
|
|
|

|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Fonctionnalités principales
|
|
|
|
|
|
|
|
|
|
|
|
### Conversion d’images → `.vdt`
|
|
|
|
|
|
- Redimensionnement automatique adapté Minitel (320×240 max)
|
|
|
|
|
|
- Encodage JPEG optimisé ou qualité fixe
|
|
|
|
|
|
- Génération des blocs VDT (header + chunks)
|
|
|
|
|
|
- Prévisualisation hex des premiers octets
|
|
|
|
|
|
|
|
|
|
|
|
### Serveur Slideshow WebSocket
|
|
|
|
|
|
- Diffusion continue d’un dossier de `.vdt`
|
|
|
|
|
|
- Serveur en thread dédié
|
|
|
|
|
|
- Commandes start/stop sécurisées
|
|
|
|
|
|
|
|
|
|
|
|
### Client WebSocket ↔ Port série
|
|
|
|
|
|
- Pont bidirectionnel avec keep-alive
|
|
|
|
|
|
- Support de `wss://` via SSL permissif
|
|
|
|
|
|
- Gestion vitesse, parité, databits, stopbits
|
|
|
|
|
|
|
|
|
|
|
|
### Interface graphique Tkinter
|
|
|
|
|
|
- Sélection de serveur prédéfini ou manuel
|
|
|
|
|
|
- Sélection de dossier images et dossier VDT
|
|
|
|
|
|
- Logs détaillés
|
|
|
|
|
|
- Détection automatique des ports série
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Cloner le dépôt
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
2025-12-13 00:37:25 +01:00
|
|
|
|
git clone https://github.com/labbej27/minitel-slideshow-tool.git
|
2025-12-13 00:38:59 +01:00
|
|
|
|
cd minitel-slideshow-tool
|
2025-12-13 00:28:40 +01:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Installer les dépendances Python
|
|
|
|
|
|
|
|
|
|
|
|
Avec un environnement virtuel (recommandé) :
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
python3 -m venv venv
|
|
|
|
|
|
# Linux / macOS
|
|
|
|
|
|
source venv/bin/activate
|
|
|
|
|
|
# Windows (PowerShell)
|
|
|
|
|
|
venv\Scripts\Activate.ps1
|
|
|
|
|
|
# Windows (cmd)
|
|
|
|
|
|
venv\Scripts\activate.bat
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Installer les dépendances :
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Note : Tkinter est déjà inclus dans Python sur Windows et macOS, et sur la plupart des distributions Linux.
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Utilisation
|
|
|
|
|
|
### 1. Lancer l’outil
|
2025-12-14 00:19:29 +01:00
|
|
|
|
```sh
|
2025-12-13 00:28:40 +01:00
|
|
|
|
python3 minitel_slideshow_tool.py
|
2025-12-14 00:19:29 +01:00
|
|
|
|
```
|
2025-12-14 00:18:03 +01:00
|
|
|
|
### 2. Convertir des images
|
2025-12-13 00:28:40 +01:00
|
|
|
|
- Choisir un dossier d’images
|
|
|
|
|
|
|
|
|
|
|
|
- Choisir un dossier de sortie
|
|
|
|
|
|
|
|
|
|
|
|
- Cliquer Convert Images
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
### 3. Lancer un serveur Slideshow
|
2025-12-13 00:28:40 +01:00
|
|
|
|
- Mettre des .vdt dans le dossier sélectionné
|
|
|
|
|
|
|
|
|
|
|
|
- Définir la durée par image
|
|
|
|
|
|
|
|
|
|
|
|
- Cliquer Start Slideshow Server
|
|
|
|
|
|
|
|
|
|
|
|
- Le serveur écoute par défaut sur :
|
|
|
|
|
|
ws://0.0.0.0:8765
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
### 4. Se connecter à un serveur WebSocket via Minitel
|
2025-12-13 00:28:40 +01:00
|
|
|
|
- Choisir un serveur prédéfini ou entrer une URL
|
|
|
|
|
|
|
|
|
|
|
|
- Sélectionner le port série
|
|
|
|
|
|
|
|
|
|
|
|
- Cliquer Connecter & Enjoy
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-13 01:05:42 +01:00
|
|
|
|
# Compilation en exécutable (standalone)
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
L’outil peut être compilé en exécutable autonome (sans Python requis sur la machine cible) grâce à PyInstaller.
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Prérequis
|
|
|
|
|
|
|
|
|
|
|
|
- Python 3.14 recommandé
|
|
|
|
|
|
|
|
|
|
|
|
- pip à jour
|
|
|
|
|
|
|
|
|
|
|
|
## Système :
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Installer PyInstaller :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pip install pyinstaller
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Compilation simple
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Depuis la racine du projet :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller --onefile --windowed minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Options utilisées
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
--onefile : génère un seul fichier exécutable
|
|
|
|
|
|
|
|
|
|
|
|
--windowed : supprime la console (recommandé pour Tkinter)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
L’exécutable sera généré dans :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
dist/
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Compilation Windows (recommandée)
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller ^
|
|
|
|
|
|
--onefile ^
|
|
|
|
|
|
--windowed ^
|
|
|
|
|
|
--name "MinitelSlideshowTool" ^
|
|
|
|
|
|
minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Résultat :
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
dist/MinitelSlideshowTool.exe
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Compilation Linux
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller \
|
|
|
|
|
|
--onefile \
|
|
|
|
|
|
--windowed \
|
|
|
|
|
|
--name minitel-slideshow-tool \
|
|
|
|
|
|
minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
### L’exécutable est spécifique à l’OS :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Un .exe Windows doit être compilé sous Windows, idem pour Linux/macOS.
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Compilation macOS
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller \
|
|
|
|
|
|
--onefile \
|
|
|
|
|
|
--windowed \
|
|
|
|
|
|
--name MinitelSlideshowTool \
|
|
|
|
|
|
minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Sur macOS :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
L’application peut être bloquée par Gatekeeper
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
Utiliser clic droit → Ouvrir au premier lancement
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
## Inclusion des dépendances
|
|
|
|
|
|
|
2025-12-14 00:18:03 +01:00
|
|
|
|
PyInstaller détecte automatiquement :
|
2025-12-13 00:28:40 +01:00
|
|
|
|
|
|
|
|
|
|
- tkinter
|
|
|
|
|
|
|
|
|
|
|
|
- Pillow
|
|
|
|
|
|
|
|
|
|
|
|
- pyserial
|
|
|
|
|
|
|
|
|
|
|
|
- websockets
|
|
|
|
|
|
|
|
|
|
|
|
Si nécessaire (rare), forcer les imports :
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller --onefile --windowed \
|
|
|
|
|
|
--hidden-import=serial \
|
|
|
|
|
|
--hidden-import=serial.tools.list_ports \
|
|
|
|
|
|
minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Débogage en cas de problème
|
|
|
|
|
|
|
|
|
|
|
|
- Compiler avec console pour voir les erreurs :
|
|
|
|
|
|
```sh
|
|
|
|
|
|
pyinstaller --onefile minitel_slideshow_tool.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-13 00:37:25 +01:00
|
|
|
|
- Lancer ensuite depuis un terminal pour lire les logs.
|
2025-12-13 01:06:18 +01:00
|
|
|
|
|
|
|
|
|
|
#### Ports série – Permissions
|
|
|
|
|
|
- Linux
|
|
|
|
|
|
Ajouter l’utilisateur au groupe dialout :
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo usermod -a -G dialout $USER
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Puis redémarrer la session.
|
2025-12-13 01:11:58 +01:00
|
|
|
|
|
2025-12-13 10:33:12 +01:00
|
|
|
|
## Licence
|
2025-12-14 21:49:31 +01:00
|
|
|
|
|
|
|
|
|
|
Ce projet est libre d'utilisation, de modification et de redistribution
|
|
|
|
|
|
à des fins non commerciales.
|
|
|
|
|
|
|
|
|
|
|
|
Toute utilisation commerciale est interdite sans autorisation explicite
|
|
|
|
|
|
de l'auteur.
|
2025-12-13 10:32:01 +01:00
|
|
|
|
|
|
|
|
|
|
Ce projet a été développé à des fins personnelles et éducatives,
|
|
|
|
|
|
en s’inspirant de projets existants de la communauté Minitel.
|
|
|
|
|
|
|
2025-12-14 21:49:31 +01:00
|
|
|
|
|
2025-12-13 10:32:01 +01:00
|
|
|
|
## Crédits / Sources
|
|
|
|
|
|
|
2025-12-13 10:32:34 +01:00
|
|
|
|
Ce projet s’appuie sur et s’inspire des travaux suivants :
|
2025-12-13 10:32:01 +01:00
|
|
|
|
|
|
|
|
|
|
- **websocket2minitel** par @cquest
|
|
|
|
|
|
https://github.com/cquest/websocket2minitel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Code et expérimentations de @NathaanTFM
|
|
|
|
|
|
https://gist.github.com/NathaanTFM/2ca8687f1352b9d840d4f5efc941dd98
|
2025-12-13 01:11:58 +01:00
|
|
|
|
---
|