#145 : Ajout du seeder Spotify.
This commit is contained in:
172
Webzine.Documentation/SpotifySeederRecap.md
Normal file
172
Webzine.Documentation/SpotifySeederRecap.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# 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](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\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 :
|
||||
- `Artiste`
|
||||
- `Style`
|
||||
- `Titre`
|
||||
- `Commentaire`
|
||||
- génération de commentaires locaux via `SeedDataLocal`
|
||||
- transformation des genres Spotify en `Style`
|
||||
- génération de valeurs applicatives cohérentes :
|
||||
- `Chronique`
|
||||
- `NbLectures`
|
||||
- `NbLikes`
|
||||
- `DateSortie`
|
||||
- `UrlJaquette`
|
||||
- `UrlEcoute`
|
||||
|
||||
### 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](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSet.cs)
|
||||
|
||||
### Ce qui a été fait
|
||||
Ajout d’un objet `SeedDataSet` contenant :
|
||||
- `Artistes`
|
||||
- `Styles`
|
||||
- `Titres`
|
||||
- `Commentaires`
|
||||
|
||||
### 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](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\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 `SeedDataSet` externe 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](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\Program.cs)
|
||||
|
||||
### Ce qui a été fait
|
||||
- enregistrement de la configuration `SpotifySeeder`
|
||||
- enregistrement de `SeedDataSpotify` via `AddHttpClient`
|
||||
- lecture de `SeederType`
|
||||
- ajout de la logique :
|
||||
- si `Seeder = Spotify`, on appelle `SeedDataSpotify`
|
||||
- sinon on garde `SeedDataLocal`
|
||||
|
||||
### Cas couverts
|
||||
- `Repository = Db`
|
||||
- `Repository = 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](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.json)
|
||||
- [Webzine.WebApplication/appsettings.Development.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Development.json)
|
||||
- [Webzine.WebApplication/appsettings.Production.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Production.json)
|
||||
|
||||
### Ce qui a été ajouté
|
||||
Section `SpotifySeeder` avec :
|
||||
- `ClientId`
|
||||
- `ClientSecret`
|
||||
- `Market`
|
||||
- `Genres`
|
||||
- `ArtistsPerGenre`
|
||||
- `AlbumsPerArtist`
|
||||
- `TracksPerAlbum`
|
||||
- `MaxCommentsPerTrack`
|
||||
|
||||
### Utilisation
|
||||
Pour activer le seeder Spotify :
|
||||
|
||||
```json
|
||||
{
|
||||
"Seeder": "Spotify"
|
||||
}
|
||||
```
|
||||
|
||||
Et renseigner :
|
||||
|
||||
```json
|
||||
"SpotifySeeder": {
|
||||
"ClientId": "...",
|
||||
"ClientSecret": "..."
|
||||
}
|
||||
```
|
||||
|
||||
## 6. Dépendance ajoutée
|
||||
|
||||
### Fichier modifié
|
||||
[Webzine.Entity/Webzine.Entity.csproj](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\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.
|
||||
|
||||
## 9. Fichiers impactés
|
||||
|
||||
### Ajoutés
|
||||
- [Webzine.Entity/Fixtures/SeedDataSpotify.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSpotify.cs)
|
||||
- [Webzine.Entity/Fixtures/SeedDataSet.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSet.cs)
|
||||
|
||||
### Modifiés
|
||||
- [Webzine.Repository/DbEntityRepository.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Repository\DbEntityRepository.cs)
|
||||
- [Webzine.WebApplication/Program.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\Program.cs)
|
||||
- [Webzine.WebApplication/appsettings.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.json)
|
||||
- [Webzine.WebApplication/appsettings.Development.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Development.json)
|
||||
- [Webzine.WebApplication/appsettings.Production.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Production.json)
|
||||
- [Webzine.Entity/Webzine.Entity.csproj](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Webzine.Entity.csproj)
|
||||
Reference in New Issue
Block a user