Génère de superbes affiches annuelles de calendriers de marées pour les ports français.
Courbe de marée en vague, heures & coefficients, phases de la lune — le tout habillé d'un fond au choix parmi 17 styles.
- 🗺️ Carte interactive — choisis ton port en cliquant sur la carte (OpenStreetMap en ligne, repli hors-ligne automatique).
- 🎨 Galerie de fonds avec aperçu — 17 fonds (dégradés, bandes, textures, aplats), sélection multiple pour tout générer d'un coup.
- 📅 À la carte — année, taille, sélection des mois, plusieurs ports en lot.
- 🗄️ Aspiration des données — remplis la base sans générer d'images ; récupère automatiquement tous les mois publiés jusqu'à l'horizon du site.
- ⚡ Fluide & fiable — génération en tâche de fond (aucun gel), progression, annulation, ouverture automatique du dossier de sortie.
- 🖼️ Rendu stable — moteur de rendu vérifié au pixel près par un test de non-régression.
pip install -r requirements.txt
# Uniquement pour télécharger de nouvelles données de marées :
playwright install chromiumpython interface.py| Onglet | Ce que tu peux faire |
|---|---|
| 🎨 Générer | Choisir le port (carte / liste / recherche ou « tous les ports »), un ou plusieurs fonds
(Ctrl+clic), l'année, la taille et les mois — puis Générer. Les images arrivent dans
OUTPUT IMAGES/ (le dossier s'ouvre à la fin). |
| 🗄️ Base de données | Aspirer toutes les données à venir (sans générer d'images), pour un ou tous les ports, jusqu'à l'horizon publié par le site — avec progression et annulation. |
| ➕ Ports | Ajouter un port (nom + code meteoconsult) directement depuis l'interface. |
python scrap_all.py # aspire tout le disponible, tous ports, jusqu'à l'horizon
python scrap_all.py 2026 # remplit une année précise (mois à venir)Bon à savoir — meteoconsult ne publie que les mois à venir (les mois passés et, en général, l'année suivante ne sont pas encore disponibles). L'application ne récupère donc que ce qui existe, en respectant la limite de fréquence du site.
| Fichier | Rôle |
|---|---|
interface.py |
Interface graphique PyQt6 (onglets, carte, galerie, threads) |
fonctions.py |
Moteur de rendu (matplotlib / OpenCV) — sortie identique au pixel près |
backgrounds.py |
Registre des 17 fonds (rendu plein format + aperçus) |
db.py |
Base SQLite, parsing, récupération (sans dépendance au moteur de rendu) |
ports.py + data/ports.json |
Liste des ports (nom, code, coordonnées, côte) |
scrapper.py / scrap_all.py |
Scraping meteoconsult / aspiration de la base |
ui/ |
Carte (Leaflet + hors-ligne) et galerie de fonds |
tests/pixel_baseline.py |
Non-régression pixel des fonds (--capture / --check) |
⚙️ Comment ça marche
Chaque mois est dessiné avec matplotlib (courbe de marée, heures, coefficients colorés selon
les seuils, phases de lune), les mois sont empilés, puis composés par transparence sur le fond
choisi. Les données proviennent de marine.meteoconsult.fr et sont mises en cache
dans une base SQLite locale, afin de générer une affiche même hors-ligne une fois les données
récupérées.
Les contributions sont les bienvenues ! Nouveaux ports (via l'onglet Ports ou
data/ports.json), nouveaux fonds (dans backgrounds.py), corrections… Ouvre une
issue ou une pull request.
Distribué sous licence MIT. Voir LICENSE.
