return similar artists

This commit is contained in:
sentriz
2020-02-12 16:20:04 +00:00
parent 74e3598200
commit e67588623b
2 changed files with 36 additions and 9 deletions

View File

@@ -257,5 +257,31 @@ func (c *Controller) ServeGetArtistInfoTwo(r *http.Request) *spec.Response {
sub.ArtistInfoTwo.LargeImageURL = image.Text
}
}
count := params.GetIntOr("count", 20)
includeNotPresent := params.Get("includeNotPresent") == "true"
for i, similarInfo := range info.Similar.Artists {
if i == count {
break
}
artist = &model.Artist{}
err = c.DB.
Select("*, count(albums.id) as album_count").
Where("name = ?", similarInfo.Name).
Joins(`LEFT JOIN albums ON artists.id = albums.tag_artist_id`).
Group("artists.id").
Find(artist).
Error
if gorm.IsRecordNotFoundError(err) && !includeNotPresent {
continue
}
similar := &spec.SimilarArtist{ID: -1}
if artist.ID != 0 {
similar.ID = artist.ID
}
similar.Name = similarInfo.Name
similar.AlbumCount = artist.AlbumCount
sub.ArtistInfoTwo.SimilarArtist = append(
sub.ArtistInfoTwo.SimilarArtist, similar)
}
return sub
}

View File

@@ -228,18 +228,19 @@ type Playlist struct {
}
type SimilarArtist struct {
ID int `xml:"id,attr" json:"id,string"`
Name string `xml:"name,attr" json:"name"`
ID int `xml:"id,attr" json:"id,string"`
Name string `xml:"name,attr" json:"name"`
AlbumCount int `xml:"albumCount,attr,omitempty" json:"albumCount,omitempty"`
}
type ArtistInfo struct {
Biography string `xml:"biography" json:"biography"`
MusicBrainzID string `xml:"musicBrainzId" json:"musicBrainzId"`
LastFMURL string `xml:"lastFmUrl" json:"lastFmUrl"`
SmallImageURL string `xml:"smallImageUrl" json:"smallImageUrl"`
MediumImageURL string `xml:"mediumImageUrl" json:"mediumImageUrl"`
LargeImageURL string `xml:"largeImageUrl" json:"largeImageUrl"`
SimilarArtist []*SimilarArtist `xml:"similarArtist" json:"similarArtist"`
Biography string `xml:"biography" json:"biography"`
MusicBrainzID string `xml:"musicBrainzId" json:"musicBrainzId"`
LastFMURL string `xml:"lastFmUrl" json:"lastFmUrl"`
SmallImageURL string `xml:"smallImageUrl" json:"smallImageUrl"`
MediumImageURL string `xml:"mediumImageUrl" json:"mediumImageUrl"`
LargeImageURL string `xml:"largeImageUrl" json:"largeImageUrl"`
SimilarArtist []*SimilarArtist `xml:"similarArtist,omitempty" json:"similarArtist,omitempty"`
}
type Genre struct {