removed function fetch list

This commit is contained in:
Hazel Noack
2025-10-09 12:35:00 +02:00
parent 6bd957b09e
commit e79e364ff9
4 changed files with 46 additions and 42 deletions

View File

@@ -100,12 +100,12 @@ func interpretCommand(command string, store musicObjectStore) (musicObjectStore,
current := currentMusicObjects[index] current := currentMusicObjects[index]
currentMusicObjects, err = plugin.FetchList(current) fetched, err := plugin.Fetch(current)
if err != nil { if err != nil {
return store, err return store, err
} }
return append(store, currentMusicObjects), nil return append(store, fetched.Related()), nil
} }
// search in every other case // search in every other case

View File

@@ -11,6 +11,7 @@ type MusicObject interface {
Compile() MusicObject Compile() MusicObject
GetIndices() []string GetIndices() []string
Merge(other MusicObject) MusicObject Merge(other MusicObject) MusicObject
Related() []MusicObject
} }
func dedupeMusicObjects[T MusicObject](inputMusicObjects []T) []T { func dedupeMusicObjects[T MusicObject](inputMusicObjects []T) []T {
@@ -71,6 +72,20 @@ type Song struct {
Sources []Source Sources []Source
} }
func (m Song) Related() []MusicObject {
res := []MusicObject{}
for _, a := range m.Artists {
res = append(res, a)
}
if m.Album.Name != "" {
res = append(res, m.Album)
}
res = append(res, m)
return res
}
func (m Song) GetSources() []Source { func (m Song) GetSources() []Source {
return m.Sources return m.Sources
} }
@@ -127,6 +142,20 @@ type Album struct {
Sources []Source Sources []Source
} }
func (m Album) Related() []MusicObject {
res := []MusicObject{}
for _, a := range m.Artists {
res = append(res, a)
}
res = append(res, m)
for _, a := range m.Songs {
res = append(res, a)
}
return res
}
func (m Album) GetSources() []Source { func (m Album) GetSources() []Source {
return m.Sources return m.Sources
} }
@@ -183,6 +212,16 @@ type Artist struct {
Sources []Source Sources []Source
} }
func (m Artist) Related() []MusicObject {
res := []MusicObject{m}
for _, a := range m.Albums {
res = append(res, a)
}
return res
}
func (m Artist) GetSources() []Source { func (m Artist) GetSources() []Source {
return m.Sources return m.Sources
} }

View File

@@ -166,41 +166,6 @@ func Fetch(musicObject data.MusicObject) (data.MusicObject, error) {
return musicObject, nil return musicObject, nil
} }
func FetchList(musicObject data.MusicObject) ([]data.MusicObject, error) {
res := []data.MusicObject{}
musicObject, err := Fetch(musicObject)
if err != nil {
return res, err
}
if a, ok := musicObject.(data.Song); ok {
for _, ar := range a.Artists {
res = append(res, ar)
}
if a.Album.Name != "" {
res = append(res, a.Album, a)
}
} else if a, ok := musicObject.(data.Album); ok {
for _, ar := range a.Artists {
res = append(res, ar)
}
res = append(res, a)
for _, s := range a.Songs {
res = append(res, s)
}
} else if a, ok := musicObject.(data.Artist); ok {
res = append(res, a)
for _, al := range a.Albums {
res = append(res, al)
}
} else {
res = append(res, musicObject)
}
return res, nil
}
type SearchConfig struct { type SearchConfig struct {
IgnoreErrors bool IgnoreErrors bool
} }

View File

@@ -87,7 +87,7 @@ func TestRegister(t *testing.T) {
func TestFetchSong(t *testing.T) { func TestFetchSong(t *testing.T) {
RegisterPlugin(&MusifyTest{}) RegisterPlugin(&MusifyTest{})
s, err := Fetch(data.Source{ s, err := FetchSource(data.Source{
Url: "https://musify.club/track/linkin-park-in-the-end-3058", Url: "https://musify.club/track/linkin-park-in-the-end-3058",
}) })
@@ -108,7 +108,7 @@ func TestFetchSong(t *testing.T) {
func TestFetchAlbum(t *testing.T) { func TestFetchAlbum(t *testing.T) {
RegisterPlugin(&MusifyTest{}) RegisterPlugin(&MusifyTest{})
a, err := Fetch(data.Source{ a, err := FetchSource(data.Source{
Url: "https://musify.club/release/linkin-park-hybrid-theory-2000-188", Url: "https://musify.club/release/linkin-park-hybrid-theory-2000-188",
}) })
@@ -129,7 +129,7 @@ func TestFetchAlbum(t *testing.T) {
func TestFetchArtist(t *testing.T) { func TestFetchArtist(t *testing.T) {
RegisterPlugin(&MusifyTest{}) RegisterPlugin(&MusifyTest{})
a, err := Fetch(data.Source{ a, err := FetchSource(data.Source{
Url: "https://musify.club/artist/linkin-park-5", Url: "https://musify.club/artist/linkin-park-5",
}) })
@@ -150,7 +150,7 @@ func TestFetchArtist(t *testing.T) {
func TestFetchWrongUrl(t *testing.T) { func TestFetchWrongUrl(t *testing.T) {
RegisterPlugin(&MusifyTest{}) RegisterPlugin(&MusifyTest{})
_, err := Fetch(data.Source{ _, err := FetchSource(data.Source{
Url: "https://musify.club/", Url: "https://musify.club/",
}) })
@@ -162,7 +162,7 @@ func TestFetchWrongUrl(t *testing.T) {
func TestNonExistentSourceType(t *testing.T) { func TestNonExistentSourceType(t *testing.T) {
RegisterPlugin(&MusifyTest{}) RegisterPlugin(&MusifyTest{})
_, err := Fetch(data.Source{ _, err := FetchSource(data.Source{
Url: "https://musify.club/", Url: "https://musify.club/",
SourceType: &data.SourceType{ SourceType: &data.SourceType{
Name: "doesn't exist", Name: "doesn't exist",