Files
yandex-music-api-go/internal/client/albums.go
T
2026-10-14 23:04:51 +03:00

68 lines
1.5 KiB
Go

package client
import (
"context"
"gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/models"
"gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/utils"
)
// GetAlbums gets albums by IDs
func (c *Client) GetAlbums(ctx context.Context, albumIDs []string) ([]*models.Album, error) {
if len(albumIDs) == 0 {
return nil, nil
}
params := map[string]string{
"album-ids": joinIDs(albumIDs),
}
var result []models.Album
if err := c.request.Get(ctx, "/albums", params, &result); err != nil {
return nil, err
}
albums := make([]*models.Album, len(result))
for i := range result {
result[i].SetClient(c)
albums[i] = &result[i]
}
return albums, nil
}
// GetAlbum gets a single album by ID
func (c *Client) GetAlbum(ctx context.Context, albumID string) (*models.Album, error) {
albums, err := c.GetAlbums(ctx, []string{albumID})
if err != nil {
return nil, err
}
if len(albums) == 0 {
return nil, utils.NewYandexMusicError("album not found", utils.ErrNotFound)
}
return albums[0], nil
}
// GetAlbumsWithTracks gets albums with tracks expanded
func (c *Client) GetAlbumsWithTracks(ctx context.Context, albumIDs []string) ([]*models.Album, error) {
if len(albumIDs) == 0 {
return nil, nil
}
params := map[string]string{
"album-ids": joinIDs(albumIDs),
"with-tracks": "true",
}
var result []models.Album
if err := c.request.Get(ctx, "/albums", params, &result); err != nil {
return nil, err
}
albums := make([]*models.Album, len(result))
for i := range result {
result[i].SetClient(c)
albums[i] = &result[i]
}
return albums, nil
}