Installation
-
1
Cloner le repo
git clone https://github.com/Sayfouche/resell-radar.git cd resell-radar
-
2
Créer l'environnement virtuel
python -m venv .venv source .venv/bin/activate # macOS/Linux # ou : .venv\Scripts\activate # Windows
-
3
Installer les dépendances
pip install -r requirements.txt playwright install chromium
-
4
Configurer les variables d'environnement
Copier
.env.exampleen.envet remplir les clés (voir section Configuration).
Configuration
Toute la configuration se fait dans le fichier .env Ă la racine du projet.
Clés requises
| Variable | Description |
|---|---|
| TELEGRAM_BOT_TOKEN | Token du bot Telegram (obtenu via @BotFather) |
| TELEGRAM_CHAT_ID | ID du chat/canal de réception des alertes |
| EBAY_APP_ID | Clé API eBay Browse (gratuite, developer.ebay.com) |
| MISTRAL_API_KEY | Clé API Mistral (génération messages de négociation) |
Paramètres optionnels
| Variable | Défaut | Rôle |
|---|---|---|
| SCORE_THRESHOLD | 70 | Seuil d'alerte Telegram |
| AUTH_THRESHOLD | 50 | Score authenticité minimum |
| PIPELINE_INTERVAL_MINUTES | 15 | Fréquence du pipeline |
| MAX_ITEMS_PER_RUN | — | Limite d'annonces par cycle |
Ne jamais committer le fichier .env — il est dans .gitignore.
Lancer le pipeline
Mode automatique (recommandé)
Lance le scheduler APScheduler qui exécute le pipeline toutes les N minutes en continu :
python main.py
Mode one-shot
Exécute le pipeline une seule fois et s'arrête :
python main.py --once
Dashboard uniquement
streamlit run dashboard/app.py
Au premier lancement, la base SQLite est créée automatiquement. Aucune migration manuelle nécessaire.
Lire une alerte Telegram
Chaque deal qualifié génère une alerte structurée dans ton canal Telegram.
🔥 Nike Air Force 1 — Taille 42
Prix annoncé : 45 € · Prix marché eBay : 90 €
État : Très Bon État · Marque : Premium (Nike)
Score opportunité : 82/100 · Authenticité : 88/100
📎 Voir l'annonce →
Comprendre les scores
- Score opportunité ≥ 70 (🔥) — deal excellent, agir rapidement
- Score authenticité ≥ 80 — article probablement authentique
- Flags rouges — signaux suspects affichés si présents
Un score d'authenticité entre 50 et 80 (⚠️) invite à vérifier avant achat — photos, description, prix marché. Ne jamais acheter sans vérification physique.
Dashboard Streamlit
Le dashboard local permet de consulter et filtrer toutes les annonces collectées, pas seulement celles alertées sur Telegram.
- Filtres — par plateforme, marque, état, score minimum
- Vue détail — score complet, flags d'authenticité, lien annonce
- Messages de négociation — accès au texte généré par Mistral
- Historique — suivi des deals dans le temps
Accès local : http://localhost:8501 après streamlit run dashboard/app.py
Messages de négociation
Pour chaque deal qualifié, Resell Radar génère automatiquement un message de négociation adapté.
"Bonjour, je suis intéressé par votre article. Seriez-vous prêt à le céder à 37 € ? Je suis disponible rapidement. Merci !"
Le message est proposé, pas envoyé automatiquement. Tu copies-colles dans la plateforme. Le ton est naturel et adapté (Vinted vs Leboncoin).
Si Mistral est indisponible, un template de repli statique est utilisé automatiquement — le pipeline ne s'arrête pas.
Régler les seuils
Les seuils contrôlent ce qui déclenche une alerte Telegram. Ajuste-les dans le fichier .env.
| Situation | Action |
|---|---|
| Trop d'alertes | Augmenter SCORE_THRESHOLD (ex: 75 au lieu de 70) |
| Trop peu d'alertes | Baisser SCORE_THRESHOLD (ex: 60) |
| Trop de suspects dans les alertes | Augmenter AUTH_THRESHOLD (ex: 65) |
| Alertes trop espacées | Réduire PIPELINE_INTERVAL_MINUTES (ex: 10) |
Les annonces avec score < SCORE_THRESHOLD restent visibles dans le dashboard Streamlit même si elles ne génèrent pas d'alerte Telegram.
Ajouter des marques
Les marques surveillées et leur catégorie sont configurées dans config/brands.py :
BRANDS = {
"ultra_premium": ["Hermès", "Louis Vuitton", "Chanel", "Dior"],
"premium": ["Nike", "Adidas", "Stone Island", "Ralph Lauren"],
}
Ajouter une marque dans la catégorie appropriée pour qu'elle soit prise en compte dans le score métier (ultra_premium = 10 pts, premium = 6 pts).
FAQ
playwright install chromium) et que les marques surveillées ont des annonces disponibles sur la plateforme configurée.TELEGRAM_BOT_TOKEN et TELEGRAM_CHAT_ID dans .env. S'assurer que le bot a été démarré dans le canal (/start).streamlit run dashboard/app.py) et utiliser les filtres pour ajuster le seuil de score manuellement.Resell Radar est conçu pour fonctionner de manière résiliente même si certains services externes sont indisponibles.