Files
minitel-slideshow-tool/README.md
T

4.2 KiB
Raw Blame History

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
  • prévisualisation hex optionnelle

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

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é) :

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 :

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

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

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 :
pip install pyinstaller

Compilation simple

  • Depuis la racine du projet :
pyinstaller --onefile --windowed minitel_slideshow_tool.py

Options utilisées

--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)

pyinstaller ^
  --onefile ^
  --windowed ^
  --name "MinitelSlideshowTool" ^
  minitel_slideshow_tool.py

Résultat :

  • dist/MinitelSlideshowTool.exe

Compilation Linux

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

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 :

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 :
pyinstaller --onefile minitel_slideshow_tool.py
  • Lancer ensuite depuis un terminal pour lire les logs.