No description
Find a file
2026-03-14 09:54:10 +01:00
.gitignore Refactor: Cache en mémoire et déplacement à la racine 2026-03-12 01:25:38 +01:00
config.py Refactor: Cache en mémoire et déplacement à la racine 2026-03-12 01:25:38 +01:00
logo.png Intégration du logo de l'agence et amélioration du header 2026-03-10 23:31:41 +01:00
main.py Amélioration des performances de rendu Pygame 2026-03-14 09:54:10 +01:00
README.md Initial commit: vitrine immobilière avec Pygame 2026-03-10 16:38:32 +01:00
requirements.txt Initial commit: vitrine immobilière avec Pygame 2026-03-10 16:38:32 +01:00
run.sh Initial commit: vitrine immobilière avec Pygame 2026-03-10 16:38:32 +01:00
scraper.py Abandon immédiat du scraping en cas d'erreur réseau 2026-03-12 02:03:15 +01:00

Prezimmo - Vitrine Immobilière

Application de présentation pour vitrine d'agence immobilière. Affiche les derniers biens à la vente avec photos et descriptions de manière animée et design.

Caractéristiques

  • Affichage plein écran optimisé pour écrans 16/9 (1920x1080)
  • Photos animées avec effets de transition (fade, zoom)
  • Description avec texte défilant automatique
  • Design moderne avec dégradés et transparences
  • Cache local des données et images (durée configurable)
  • Navigation au clavier intuitive
  • Compatible Raspberry Pi 2W

Installation

Prérequis

  • Python 3.9+
  • pip

Sur macOS / Linux

# Cloner le projet
git clone <url-du-repo>
cd Prezimmo

# Créer l'environnement virtuel et installer les dépendances
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Sur Raspberry Pi

# Installer les dépendances système pour Pygame
sudo apt-get update
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
sudo apt-get install python3-dev python3-pip

# Cloner et installer
git clone <url-du-repo>
cd Prezimmo
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Utilisation

Lancer l'application

./run.sh

Ou manuellement:

source venv/bin/activate
python3 main.py

Rafraîchir les données

Pour forcer le téléchargement des nouvelles annonces:

./refresh_cache.sh

Contrôles clavier

Touche Action
ou Espace Bien suivant
Bien précédent
R Rafraîchir les données depuis le site
Échap Quitter l'application

Configuration

Le fichier config.py permet de personnaliser l'application:

# Durée d'affichage de chaque bien (secondes)
PROPERTY_DISPLAY_TIME = 15

# Durée entre chaque photo (secondes)
PHOTO_TRANSITION_TIME = 5

# Vitesse de défilement du texte
TEXT_SCROLL_SPEED = 2

# Durée du cache (heures)
CACHE_DURATION_HOURS = 24

# Résolution (si plein écran non disponible)
SCREEN_WIDTH = 1920
SCREEN_HEIGHT = 1080

Couleurs

Les couleurs sont définies dans le dictionnaire COLORS:

COLORS = {
    "background": (15, 23, 42),      # Fond sombre
    "primary": (59, 130, 246),        # Bleu principal
    "secondary": (99, 102, 241),      # Violet secondaire
    "text": (248, 250, 252),          # Texte blanc
    "text_secondary": (148, 163, 184),# Texte gris
    "accent": (251, 191, 36),         # Jaune/or accent
}

Architecture

Prezimmo/
├── config.py           # Configuration centrale
├── main.py             # Application Pygame principale
│   ├── AnimatedValue   # Gestion des animations fluides
│   ├── PropertyDisplay # Affichage des biens
│   └── main()          # Point d'entrée
├── scraper.py          # Scraper du site arthimmo19.fr
│   ├── Scraper         # Classe de scraping
│   ├── get_properties()# Récupération avec cache
│   └── Cache functions # Sauvegarde/chargement du cache
├── requirements.txt    # Dépendances Python
├── run.sh              # Script de lancement
├── refresh_cache.sh    # Script de rafraîchissement
└── cache/              # Dossier de cache (non versionné)
    ├── properties.json # Données des biens
    └── images/         # Photos téléchargées

Fonctionnement

Scraper

  1. Récupère les liens des biens depuis la page d'accueil
  2. Pour chaque bien, extrait:
    • Titre
    • Prix
    • Description
    • Surface, chambres, terrain
    • URLs des photos
  3. Télécharge les images localement
  4. Met en cache les données

Affichage

  1. Charge les données depuis le cache (ou scrape si expiré)
  2. Affiche chaque bien pendant PROPERTY_DISPLAY_TIME secondes
  3. Les photos défilent avec des transitions toutes les PHOTO_TRANSITION_TIME secondes
  4. La description défile en continu
  5. Une barre de progression indique le temps restant

Animations

Les animations utilisent une fonction d'easing cubique pour des transitions fluides:

eased = 1 - (1 - progress) ** 3

Démarrage automatique sur Raspberry Pi

Pour lancer l'application au démarrage du Raspberry Pi:

Méthode avec systemd

  1. Créer le service:
sudo nano /etc/systemd/system/prezimmo.service
  1. Contenu du fichier:
[Unit]
Description=Prezimmo Vitrine Immobilière
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/Prezimmo
ExecStart=/home/pi/Prezimmo/run.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
  1. Activer le service:
sudo systemctl enable prezimmo
sudo systemctl start prezimmo

Méthode avec autostart (interface graphique)

mkdir -p ~/.config/autostart
nano ~/.config/autostart/prezimmo.desktop

Contenu:

[Desktop Entry]
Type=Application
Name=Prezimmo
Exec=/home/pi/Prezimmo/run.sh
Terminal=false

Maintenance

Vider le cache

rm -rf cache/images/*
rm cache/properties.json

Mettre à jour les dépendances

source venv/bin/activate
pip install --upgrade -r requirements.txt

Personnalisation pour une autre agence

Pour adapter l'application à un autre site immobilier:

  1. Modifier config.py:

    • BASE_URL: URL du site
    • PROPERTIES_URL: URL de la liste des biens
  2. Modifier scraper.py:

    • Adapter get_property_links() selon la structure HTML
    • Adapter extract_image_urls() pour les sélecteurs d'images
    • Adapter extract_property_data() pour les métadonnées

Dépannage

L'application ne se lance pas en plein écran

Vérifier que SDL2 est correctement installé:

python3 -c "import pygame; print(pygame.display.Info())"

Pas d'images affichées

Vérifier le contenu du cache:

ls -la cache/images/
cat cache/properties.json | python3 -m json.tool

Erreur de connexion lors du scraping

Le site peut bloquer les requêtes. Vérifier la connexion:

curl -I https://www.arthimmo19.fr

Licence

Projet interne pour Arthimmo19.