add skip on fail

This commit is contained in:
aynakeya
2024-04-24 01:27:57 -07:00
parent ee775dee8d
commit 58d7ebd43d
7 changed files with 53 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import (
"AynaLivePlayer/core/model"
"AynaLivePlayer/global"
"AynaLivePlayer/internal/playlist"
"AynaLivePlayer/pkg/config"
"AynaLivePlayer/pkg/event"
)
@@ -36,7 +37,17 @@ func handlePlayNext() {
global.EventManager.RegisterA(
events.PlaylistInsertUpdate(model.PlaylistIDPlayer),
"internal.controller.playcontrol.playnext_when_insert",
"internal.controller.playcontrol.playnext_when_insert.player",
func(event *event.Event) {
if isIdle {
global.EventManager.CallA(events.PlayerPlayNextCmd,
events.PlayerPlayNextCmdEvent{})
}
})
global.EventManager.RegisterA(
events.PlaylistInsertUpdate(model.PlaylistIDSystem),
"internal.controller.playcontrol.playnext_when_insert.system",
func(event *event.Event) {
if isIdle {
global.EventManager.CallA(events.PlayerPlayNextCmd,
@@ -49,17 +60,27 @@ func handlePlayNext() {
"internal.controller.playcontrol.playnext",
func(event *event.Event) {
if playlist.PlayerPlaylist.Size() > 0 {
log.Infof("Try to play next media in player playlist")
global.EventManager.CallA(events.PlaylistNextCmd(model.PlaylistIDPlayer),
events.PlaylistNextCmdEvent{
Remove: true,
})
} else {
log.Infof("Try to play next media in system playlist")
global.EventManager.CallA(events.PlaylistNextCmd(model.PlaylistIDSystem),
events.PlaylistNextCmdEvent{
Remove: true,
Remove: false,
})
}
})
global.EventManager.RegisterA(
events.PlayerPlayErrorUpdate,
"internal.controller.playcontrol.playnext_on_error",
func(event *event.Event) {
if isIdle && config.General.PlayNextOnFail {
global.EventManager.CallA(events.PlayerPlayNextCmd, events.PlayerPlayNextCmdEvent{})
}
})
global.EventManager.RegisterA(events.PlaylistNextUpdate(model.PlaylistIDPlayer),

View File

@@ -160,6 +160,11 @@ func registerCmdHandler() {
mediaUrls, err := miaosic.GetMediaUrl(mediaInfo.Meta, miaosic.QualityAny)
if err != nil || len(mediaUrls) == 0 {
log.Warn("[MPV PlayControl] get media url failed", err)
global.EventManager.CallA(
events.PlayerPlayErrorUpdate,
events.PlayerPlayErrorUpdateEvent{
Error: err,
})
return
}
mediaUrl := mediaUrls[0]
@@ -191,6 +196,11 @@ func registerCmdHandler() {
log.Debugf("mpv command load file %s %s", mediaInfo.Title, mediaUrl.Url)
if err := libmpv.Command([]string{"loadfile", mediaUrl.Url}); err != nil {
log.Warn("[MPV PlayControl] mpv load media failed", mediaInfo)
global.EventManager.CallA(
events.PlayerPlayErrorUpdate,
events.PlayerPlayErrorUpdateEvent{
Error: err,
})
return
}
})

View File

@@ -37,6 +37,7 @@ func newPlaylist(id model.PlaylistID) *playlist {
pl.Delete(e.Index)
})
global.EventManager.RegisterA(events.PlaylistNextCmd(id), "internal.playlist.next", func(event *event.Event) {
log.Infof("Playlist %s recieve next", id)
pl.Next(event.Data.(events.PlaylistNextCmdEvent).Remove)
})
global.EventManager.RegisterA(events.PlaylistModeChangeCmd(id), "internal.playlist.mode", func(event *event.Event) {