Files
2025-12-14 21:49:31 +01:00

247 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Minitel Slideshow Tool
**Convertisseur + Serveur Slideshow + Client WebSocket↔Série (tout-en-un)**
Interface graphique Tkinter permettant :
- la **conversion dimages** 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 daffichage paramétrable
## Démonstration
![Capture d’écran](https://github.com/labbej27/minitel-slideshow-tool/blob/main/capture.png)
---
## Fonctionnalités principales
### Conversion dimages → `.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 dun 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
git clone https://github.com/labbej27/minitel-slideshow-tool.git
cd minitel-slideshow-tool
```
### 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
```
Note : Tkinter est déjà inclus dans Python sur Windows et macOS, et sur la plupart des distributions Linux.
## Utilisation
### 1. Lancer loutil
```sh
python3 minitel_slideshow_tool.py
```
### 2. Convertir des images
- Choisir un dossier dimages
- Choisir un dossier de sortie
- Cliquer Convert Images
### 3. Lancer un serveur Slideshow
- 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
### 4. Se connecter à un serveur WebSocket via Minitel
- Choisir un serveur prédéfini ou entrer une URL
- Sélectionner le port série
- Cliquer Connecter & Enjoy
---
# Compilation en exécutable (standalone)
Loutil peut être compilé en exécutable autonome (sans Python requis sur la machine cible) grâce à PyInstaller.
## Prérequis
- Python 3.14 recommandé
- pip à jour
## Système :
Installer PyInstaller :
```sh
pip install pyinstaller
```
## Compilation simple
Depuis la racine du projet :
```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)
```
Lexécutable sera généré dans :
dist/
## Compilation Windows (recommandée)
```sh
pyinstaller ^
--onefile ^
--windowed ^
--name "MinitelSlideshowTool" ^
minitel_slideshow_tool.py
```
## Résultat :
dist/MinitelSlideshowTool.exe
## Compilation Linux
```sh
pyinstaller \
--onefile \
--windowed \
--name minitel-slideshow-tool \
minitel_slideshow_tool.py
```
### Lexécutable est spécifique à lOS :
Un .exe Windows doit être compilé sous Windows, idem pour Linux/macOS.
## Compilation macOS
```sh
pyinstaller \
--onefile \
--windowed \
--name MinitelSlideshowTool \
minitel_slideshow_tool.py
```
Sur macOS :
Lapplication peut être bloquée par Gatekeeper
Utiliser clic droit → Ouvrir au premier lancement
## Inclusion des dépendances
PyInstaller détecte automatiquement :
- 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
```
- Lancer ensuite depuis un terminal pour lire les logs.
#### Ports série Permissions
- Linux
Ajouter lutilisateur au groupe dialout :
```bash
sudo usermod -a -G dialout $USER
```
Puis redémarrer la session.
## Licence
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.
Ce projet a été développé à des fins personnelles et éducatives,
en sinspirant de projets existants de la communauté Minitel.
## Crédits / Sources
Ce projet sappuie sur et sinspire des travaux suivants :
- **websocket2minitel** par @cquest
https://github.com/cquest/websocket2minitel
- Code et expérimentations de @NathaanTFM
https://gist.github.com/NathaanTFM/2ca8687f1352b9d840d4f5efc941dd98
---