mirror of
https://github.com/apricote/Listory.git
synced 2026-02-06 17:57:03 +00:00
feat(server): save genres for artists and albums
This can later be used for reports
This commit is contained in:
parent
9b96d0fab4
commit
3c6f3289f1
12 changed files with 225 additions and 0 deletions
|
|
@ -3,6 +3,7 @@ import { ListensService } from "../../listens/listens.service";
|
|||
import { Logger } from "../../logger/logger.service";
|
||||
import { Album } from "../../music-library/album.entity";
|
||||
import { Artist } from "../../music-library/artist.entity";
|
||||
import { Genre } from "../../music-library/genre.entity";
|
||||
import { MusicLibraryService } from "../../music-library/music-library.service";
|
||||
import { Track } from "../../music-library/track.entity";
|
||||
import { User } from "../../users/user.entity";
|
||||
|
|
@ -209,9 +210,14 @@ export class SpotifyService {
|
|||
)
|
||||
);
|
||||
|
||||
const genres = await Promise.all(
|
||||
spotifyAlbum.genres.map((genreName) => this.importGenre(genreName))
|
||||
);
|
||||
|
||||
return this.musicLibraryService.createAlbum({
|
||||
name: spotifyAlbum.name,
|
||||
artists,
|
||||
genres,
|
||||
spotify: {
|
||||
id: spotifyAlbum.id,
|
||||
uri: spotifyAlbum.uri,
|
||||
|
|
@ -249,8 +255,13 @@ export class SpotifyService {
|
|||
throw err;
|
||||
}
|
||||
|
||||
const genres = await Promise.all(
|
||||
spotifyArtist.genres.map((genreName) => this.importGenre(genreName))
|
||||
);
|
||||
|
||||
return this.musicLibraryService.createArtist({
|
||||
name: spotifyArtist.name,
|
||||
genres,
|
||||
spotify: {
|
||||
id: spotifyArtist.id,
|
||||
uri: spotifyArtist.uri,
|
||||
|
|
@ -260,6 +271,19 @@ export class SpotifyService {
|
|||
});
|
||||
}
|
||||
|
||||
async importGenre(name: string): Promise<Genre> {
|
||||
const genre = await this.musicLibraryService.findGenre({
|
||||
name,
|
||||
});
|
||||
if (genre) {
|
||||
return genre;
|
||||
}
|
||||
|
||||
return this.musicLibraryService.createGenre({
|
||||
name,
|
||||
});
|
||||
}
|
||||
|
||||
private async refreshAppAccessToken(): Promise<void> {
|
||||
if (!this.appAccessTokenInProgress) {
|
||||
this.logger.debug("refreshing spotify app access token");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue