Alerte Le Bon Coin : ne ratez plus les bonnes annonces

Les alertes officielles Le Bon Coin arrivent souvent trop tard. J’ai mis en place un petit service qui surveille mes recherches et m’envoie une notification dès qu’une nouvelle annonce apparaît — y compris sur Telegram. Voici le projet, comment il fonctionne et comment je l’ai déployé.

Le problème

Sur Le Bon Coin, quand vous créez une alerte (par mots-clés, catégorie, etc.), les notifications peuvent mettre du temps à arriver. Pour des annonces très demandées, être prévenu en premier peut faire la différence. L’idée était donc d’avoir un outil qui :

  • scanne régulièrement des URLs de recherche (celles que je configure),
  • détecte les nouvelles annonces par rapport à ce qui a déjà été vu,
  • m’alerte immédiatement (console + Telegram).

Sans modifier le site Le Bon Coin, sans compte officiel « pro » : juste un script qui interroge les recherches et compare les résultats.


Ce que fait le projet

Le projet s’appelle Alerte Le Bon Coin. En résumé :

  1. Surveillance
    Il exécute périodiquement (par exemple toutes les 2 minutes) les recherches que j’ai configurées (URLs copiées depuis leboncoin.fr).
  2. Détection des nouvelles annonces
    Il garde en mémoire les annonces déjà vues (dans un fichier JSON). À chaque cycle, il ne considère comme « nouvelles » que celles qui n’étaient pas dans ce fichier.
  3. Alertes
    Pour chaque nouvelle annonce :
    • affichage dans le terminal (titre, prix, lien),
    • envoi d’un message Telegram (si activé) avec les mêmes infos.
  4. Interface web
    Une petite interface (Flask) permet de modifier la config sans toucher aux fichiers : ajout/suppression de recherches, intervalle de scan, activation Telegram, token et Chat ID.
  5. Pas besoin de redémarrer
    La configuration est rechargée à chaque cycle. Si j’ajoute une nouvelle URL de recherche via l’interface web, elle est prise en compte au prochain scan.

Techniquement, le cœur du projet repose sur la bibliothèque Python lbc, un client non officiel pour l’API de recherche Le Bon Coin. Le reste (scanner, stockage des annonces vues, envoi Telegram, interface web) est du code maison.


Mise en place : côté développement

J’ai développé le projet en Python 3 (3.9+), en local sous Windows, puis je l’ai fait tourner sous Docker sur un serveur Linux.

En local (Windows)

  • Installation
    Cloner ou récupérer le projet, puis installer les dépendances :pip install -r requirements.txt Les principaux paquets sont : lbcrequestsPyYAMLFlask.
  • Configuration
    Tout se fait dans un fichier config.yaml à la racine du projet :
    • scan_interval : intervalle entre deux scans (en secondes),
    • ads_limit : nombre d’annonces récupérées par recherche,
    • telegram : activation, chat_idbot_token,
    • searches : liste de recherches (nom + URL copiée depuis leboncoin.fr).
    On peut aussi tout éditer via l’interface web (port 5000 par défaut) sans toucher au fichier.
  • Lancement
    Un seul script lance l’interface web et le scanner :python run_all.py Ou, sous Windows, en double-cliquant sur run_all.bat. L’interface est alors accessible sur http://localhost:5000.
  • Telegram
    Pour recevoir les alertes sur Telegram :
    1. Créer un bot avec @BotFather et récupérer le token.
    2. Récupérer son Chat ID (par exemple en envoyant un message au bot puis en consultant l’API Telegram, ou via @userinfobot).
    3. Renseigner le token et le Chat ID dans la config (fichier ou interface web). Le token peut être mis dans config.yaml ou dans la variable d’environnement LBC_TELEGRAM_BOT_TOKEN.

Un script test_telegram.py permet de vérifier que l’envoi Telegram fonctionne avant de laisser tourner le service.


Mise en place : Docker

Une fois le projet au point en local, je l’ai conteneurisé pour le faire tourner sur un serveur (Linux), sans avoir à installer Python ou les dépendances sur l’hôte.

Image Docker

Le Dockerfile est volontairement minimal :

  • Image de base : Python 3.11-slim.
  • Installation des dépendances directement avec pip install.

Donc l’image ne contient que l’environnement Python et les paquets nécessaires. Le reste (fichiers Python, config) vient des volumes au lancement du conteneur.

Docker Compose

J’utilise un docker-compose.yml pour lancer le service :

services:
  leboncoin-alert:
    image: imageleboncoinalert:latest
    container_name: leboncoin-alert
    restart: unless-stopped
    ports:
      - "5000:5000"
    volumes:
      - /home/mike/docker_config/leboncoinalert/config/config.yaml:/app/config.yaml
      - /home/mike/docker_config/leboncoinalert:/app/
    environment:
      - LBC_STORAGE=/app/data/seen_ads.json
      - LBC_WEB_PORT=5000
    # Garde le container allumé après un crash pour pouvoir déboguer (docker exec -it leboncoin-alert sh)
    command: ["sh", "-c", "python run_all.py; echo 'App arretee. Container reste actif pour debug.'; exec sleep infinity"]

Le code de l’application (fichiers .py, etc.) est soit monté en volume depuis le répertoire du projet sur l’hôte, soit copié dans le répertoire monté pour /app, selon comment j’ai organisé les dossiers sur le serveur.

Résumé des briques

ÉlémentRôle
config.yamlRecherches (nom + URL), intervalle de scan, Telegram (activé, chat_id, bot_token).
Interface web (Flask)Édition de la config sans toucher au fichier.
ScannerBoucle qui recharge la config, exécute les recherches via lbc, compare avec les annonces déjà vues, alerte (console + Telegram).
Stockage (JSON)Fichier des annonces déjà vues pour ne pas alerter deux fois sur la même annonce.
DockerImage légère (Python + deps) ; config et data en volumes pour persistance et débogage.

Avertissement

Ce projet utilise une API non officielle (via la librairie lbc). Il n’est pas affilié à Le Bon Coin. Il faut utiliser l’outil de manière raisonnable (intervalle de scan d’au moins 1 à 2 minutes) pour limiter les risques de blocage (Le Bon Coin peut utiliser des protections anti-bot). À utiliser à vos propres risques et en respectant les conditions d’utilisation du site.