Documentation
¶
Index ¶
Constants ¶
View Source
const ( DefaultBaseURL = "https://lrclib.net/api" DefaultUserAgent = "lrclib-go/1.0 (https://github.com/fumbledlol/lrclib-go)" )
Variables ¶
View Source
var ( // ErrNotFound is returned when LRCLIB returns 404. ErrNotFound = errors.New("lrclib: lyrics not found") // ErrRateLimited is returned when LRCLIB rate limits the request and backoff could not recover. ErrRateLimited = errors.New("lrclib: rate limited") )
View Source
var ( // ErrInvalidLRC indicates the input is not valid LRC formatted text. ErrInvalidLRC = errors.New("lrclib: invalid or empty LRC data") )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client interacts with the LRCLIB REST API.
func NewClient ¶
func NewClient(opts ...ClientOption) *Client
NewClient creates a new LRCLIB client.
func (*Client) Get ¶
func (c *Client) Get(ctx context.Context, trackName, artistName, albumName string, duration float64) (*Lyrics, error)
Get fetches lyrics by exact track and artist metadata.
type ClientOption ¶
type ClientOption func(*Client)
ClientOption configures a Client.
func WithBaseURL ¶
func WithBaseURL(url string) ClientOption
WithBaseURL overrides the default API base URL.
func WithHTTPClient ¶
func WithHTTPClient(client *http.Client) ClientOption
WithHTTPClient overrides the default HTTP client.
func WithMinInterval ¶
func WithMinInterval(interval time.Duration) ClientOption
WithMinInterval configures the rate-limiting spacing between requests.
func WithUserAgent ¶
func WithUserAgent(ua string) ClientOption
WithUserAgent overrides the default User-Agent header.
type Line ¶
type Line struct {
Timestamp time.Duration `json:"timestamp"`
Seconds float64 `json:"seconds"`
TimeStr string `json:"time_str"`
Text string `json:"text"`
}
Line represents a single synchronized lyric line.
type Lyrics ¶
type Lyrics struct {
ID int64 `json:"id"`
Name string `json:"name,omitempty"`
TrackName string `json:"trackName"`
ArtistName string `json:"artistName"`
AlbumName string `json:"albumName,omitempty"`
Duration float64 `json:"duration"`
Instrumental bool `json:"instrumental"`
PlainLyrics string `json:"plainLyrics,omitempty"`
SyncedLyrics string `json:"syncedLyrics,omitempty"`
}
Lyrics represents the response payload from LRCLIB.
type SearchParams ¶
type SearchParams struct {
Query string `json:"q,omitempty"`
TrackName string `json:"track_name,omitempty"`
ArtistName string `json:"artist_name,omitempty"`
AlbumName string `json:"album_name,omitempty"`
Duration float64 `json:"duration,omitempty"`
}
SearchParams contains query parameters for searching lyrics.
Click to show internal directories.
Click to hide internal directories.