// Package client provides methods for interacting with Yandex Music API endpoints. package client import ( "context" "fmt" "gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/models" ) // GetClips gets clips with pagination (GET /clips). func (c *Client) GetClips(ctx context.Context, page, pageSize int) ([]*models.Clip, error) { params := map[string]string{ "page": "1", "page_size": "20", } if page > 0 { params["page"] = fmt.Sprintf("%d", page) } if pageSize > 0 { params["page_size"] = fmt.Sprintf("%d", pageSize) } var result []models.Clip if err := c.request.Get(ctx, "/clips", params, &result); err != nil { return nil, err } clips := make([]*models.Clip, len(result)) for i := range result { result[i].SetClient(c) clips[i] = &result[i] } return clips, nil } // GetClipsWillLike gets clips the user might like (GET /clips/will/like). func (c *Client) GetClipsWillLike(ctx context.Context) (*models.ClipsWillLike, error) { var result models.ClipsWillLike if err := c.request.Get(ctx, "/clips/will/like", nil, &result); err != nil { return nil, err } return &result, nil } // GetArtistClips gets clips by an artist (GET /artists/{artistID}/blocks/artist-clips). func (c *Client) GetArtistClips(ctx context.Context, artistID string) (*models.ArtistClipData, error) { var result models.ArtistClipData if err := c.request.Get(ctx, fmt.Sprintf("/artists/%s/blocks/artist-clips", artistID), nil, &result); err != nil { return nil, err } return &result, nil } // GetClipsDisclaimer gets clips disclaimer (GET /clips/{id}/disclaimer). func (c *Client) GetClipsDisclaimer(ctx context.Context, clipID string) (*models.Disclaimer, error) { var result models.Disclaimer if err := c.request.Get(ctx, fmt.Sprintf("/clips/%s/disclaimer", clipID), nil, &result); err != nil { return nil, err } result.SetClient(c) return &result, nil } // GetShots gets shots with pagination (GET /shots). func (c *Client) GetShots(ctx context.Context, page, pageSize int) ([]*models.Shot, error) { params := map[string]string{ "page": "1", "page_size": "20", } if page > 0 { params["page"] = fmt.Sprintf("%d", page) } if pageSize > 0 { params["page_size"] = fmt.Sprintf("%d", pageSize) } var result []models.Shot if err := c.request.Get(ctx, "/shots", params, &result); err != nil { return nil, err } shots := make([]*models.Shot, len(result)) for i := range result { result[i].SetClient(c) shots[i] = &result[i] } return shots, nil }