node build fixed
This commit is contained in:
347
seanime-2.9.10/internal/plugin/other.go
Normal file
347
seanime-2.9.10/internal/plugin/other.go
Normal file
@@ -0,0 +1,347 @@
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"seanime/internal/events"
|
||||
"seanime/internal/extension"
|
||||
"seanime/internal/goja/goja_bindings"
|
||||
"seanime/internal/library/anime"
|
||||
"seanime/internal/onlinestream"
|
||||
goja_util "seanime/internal/util/goja"
|
||||
"strconv"
|
||||
|
||||
"github.com/dop251/goja"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
// BindTorrentstreamToContextObj binds 'torrentstream' to the UI context object
|
||||
func (a *AppContextImpl) BindTorrentstreamToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
}
|
||||
|
||||
// BindOnlinestreamToContextObj binds 'onlinestream' to the UI context object
|
||||
func (a *AppContextImpl) BindOnlinestreamToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
}
|
||||
|
||||
// BindMediastreamToContextObj binds 'mediastream' to the UI context object
|
||||
func (a *AppContextImpl) BindMediastreamToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
}
|
||||
|
||||
// BindTorrentClientToContextObj binds 'torrentClient' to the UI context object
|
||||
func (a *AppContextImpl) BindTorrentClientToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
torrentClientObj := vm.NewObject()
|
||||
_ = torrentClientObj.Set("getTorrents", func() goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
torrents, err := torrentClient.GetList()
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error getting torrents: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(vm.ToValue(torrents))
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("getActiveTorrents", func() goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
activeTorrents, err := torrentClient.GetActiveTorrents()
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error getting active torrents: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(vm.ToValue(activeTorrents))
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("addMagnets", func(magnets []string, dest string) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := torrentClient.AddMagnets(magnets, dest)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error adding magnets: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(goja.Undefined())
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("removeTorrents", func(hashes []string) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := torrentClient.RemoveTorrents(hashes)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error removing torrents: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(goja.Undefined())
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("pauseTorrents", func(hashes []string) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := torrentClient.PauseTorrents(hashes)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error pausing torrents: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(goja.Undefined())
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("resumeTorrents", func(hashes []string) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := torrentClient.ResumeTorrents(hashes)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error resuming torrents: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(goja.Undefined())
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("deselectFiles", func(hash string, indices []int) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := torrentClient.DeselectFiles(hash, indices)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error deselecting files: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(goja.Undefined())
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = torrentClientObj.Set("getFiles", func(hash string) goja.Value {
|
||||
promise, resolve, reject := vm.NewPromise()
|
||||
|
||||
torrentClient, ok := a.torrentClientRepository.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "torrentClient not set")
|
||||
}
|
||||
|
||||
go func() {
|
||||
files, err := torrentClient.GetFiles(hash)
|
||||
scheduler.ScheduleAsync(func() error {
|
||||
if err != nil {
|
||||
reject(goja_bindings.NewErrorString(vm, "error getting files: "+err.Error()))
|
||||
return nil
|
||||
}
|
||||
resolve(vm.ToValue(files))
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
|
||||
return vm.ToValue(promise)
|
||||
})
|
||||
|
||||
_ = obj.Set("torrentClient", torrentClientObj)
|
||||
|
||||
}
|
||||
|
||||
// BindFillerManagerToContextObj binds 'fillerManager' to the UI context object
|
||||
func (a *AppContextImpl) BindFillerManagerToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
fillerManagerObj := vm.NewObject()
|
||||
_ = fillerManagerObj.Set("getFillerEpisodes", func(mediaId int) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
fillerEpisodes, ok := fillerManager.GetFillerEpisodes(mediaId)
|
||||
if !ok {
|
||||
return goja.Undefined()
|
||||
}
|
||||
return vm.ToValue(fillerEpisodes)
|
||||
})
|
||||
|
||||
_ = fillerManagerObj.Set("removeFillerData", func(mediaId int) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
fillerManager.RemoveFillerData(mediaId)
|
||||
return goja.Undefined()
|
||||
})
|
||||
|
||||
_ = fillerManagerObj.Set("setFillerEpisodes", func(mediaId int, fillerEpisodes []string) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
fillerManager.StoreFillerData("plugin", strconv.Itoa(mediaId), mediaId, fillerEpisodes)
|
||||
return goja.Undefined()
|
||||
})
|
||||
|
||||
_ = fillerManagerObj.Set("isEpisodeFiller", func(mediaId int, episodeNumber int) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
return vm.ToValue(fillerManager.IsEpisodeFiller(mediaId, episodeNumber))
|
||||
})
|
||||
|
||||
_ = fillerManagerObj.Set("hydrateFillerData", func(e *anime.Entry) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
fillerManager.HydrateFillerData(e)
|
||||
return goja.Undefined()
|
||||
})
|
||||
|
||||
_ = fillerManagerObj.Set("hydrateOnlinestreamFillerData", func(mId int, episodes []*onlinestream.Episode) goja.Value {
|
||||
fillerManager, ok := a.fillerManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "fillerManager not set")
|
||||
}
|
||||
fillerManager.HydrateOnlinestreamFillerData(mId, episodes)
|
||||
return goja.Undefined()
|
||||
})
|
||||
|
||||
_ = obj.Set("fillerManager", fillerManagerObj)
|
||||
|
||||
}
|
||||
|
||||
// BindAutoDownloaderToContextObj binds 'autoDownloader' to the UI context object
|
||||
func (a *AppContextImpl) BindAutoDownloaderToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
autoDownloaderObj := vm.NewObject()
|
||||
_ = autoDownloaderObj.Set("run", func() goja.Value {
|
||||
autoDownloader, ok := a.autoDownloader.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "autoDownloader not set")
|
||||
}
|
||||
autoDownloader.Run()
|
||||
return goja.Undefined()
|
||||
})
|
||||
_ = obj.Set("autoDownloader", autoDownloaderObj)
|
||||
}
|
||||
|
||||
// BindAutoScannerToContextObj binds 'autoScanner' to the UI context object
|
||||
func (a *AppContextImpl) BindAutoScannerToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
autoScannerObj := vm.NewObject()
|
||||
_ = autoScannerObj.Set("notify", func() goja.Value {
|
||||
autoScanner, ok := a.autoScanner.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "autoScanner not set")
|
||||
}
|
||||
autoScanner.Notify()
|
||||
return goja.Undefined()
|
||||
})
|
||||
_ = obj.Set("autoScanner", autoScannerObj)
|
||||
|
||||
}
|
||||
|
||||
// BindFileCacherToContextObj binds 'fileCacher' to the UI context object
|
||||
func (a *AppContextImpl) BindFileCacherToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
}
|
||||
|
||||
// BindExternalPlayerLinkToContextObj binds 'externalPlayerLink' to the UI context object
|
||||
func (a *AppContextImpl) BindExternalPlayerLinkToContextObj(vm *goja.Runtime, obj *goja.Object, logger *zerolog.Logger, ext *extension.Extension, scheduler *goja_util.Scheduler) {
|
||||
|
||||
externalPlayerLinkObj := vm.NewObject()
|
||||
_ = externalPlayerLinkObj.Set("open", func(url string, mediaId int, episodeNumber int, mediaTitle string) goja.Value {
|
||||
wsEventManager, ok := a.wsEventManager.Get()
|
||||
if !ok {
|
||||
goja_bindings.PanicThrowErrorString(vm, "wsEventManager not set")
|
||||
}
|
||||
// Send the external player link
|
||||
wsEventManager.SendEvent(events.ExternalPlayerOpenURL, struct {
|
||||
Url string `json:"url"`
|
||||
MediaId int `json:"mediaId"`
|
||||
EpisodeNumber int `json:"episodeNumber"`
|
||||
MediaTitle string `json:"mediaTitle"`
|
||||
}{
|
||||
Url: url,
|
||||
MediaId: mediaId,
|
||||
EpisodeNumber: episodeNumber,
|
||||
MediaTitle: mediaTitle,
|
||||
})
|
||||
return goja.Undefined()
|
||||
})
|
||||
_ = obj.Set("externalPlayerLink", externalPlayerLinkObj)
|
||||
}
|
||||
Reference in New Issue
Block a user