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 }