Add album/track releases with audio analysis, AnalyzeAlbumRelease RPC, Docker path auto-resolution, release parsing decision tree

This commit is contained in:
Alexander
2026-05-09 23:16:59 +02:00
parent 1e8506f146
commit 2740585261
25 changed files with 1841 additions and 125 deletions
+13 -3
View File
@@ -26,6 +26,7 @@ import (
grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
"homelab.lan/music-agregator/internal"
"homelab.lan/music-agregator/internal/analysis"
"homelab.lan/music-agregator/internal/config"
"homelab.lan/music-agregator/internal/database"
"homelab.lan/music-agregator/internal/hello"
@@ -82,12 +83,16 @@ type riverSetup struct {
cacheRefreshWorker *indexer.CacheRefreshWorker
}
func setupRiver(ctx context.Context, cfg config.Config, db *database.DB, torrentClient torrent.TorrentClient) *riverSetup {
func setupRiver(ctx context.Context, cfg config.Config, db *database.DB, torrentClient torrent.TorrentClient, pathMapper *torrent.PathMapper) *riverSetup {
cacheWorker := &indexer.CacheRefreshWorker{}
pollWorker := &workers.PollDownloadWorker{
Downloads: database.NewDownloadRepository(db.Pool),
DownloadFiles: database.NewDownloadFileRepository(db.Pool),
AlbumReleases: database.NewAlbumReleaseRepository(db.Pool),
TrackReleases: database.NewTrackReleaseRepository(db.Pool),
TorrentClient: torrentClient,
PathMapper: pathMapper,
Analyzer: analysis.NewReleaseAnalyzer(db),
}
riverWorkers := river.NewWorkers()
@@ -161,9 +166,14 @@ func serveGrpc(config config.Config) {
log.Fatal().Err(err).Msg("failed to create torrent client")
}
rs := setupRiver(ctx, config, db, torrentClient)
pathMapper, err := torrent.NewPathMapper(config.Torrent.ContainerName, torrentClient)
if err != nil {
log.Fatal().Err(err).Msg("failed to create path mapper")
}
musiscAgregatorSeerver, err := internal.NewMusicAgregatorServer(config, rs.client, torrentClient, db)
rs := setupRiver(ctx, config, db, torrentClient, pathMapper)
musiscAgregatorSeerver, err := internal.NewMusicAgregatorServer(config, rs.client, torrentClient, pathMapper, db)
if err != nil {
log.Fatal().Err(err).Msg("failed to create MusicAgregatorServer")
}