player

package
v0.0.0-...-a537e16 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package player provides audio playback management.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IPlayer

type IPlayer interface {
	Play(startAt int, song *Song) error
	Skip() error
	Enqueue(song *Song)
	Dequeue() (*Song, error)
	ClearQueue() error
	Stop() error
	Pause() error
	Unpause(channelID string) error
	Lock()
	Unlock()
	GetCurrentStatus() PlaybackStatus
	SetCurrentStatus(status PlaybackStatus)
	GetSongQueue() []*Song
	SetSongQueue(queue []*Song)
	GetVoiceConnection() *discordgo.VoiceConnection
	SetVoiceConnection(voiceConnection *discordgo.VoiceConnection)
	GetEncodingSession() *dca.EncodeSession
	GetStreamingSession() *dca.StreamingSession
	GetCurrentSong() *Song
	SetCurrentSong(song *Song)
	GetChannelID() string
	SetChannelID(channelID string)
	GetDiscordSession() *discordgo.Session
	SetDiscordSession(session *discordgo.Session)
	GetGuildID() string
	SetGuildID(guildID string)
}

func NewPlayer

func NewPlayer(guildID string, session *discordgo.Session) IPlayer

type PlaybackStatus

type PlaybackStatus int32
const (
	StatusResting PlaybackStatus = iota
	StatusPlaying
	StatusPaused
	StatusError
)

func (PlaybackStatus) String

func (status PlaybackStatus) String() string

func (PlaybackStatus) StringEmoji

func (status PlaybackStatus) StringEmoji() string

type Player

type Player struct {
	sync.Mutex

	SkipInterrupt          chan bool
	StopInterrupt          chan bool
	SwitchChannelInterrupt chan bool
	// contains filtered or unexported fields
}

func (*Player) ClearQueue

func (p *Player) ClearQueue() error

func (*Player) Dequeue

func (p *Player) Dequeue() (*Song, error)

func (*Player) Enqueue

func (p *Player) Enqueue(song *Song)

func (*Player) GetChannelID

func (p *Player) GetChannelID() string

func (*Player) GetCurrentSong

func (p *Player) GetCurrentSong() *Song

func (*Player) GetCurrentStatus

func (p *Player) GetCurrentStatus() PlaybackStatus

func (*Player) GetDiscordSession

func (p *Player) GetDiscordSession() *discordgo.Session

func (*Player) GetEncodingSession

func (p *Player) GetEncodingSession() *dca.EncodeSession

func (*Player) GetGuildID

func (p *Player) GetGuildID() string

func (*Player) GetHistory

func (p *Player) GetHistory() history.IHistory

func (*Player) GetSongQueue

func (p *Player) GetSongQueue() []*Song

func (*Player) GetStreamingSession

func (p *Player) GetStreamingSession() *dca.StreamingSession

func (*Player) GetVoiceConnection

func (p *Player) GetVoiceConnection() *discordgo.VoiceConnection

func (*Player) Lock

func (p *Player) Lock()

func (*Player) Pause

func (p *Player) Pause() error

func (*Player) Play

func (p *Player) Play(startAt int, song *Song) error

func (*Player) SetChannelID

func (p *Player) SetChannelID(channelID string)

func (*Player) SetCurrentSong

func (p *Player) SetCurrentSong(song *Song)

func (*Player) SetCurrentStatus

func (p *Player) SetCurrentStatus(status PlaybackStatus)

func (*Player) SetDiscordSession

func (p *Player) SetDiscordSession(session *discordgo.Session)

func (*Player) SetEncodingSession

func (p *Player) SetEncodingSession(encoding *dca.EncodeSession)

func (*Player) SetGuildID

func (p *Player) SetGuildID(guildID string)

func (*Player) SetSongQueue

func (p *Player) SetSongQueue(queue []*Song)

func (*Player) SetStreamingSession

func (p *Player) SetStreamingSession(stream *dca.StreamingSession)

func (*Player) SetVoiceConnection

func (p *Player) SetVoiceConnection(vc *discordgo.VoiceConnection)

func (*Player) Skip

func (p *Player) Skip() error

func (*Player) Stop

func (p *Player) Stop() error

func (*Player) Unlock

func (p *Player) Unlock()

func (*Player) Unpause

func (p *Player) Unpause(channelID string) error

type Song

type Song struct {
	Title     string        // Title of the song
	URL       string        // URL provided by the user
	Filepath  string        // Path/URL for downloading the song
	Thumbnail Thumbnail     // Thumbnail image for the song
	Duration  time.Duration // Duration of the song
	SongID    string        // Unique ID for the song
	Source    SongSource    // Source type of the song
}

type SongSource

type SongSource int32
const (
	SourceYouTube SongSource = iota
	SourceStream
	SourceLocalFile
)

func (SongSource) String

func (source SongSource) String() string

type Thumbnail

type Thumbnail struct {
	URL    string
	Width  uint
	Height uint
}

Jump to

Keyboard shortcuts

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