feat(subsonic): add getAlbumInfo with cache
Release-As: 0.16.1
This commit is contained in:
@@ -60,6 +60,26 @@ func (c *Client) ArtistGetInfo(artistName string) (Artist, error) {
|
||||
return resp.Artist, nil
|
||||
}
|
||||
|
||||
func (c *Client) AlbumGetInfo(artistName, albumName string) (Album, error) {
|
||||
apiKey, _, err := c.keySecret()
|
||||
if err != nil {
|
||||
return Album{}, fmt.Errorf("get key and secret: %w", err)
|
||||
}
|
||||
|
||||
params := url.Values{}
|
||||
params.Add("method", "album.getInfo")
|
||||
params.Add("api_key", apiKey)
|
||||
params.Add("artist", artistName)
|
||||
params.Add("album", albumName)
|
||||
|
||||
resp, err := c.makeRequest(http.MethodGet, params)
|
||||
if err != nil {
|
||||
return Album{}, fmt.Errorf("make request: %w", err)
|
||||
}
|
||||
|
||||
return resp.Album, nil
|
||||
}
|
||||
|
||||
func (c *Client) ArtistGetTopTracks(artistName string) (TopTracks, error) {
|
||||
apiKey, _, err := c.keySecret()
|
||||
if err != nil {
|
||||
|
||||
@@ -9,6 +9,7 @@ type (
|
||||
Session Session `xml:"session"`
|
||||
Error Error `xml:"error"`
|
||||
Artist Artist `xml:"artist"`
|
||||
Album Album `xml:"album"`
|
||||
TopTracks TopTracks `xml:"toptracks"`
|
||||
SimilarTracks SimilarTracks `xml:"similartracks"`
|
||||
SimilarArtists SimilarArtists `xml:"similarartists"`
|
||||
@@ -61,6 +62,54 @@ type (
|
||||
Bio ArtistBio `xml:"bio"`
|
||||
}
|
||||
|
||||
Album struct {
|
||||
XMLName xml.Name `xml:"album"`
|
||||
Name string `xml:"name"`
|
||||
Artist string `xml:"artist"`
|
||||
MBID string `xml:"mbid"`
|
||||
URL string `xml:"url"`
|
||||
Image []struct {
|
||||
Text string `xml:",chardata"`
|
||||
Size string `xml:"size,attr"`
|
||||
} `xml:"image"`
|
||||
Listeners string `xml:"listeners"`
|
||||
Playcount string `xml:"playcount"`
|
||||
Tracks struct {
|
||||
Text string `xml:",chardata"`
|
||||
Track []struct {
|
||||
Text string `xml:",chardata"`
|
||||
Rank string `xml:"rank,attr"`
|
||||
Name string `xml:"name"`
|
||||
URL string `xml:"url"`
|
||||
Duration string `xml:"duration"`
|
||||
Streamable struct {
|
||||
Text string `xml:",chardata"`
|
||||
Fulltrack string `xml:"fulltrack,attr"`
|
||||
} `xml:"streamable"`
|
||||
Artist struct {
|
||||
Text string `xml:",chardata"`
|
||||
Name string `xml:"name"`
|
||||
Mbid string `xml:"mbid"`
|
||||
URL string `xml:"url"`
|
||||
} `xml:"artist"`
|
||||
} `xml:"track"`
|
||||
} `xml:"tracks"`
|
||||
Tags struct {
|
||||
Text string `xml:",chardata"`
|
||||
Tag []struct {
|
||||
Text string `xml:",chardata"`
|
||||
Name string `xml:"name"`
|
||||
URL string `xml:"url"`
|
||||
} `xml:"tag"`
|
||||
} `xml:"tags"`
|
||||
Wiki struct {
|
||||
Text string `xml:",chardata"`
|
||||
Published string `xml:"published"`
|
||||
Summary string `xml:"summary"`
|
||||
Content string `xml:"content"`
|
||||
} `xml:"wiki"`
|
||||
}
|
||||
|
||||
ArtistTag struct {
|
||||
Name string `xml:"name"`
|
||||
URL string `xml:"url"`
|
||||
|
||||
Reference in New Issue
Block a user