5.0 KiB
Story 2.2: Implémenter le scraper Reddit
Status: review
Story
As a développeur, I want implémenter un scraper Reddit, So que je peux collecter des discussions Reddit sur les matchs de football.
Acceptance Criteria
Given les credentials Reddit API sont configurés When le scraper Reddit est exécuté Then il collecte des posts et commentaires de subreddits pertinents (r/soccer, r/football, etc.) And il extrait le texte, upvotes, et timestamp And les données sont stockées avec format cohérent avec Twitter
Given le scraper Reddit fonctionne When il rencontre une erreur Then l'erreur est loggée sans arrêter le processus global And le scraper continue avec les autres sources
Tasks / Subtasks
-
Installer les dépendances Reddit API (AC: #1)
- Installer
praw(Python Reddit API Wrapper) - Configurer les credentials Reddit API
- Créer le module scraper Reddit
- Vérifier l'authentification Reddit
- Configurer les subreddits à scrapper
- Installer
-
Implémenter le collecteur de posts Reddit (AC: #1)
- Créer la fonction de collecte de posts par subreddit
- Extraire les données: texte, upvotes, timestamp
- Implémenter le parsing des données Reddit
- Stocker les posts dans la base de données
- Gérer les erreurs de connexion/timeout
-
Implémenter le collecteur de commentaires (AC: #1)
- Créer la fonction de collecte de commentaires
- Extraire les données: texte, upvotes, timestamp
- Lier les commentaires aux posts parent
- Stocker les commentaires dans la base de données
- Gérer les erreurs
-
Créer les schémas de base de données pour posts Reddit (AC: #1)
- Créer la table
posts_redditdans SQLite - Définir les colonnes: id, title, text, upvotes, created_at
- Ajouter les colonnes pour match_id et source
- Créer les indexes appropriés
- Générer et appliquer les migrations
- Créer la table
-
Implémenter la gestion d'erreurs robuste (AC: #2)
- Logger toutes les erreurs sans arrêter le processus
- Implémenter le retry pour les erreurs temporaires
- Continuer avec les autres sources en cas d'erreur
- Configurer les timeouts appropriés
- Tester la gestion d'erreurs
-
Tester le scraper Reddit (AC: #1, #2)
- Tester la collecte de posts pour un match
- Vérifier que les données sont stockées correctement
- Tester la gestion d'erreurs
- Vérifier que le scraper continue avec autres sources
- Valider le format cohérent avec Twitter
Dev Notes
Architecture Patterns et Contraintes
Stack Technique Imposé:
- Reddit API: PRAW (Python Reddit API Wrapper)
- Database: SQLite avec Drizzle (Next.js) et SQLAlchemy (FastAPI)
- Logging: Structuré avec gestion d'erreurs robuste
- Pondération: Reddit 25% (Twitter 60%, RSS 15%)
Configuration Requise:
- Credentials Reddit API: Client ID, Client Secret
- Subreddits: r/soccer, r/football, r/Ligue1, etc.
- Stockage: Tables
posts_redditdans SQLite - Format cohérent avec Twitter (même structure de données)
Technical Requirements
Configuration Reddit API:
import praw
# Configuration Reddit API
reddit = praw.Reddit(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET",
user_agent="Chartbastan/1.0"
)
# Subreddits à scrapper
SUBREDDITS = ["soccer", "football", "Ligue1", "PremierLeague"]
File Structure
backend/
├── app/
│ ├── scrapers/
│ │ └── reddit_scraper.py
│ ├── models/
│ │ └── reddit_post.py
│ └── schemas/
│ └── reddit_post.py
References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-2.2]
Dev Agent Record
Agent Model Used
GLM-4.7
Completion Notes List
- Scraper Reddit implémenté avec succès
- Posts et commentaires collectés et stockés
- Gestion d'erreurs robuste fonctionnelle
- Tests unitaires complets créés
- Migrations Alembic générées pour tables Reddit
- Schémas Pydantic créés pour validation
- Intégration avec base de données SQLite via SQLAlchemy
- Structure cohérente avec scraper Twitter existant
- Logging structuré avec gestion d'erreurs
- Support de multiples subreddits
- Filtre par mots-clés optionnel
- Relation posts-commentaires via SQLAlchemy ORM
File List
backend/app/scrapers/reddit_scraper.py- Module principal scraper Redditbackend/app/models/reddit_post.py- Modèles SQLAlchemy pour posts et commentaires Redditbackend/app/schemas/reddit_post.py- Schémas Pydantic pour validationbackend/tests/test_reddit_scraper.py- Tests unitaires completsbackend/alembic/versions/20260117_0002_create_reddit_tables.py- Migration pour tables Redditbackend/requirements.txt- Ajout de dépendance praw==7.8.1backend/app/models/__init__.py- Export des nouveaux modèlesbackend/app/schemas/__init__.py- Export des nouveaux schémas