func (l *Lyric) Search(artist, song string) (string, error) {
	if len(l.providers) == 0 {
		return "", errors.New("No providers selected")
	}
	for _, p := range l.providers {
		lyric := p.Fetch(artist, song)
		if len(lyric) > 5 {  
			return lyric, nil
		}
	}
	return "", errors.New("Not Found")
}
Search attempts to search for lyrics using artist and song
by trying various lyrics providers one by one.
package lyrics
import (
	"errors"
	"github.com/rhnvrm/lyric-api-go/genius"
	"github.com/rhnvrm/lyric-api-go/lyricswikia"
	"github.com/rhnvrm/lyric-api-go/musixmatch"
	"github.com/rhnvrm/lyric-api-go/songlyrics"
)
type provider interface {
	Fetch(artist, song string) string
}
var (
	defaultProviders = []provider{
		lyricswikia.New(),
		songlyrics.New(),
		musixmatch.New(),
	}
)
type Lyric struct {
	providers []provider
}
type Option func(Lyric) Lyric
func WithAllProviders() Option {
	return func(l Lyric) Lyric {
		l.providers = defaultProviders
		return l
	}
}
func WithLyricsWikia() Option {
	return func(l Lyric) Lyric {
		l.providers = append(l.providers, lyricswikia.New())
		return l
	}
}
func WithSongLyrics() Option {
	return func(l Lyric) Lyric {
		l.providers = append(l.providers, songlyrics.New())
		return l
	}
}
func WithMusixMatch() Option {
	return func(l Lyric) Lyric {
		l.providers = append(l.providers, musixmatch.New())
		return l
	}
}
func WithGeniusLyrics(accessToken string) Option {
	return func(l Lyric) Lyric {
		l.providers = append(l.providers, genius.New(accessToken))
		return l
	}
}
func WithoutProviders() Option {
	return func(l Lyric) Lyric {
		l.providers = []provider{}
		return l
	}
}
func New(o ...Option) Lyric {
	if len(o) == 0 {
		return Lyric{
			providers: defaultProviders,
		}
	}
	l := Lyric{}
	for _, option := range o {
		l = option(l)
	}
	return l
}