# 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 ## Démonstration ![Capture d’écran](https://github.com/labbej27/minitel-slideshow-tool/blob/main/capture.png) --- ## 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 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 l’outil ```sh python3 minitel_slideshow_tool.py ``` ### 2. Convertir des images - Choisir un dossier d’images - 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) L’outil 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) ``` L’exé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 ``` ### L’exécutable est spécifique à l’OS : 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 : L’application 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 l’utilisateur au groupe dialout : ```bash sudo usermod -a -G dialout $USER ``` Puis redémarrer la session. ## Licence Projet libre – utilisation et modification autorisées. Ce projet a été développé à des fins personnelles et éducatives, en s’inspirant de projets existants de la communauté Minitel. ## Crédits / Sources Ce projet s’appuie sur et s’inspire des travaux suivants : - **websocket2minitel** par @cquest https://github.com/cquest/websocket2minitel - Code et expérimentations de @NathaanTFM https://gist.github.com/NathaanTFM/2ca8687f1352b9d840d4f5efc941dd98 ---