miaosic

package module
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2024 License: MIT Imports: 8 Imported by: 0

README

Miaosic

Media Provider Repository

Todo

  • netease music
  • loginable implementation
  • local music optimization, load media when call api.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrorExternalApi        = errors.New("miaosic: external api error")
	ErrorNoSuchProvider     = errors.New("miaosic: no such provider")
	ErrorDifferentProvider  = errors.New("miaosic: different provider")
	ErrorInvalidPageSetting = errors.New("miaosic: invalid page setting")
	ErrorInvalidMediaMeta   = errors.New("miaosic: invalid media meta")
)
View Source
var ErrNotImplemented = errors.New("miaosic: not implemented")

Functions

func ListAvailableProviders

func ListAvailableProviders() []string

func RegisterProvider

func RegisterProvider(provider MediaProvider)

Types

type Loginable

type Loginable interface {
	Login(username string, password string) error
	Logout() error
	IsLogin() bool
	QrLogin() (*QrLoginSession, error)
	QrLoginVerify(qrlogin *QrLoginSession) (*QrLoginResult, error)
	RestoreSession(session string) error
	SaveSession() string
}

type LyricContext added in v0.1.6

type LyricContext struct {
	Now   LyricLine
	Index int
	Total int
	Prev  []LyricLine
	Next  []LyricLine
}

type LyricLine

type LyricLine struct {
	Time  float64 // in seconds
	Lyric string
}

func (LyricLine) String

func (lr LyricLine) String() string

type Lyrics

type Lyrics struct {
	Lang    string
	Content []LyricLine
}

func GetMediaLyric added in v0.1.6

func GetMediaLyric(meta MetaData) ([]Lyrics, error)

func ParseLyrics

func ParseLyrics(lang string, lyrics string) Lyrics

func (*Lyrics) Find

func (l *Lyrics) Find(time float64) LyricLine

func (*Lyrics) FindContext added in v0.1.6

func (l *Lyrics) FindContext(time float64, prev int, next int) *LyricContext

func (*Lyrics) FindIndex

func (l *Lyrics) FindIndex(time float64) int

func (*Lyrics) String

func (l *Lyrics) String() string

type MediaInfo

type MediaInfo struct {
	Title  string
	Artist string
	Cover  Picture
	Album  string
	Meta   MetaData
}

func GetMediaInfo added in v0.1.6

func GetMediaInfo(meta MetaData) (MediaInfo, error)

func SearchByProvider added in v0.1.6

func SearchByProvider(provider string, keyword string, page, size int) ([]MediaInfo, error)

type MediaProvider

type MediaProvider interface {
	// GetName returns the name of the provider.
	GetName() string

	// Search returns a list of MetaData.
	Search(keyword string, page, size int) ([]MediaInfo, error)

	// MatchMedia returns a MetaData if the uri is matched, otherwise nil.
	MatchMedia(uri string) (MetaData, bool)
	GetMediaInfo(meta MetaData) (MediaInfo, error)
	GetMediaUrl(meta MetaData, quality Quality) ([]MediaUrl, error)
	GetMediaLyric(meta MetaData) ([]Lyrics, error)

	// MatchPlaylist returns a MetaData if the uri is matched, otherwise nil.
	MatchPlaylist(uri string) (MetaData, bool)
	// GetPlaylist returns a Playlist, it fetches all data, so it might be slow.
	GetPlaylist(meta MetaData) (*Playlist, error)
}

func GetProvider

func GetProvider(name string) (MediaProvider, bool)

type MediaUrl

type MediaUrl struct {
	Url     string
	Quality Quality
	Header  map[string]string
}

func GetMediaUrl added in v0.1.6

func GetMediaUrl(meta MetaData, quality Quality) ([]MediaUrl, error)

func NewMediaUrl

func NewMediaUrl(url string, quality Quality) MediaUrl

type MetaData added in v0.1.5

type MetaData struct {
	Provider   string
	Identifier string
}

func MatchPlaylistByProvider added in v0.1.6

func MatchPlaylistByProvider(provider string, uri string) (MetaData, bool)

func NewMetaData added in v0.1.5

func NewMetaData(provider, identifier string) MetaData

func (MetaData) ID added in v0.1.5

func (m MetaData) ID() string

type Picture

type Picture struct {
	Url  string
	Data []byte
}

func (Picture) Exists

func (p Picture) Exists() bool

type Playlist added in v0.1.5

type Playlist struct {
	Title  string
	Medias []MediaInfo
	Meta   MetaData
}

func GetPlaylist added in v0.1.6

func GetPlaylist(meta MetaData) (*Playlist, error)

func (*Playlist) Copy added in v0.1.6

func (p *Playlist) Copy() Playlist

func (*Playlist) DisplayName added in v0.1.6

func (p *Playlist) DisplayName() string

type QrLoginResult added in v0.1.5

type QrLoginResult struct {
	Success bool
	Message string
}

type QrLoginSession added in v0.1.5

type QrLoginSession struct {
	Url string
	Key string
}

type Quality

type Quality string
const (
	QualityAny  Quality = ""
	QualityUnk  Quality = "unknown"
	Quality128k Quality = "128k"
	Quality192k Quality = "192k"
	Quality256k Quality = "256k"
	Quality320k Quality = "320k"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL