rename external metadata -wip

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan 2025-03-29 13:40:50 -04:00
parent de09390e49
commit eccf34c6f2
10 changed files with 41 additions and 19 deletions

View File

@ -14,6 +14,7 @@ import (
"github.com/navidrome/navidrome/core/agents/lastfm" "github.com/navidrome/navidrome/core/agents/lastfm"
"github.com/navidrome/navidrome/core/agents/listenbrainz" "github.com/navidrome/navidrome/core/agents/listenbrainz"
"github.com/navidrome/navidrome/core/artwork" "github.com/navidrome/navidrome/core/artwork"
"github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/core/metrics" "github.com/navidrome/navidrome/core/metrics"
"github.com/navidrome/navidrome/core/playback" "github.com/navidrome/navidrome/core/playback"
@ -66,7 +67,7 @@ func CreateSubsonicAPIRouter(ctx context.Context) *subsonic.Router {
fileCache := artwork.GetImageCache() fileCache := artwork.GetImageCache()
fFmpeg := ffmpeg.New() fFmpeg := ffmpeg.New()
agentsAgents := agents.GetAgents(dataStore) agentsAgents := agents.GetAgents(dataStore)
externalMetadata := core.NewExternalMetadata(dataStore, agentsAgents) externalMetadata := extdata.NewExternalMetadata(dataStore, agentsAgents)
artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata) artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata)
transcodingCache := core.GetTranscodingCache() transcodingCache := core.GetTranscodingCache()
mediaStreamer := core.NewMediaStreamer(dataStore, fFmpeg, transcodingCache) mediaStreamer := core.NewMediaStreamer(dataStore, fFmpeg, transcodingCache)
@ -90,7 +91,7 @@ func CreatePublicRouter() *public.Router {
fileCache := artwork.GetImageCache() fileCache := artwork.GetImageCache()
fFmpeg := ffmpeg.New() fFmpeg := ffmpeg.New()
agentsAgents := agents.GetAgents(dataStore) agentsAgents := agents.GetAgents(dataStore)
externalMetadata := core.NewExternalMetadata(dataStore, agentsAgents) externalMetadata := extdata.NewExternalMetadata(dataStore, agentsAgents)
artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata) artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata)
transcodingCache := core.GetTranscodingCache() transcodingCache := core.GetTranscodingCache()
mediaStreamer := core.NewMediaStreamer(dataStore, fFmpeg, transcodingCache) mediaStreamer := core.NewMediaStreamer(dataStore, fFmpeg, transcodingCache)
@ -134,7 +135,7 @@ func CreateScanner(ctx context.Context) scanner.Scanner {
fileCache := artwork.GetImageCache() fileCache := artwork.GetImageCache()
fFmpeg := ffmpeg.New() fFmpeg := ffmpeg.New()
agentsAgents := agents.GetAgents(dataStore) agentsAgents := agents.GetAgents(dataStore)
externalMetadata := core.NewExternalMetadata(dataStore, agentsAgents) externalMetadata := extdata.NewExternalMetadata(dataStore, agentsAgents)
artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata) artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata)
cacheWarmer := artwork.NewCacheWarmer(artworkArtwork, fileCache) cacheWarmer := artwork.NewCacheWarmer(artworkArtwork, fileCache)
broker := events.GetBroker() broker := events.GetBroker()
@ -150,7 +151,7 @@ func CreateScanWatcher(ctx context.Context) scanner.Watcher {
fileCache := artwork.GetImageCache() fileCache := artwork.GetImageCache()
fFmpeg := ffmpeg.New() fFmpeg := ffmpeg.New()
agentsAgents := agents.GetAgents(dataStore) agentsAgents := agents.GetAgents(dataStore)
externalMetadata := core.NewExternalMetadata(dataStore, agentsAgents) externalMetadata := extdata.NewExternalMetadata(dataStore, agentsAgents)
artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata) artworkArtwork := artwork.NewArtwork(dataStore, fileCache, fFmpeg, externalMetadata)
cacheWarmer := artwork.NewCacheWarmer(artworkArtwork, fileCache) cacheWarmer := artwork.NewCacheWarmer(artworkArtwork, fileCache)
broker := events.GetBroker() broker := events.GetBroker()

View File

@ -8,7 +8,7 @@ import (
"time" "time"
"github.com/navidrome/navidrome/consts" "github.com/navidrome/navidrome/consts"
"github.com/navidrome/navidrome/core" "github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/model"
@ -24,7 +24,7 @@ type Artwork interface {
GetOrPlaceholder(ctx context.Context, id string, size int, square bool) (io.ReadCloser, time.Time, error) GetOrPlaceholder(ctx context.Context, id string, size int, square bool) (io.ReadCloser, time.Time, error)
} }
func NewArtwork(ds model.DataStore, cache cache.FileCache, ffmpeg ffmpeg.FFmpeg, em core.ExternalMetadata) Artwork { func NewArtwork(ds model.DataStore, cache cache.FileCache, ffmpeg ffmpeg.FFmpeg, em extdata.ExternalMetadata) Artwork {
return &artwork{ds: ds, cache: cache, ffmpeg: ffmpeg, em: em} return &artwork{ds: ds, cache: cache, ffmpeg: ffmpeg, em: em}
} }
@ -32,7 +32,7 @@ type artwork struct {
ds model.DataStore ds model.DataStore
cache cache.FileCache cache cache.FileCache
ffmpeg ffmpeg.FFmpeg ffmpeg ffmpeg.FFmpeg
em core.ExternalMetadata em extdata.ExternalMetadata
} }
type artworkReader interface { type artworkReader interface {

View File

@ -12,6 +12,7 @@ import (
"github.com/Masterminds/squirrel" "github.com/Masterminds/squirrel"
"github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/conf"
"github.com/navidrome/navidrome/core" "github.com/navidrome/navidrome/core"
"github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/model"
) )
@ -19,14 +20,14 @@ import (
type albumArtworkReader struct { type albumArtworkReader struct {
cacheKey cacheKey
a *artwork a *artwork
em core.ExternalMetadata em extdata.ExternalMetadata
album model.Album album model.Album
updatedAt *time.Time updatedAt *time.Time
imgFiles []string imgFiles []string
rootFolder string rootFolder string
} }
func newAlbumArtworkReader(ctx context.Context, artwork *artwork, artID model.ArtworkID, em core.ExternalMetadata) (*albumArtworkReader, error) { func newAlbumArtworkReader(ctx context.Context, artwork *artwork, artID model.ArtworkID, em extdata.ExternalMetadata) (*albumArtworkReader, error) {
al, err := artwork.ds.Album(ctx).Get(artID.ID) al, err := artwork.ds.Album(ctx).Get(artID.ID)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -14,6 +14,7 @@ import (
"github.com/Masterminds/squirrel" "github.com/Masterminds/squirrel"
"github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/conf"
"github.com/navidrome/navidrome/core" "github.com/navidrome/navidrome/core"
"github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/utils/str" "github.com/navidrome/navidrome/utils/str"
@ -22,13 +23,13 @@ import (
type artistReader struct { type artistReader struct {
cacheKey cacheKey
a *artwork a *artwork
em core.ExternalMetadata em extdata.ExternalMetadata
artist model.Artist artist model.Artist
artistFolder string artistFolder string
imgFiles []string imgFiles []string
} }
func newArtistReader(ctx context.Context, artwork *artwork, artID model.ArtworkID, em core.ExternalMetadata) (*artistReader, error) { func newArtistReader(ctx context.Context, artwork *artwork, artID model.ArtworkID, em extdata.ExternalMetadata) (*artistReader, error) {
ar, err := artwork.ds.Artist(ctx).Get(artID.ID) ar, err := artwork.ds.Artist(ctx).Get(artID.ID)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -17,7 +17,7 @@ import (
"github.com/dhowden/tag" "github.com/dhowden/tag"
"github.com/navidrome/navidrome/consts" "github.com/navidrome/navidrome/consts"
"github.com/navidrome/navidrome/core" "github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/model"
@ -157,7 +157,7 @@ func fromAlbumPlaceholder() sourceFunc {
return r, consts.PlaceholderAlbumArt, nil return r, consts.PlaceholderAlbumArt, nil
} }
} }
func fromArtistExternalSource(ctx context.Context, ar model.Artist, em core.ExternalMetadata) sourceFunc { func fromArtistExternalSource(ctx context.Context, ar model.Artist, em extdata.ExternalMetadata) sourceFunc {
return func() (io.ReadCloser, string, error) { return func() (io.ReadCloser, string, error) {
imageUrl, err := em.ArtistImage(ctx, ar.ID) imageUrl, err := em.ArtistImage(ctx, ar.ID)
if err != nil { if err != nil {
@ -168,7 +168,7 @@ func fromArtistExternalSource(ctx context.Context, ar model.Artist, em core.Exte
} }
} }
func fromAlbumExternalSource(ctx context.Context, al model.Album, em core.ExternalMetadata) sourceFunc { func fromAlbumExternalSource(ctx context.Context, al model.Album, em extdata.ExternalMetadata) sourceFunc {
return func() (io.ReadCloser, string, error) { return func() (io.ReadCloser, string, error) {
imageUrl, err := em.AlbumImage(ctx, al.ID) imageUrl, err := em.AlbumImage(ctx, al.ID)
if err != nil { if err != nil {

View File

@ -0,0 +1,17 @@
package extdata
import (
"testing"
"github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/tests"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
func TestExternalData(t *testing.T) {
tests.Init(t, false)
log.SetLevel(log.LevelFatal)
RegisterFailHandler(Fail)
RunSpecs(t, "ExternalData Suite")
}

View File

@ -1,4 +1,4 @@
package core package extdata
import ( import (
"context" "context"

View File

@ -1,4 +1,4 @@
package core package extdata
import ( import (
"context" "context"

View File

@ -3,6 +3,7 @@ package core
import ( import (
"github.com/google/wire" "github.com/google/wire"
"github.com/navidrome/navidrome/core/agents" "github.com/navidrome/navidrome/core/agents"
"github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/core/ffmpeg"
"github.com/navidrome/navidrome/core/metrics" "github.com/navidrome/navidrome/core/metrics"
"github.com/navidrome/navidrome/core/playback" "github.com/navidrome/navidrome/core/playback"
@ -13,11 +14,11 @@ var Set = wire.NewSet(
NewMediaStreamer, NewMediaStreamer,
GetTranscodingCache, GetTranscodingCache,
NewArchiver, NewArchiver,
NewExternalMetadata,
NewPlayers, NewPlayers,
NewShare, NewShare,
NewPlaylists, NewPlaylists,
agents.GetAgents, agents.GetAgents,
extdata.NewExternalMetadata,
ffmpeg.New, ffmpeg.New,
scrobbler.GetPlayTracker, scrobbler.GetPlayTracker,
playback.GetInstance, playback.GetInstance,

View File

@ -12,6 +12,7 @@ import (
"github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/conf"
"github.com/navidrome/navidrome/core" "github.com/navidrome/navidrome/core"
"github.com/navidrome/navidrome/core/artwork" "github.com/navidrome/navidrome/core/artwork"
"github.com/navidrome/navidrome/core/extdata"
"github.com/navidrome/navidrome/core/playback" "github.com/navidrome/navidrome/core/playback"
"github.com/navidrome/navidrome/core/scrobbler" "github.com/navidrome/navidrome/core/scrobbler"
"github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/log"
@ -35,7 +36,7 @@ type Router struct {
streamer core.MediaStreamer streamer core.MediaStreamer
archiver core.Archiver archiver core.Archiver
players core.Players players core.Players
externalMetadata core.ExternalMetadata externalMetadata extdata.ExternalMetadata
playlists core.Playlists playlists core.Playlists
scanner scanner.Scanner scanner scanner.Scanner
broker events.Broker broker events.Broker
@ -45,7 +46,7 @@ type Router struct {
} }
func New(ds model.DataStore, artwork artwork.Artwork, streamer core.MediaStreamer, archiver core.Archiver, func New(ds model.DataStore, artwork artwork.Artwork, streamer core.MediaStreamer, archiver core.Archiver,
players core.Players, externalMetadata core.ExternalMetadata, scanner scanner.Scanner, broker events.Broker, players core.Players, externalMetadata extdata.ExternalMetadata, scanner scanner.Scanner, broker events.Broker,
playlists core.Playlists, scrobbler scrobbler.PlayTracker, share core.Share, playback playback.PlaybackServer, playlists core.Playlists, scrobbler scrobbler.PlayTracker, share core.Share, playback playback.PlaybackServer,
) *Router { ) *Router {
r := &Router{ r := &Router{