5.7 KiB
Récapitulatif des modifications pour le seeder Spotify
Objectif
Ajout d’un seeder capable de récupérer de vraies données depuis l’API Spotify pour alimenter l’application avec :
- des artistes
- des styles
- des titres
- des commentaires générés localement autour de ces vraies données
1. Nouveau seeder Spotify
Fichier ajouté
Webzine.Entity/Fixtures/SeedDataSpotify.cs
Ce qui a été fait
- création de la classe
SeedDataSpotify - ajout de la classe de configuration
SpotifySeederOptions - appel à l’API Spotify via
HttpClient - authentification avec le flux OAuth
client_credentials - récupération d’artistes par genre
- récupération des albums de chaque artiste
- récupération des titres de chaque album
- mapping des données Spotify vers les entités métier :
ArtisteStyleTitreCommentaire
- génération de commentaires locaux via
SeedDataLocal - transformation des genres Spotify en
Style - génération de valeurs applicatives cohérentes :
ChroniqueNbLecturesNbLikesDateSortieUrlJaquetteUrlEcoute
Comportement
Le seeder produit un jeu de données exploitable par :
- le mode base de données
- le mode mémoire
2. Création d’un conteneur commun pour le seeding
Fichier ajouté
Webzine.Entity/Fixtures/SeedDataSet.cs
Ce qui a été fait
Ajout d’un objet SeedDataSet contenant :
ArtistesStylesTitresCommentaires
Pourquoi
Cela permet d’unifier le résultat du seeding, qu’il vienne :
- du générateur local
- de Spotify
3. Adaptation du repository DB
Fichier modifié
Webzine.Repository/DbEntityRepository.cs
Ce qui a été fait
Modification de SeedBaseDeDonnees pour qu’elle puisse :
- continuer à générer les données locales comme avant
- ou accepter un
SeedDataSetexterne déjà préparé
Résultat
Le repository peut maintenant insérer en base :
- soit les données fake locales
- soit les données réelles récupérées depuis Spotify
4. Branchement du seeder dans le démarrage de l’application
Fichier modifié
Webzine.WebApplication/Program.cs
Ce qui a été fait
- enregistrement de la configuration
SpotifySeeder - enregistrement de
SeedDataSpotifyviaAddHttpClient - lecture de
SeederType - ajout de la logique :
- si
Seeder = Spotify, on appelleSeedDataSpotify - sinon on garde
SeedDataLocal
- si
Cas couverts
Repository = DbRepository = Local
Donc le mode Spotify fonctionne aussi bien :
- avec SQLite/PostgreSQL
- qu’avec le store mémoire
5. Ajout de la configuration Spotify
Fichiers modifiés
- Webzine.WebApplication/appsettings.json
- Webzine.WebApplication/appsettings.Development.json
- Webzine.WebApplication/appsettings.Production.json
Ce qui a été ajouté
Section SpotifySeeder avec :
ClientIdClientSecretMarketGenresArtistsPerGenreAlbumsPerArtistTracksPerAlbumMaxCommentsPerTrack
Utilisation
Pour activer le seeder Spotify :
{
"Seeder": "Spotify"
}
Et renseigner :
"SpotifySeeder": {
"ClientId": "...",
"ClientSecret": "..."
}
6. Dépendance ajoutée
Fichier modifié
Webzine.Entity/Webzine.Entity.csproj
Ce qui a été fait
Ajout du package :
Microsoft.Extensions.Options
Pourquoi
Pour injecter proprement SpotifySeederOptions dans SeedDataSpotify
7. Effet sur les données de l’application
Avec le seeder Spotify, les titres créés utilisent maintenant :
- un vrai nom de titre
- un vrai artiste
- un vrai album
- une vraie jaquette Spotify
- une vraie URL Spotify
- des styles dérivés des genres Spotify
Les commentaires restent générés localement pour enrichir l’affichage.
8. Point d’attention
Je n’ai pas pu valider la compilation complète dans cet environnement à cause d’un problème SDK/.NET local lié au workload resolver, pas à une erreur C# remontée sur les fichiers modifiés.