mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2026-03-15 05:53:17 +08:00
more stuff
This commit is contained in:
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,7 +1,9 @@
|
||||
.idea
|
||||
assets/webinfo/*.html
|
||||
assets/webinfo/assets
|
||||
resource/bundle.go
|
||||
music
|
||||
liverooms.json
|
||||
playlists.json
|
||||
textinfo
|
||||
textinfo
|
||||
CMakeCache.txt
|
||||
/config/
|
||||
/release/
|
||||
86
Makefile
86
Makefile
@@ -1,30 +1,22 @@
|
||||
NAME = AynaLivePlayer
|
||||
EXECUTABLE=AynaLivePlayer
|
||||
WINDOWS=$(EXECUTABLE).exe
|
||||
LINUX=$(EXECUTABLE)_linux
|
||||
DARWIN=$(EXECUTABLE)_darwin
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /Q /F
|
||||
RRM = rmdir /Q /S
|
||||
MKDIR = mkdir
|
||||
COPY = XCOPY /Y
|
||||
MOVE = move
|
||||
else
|
||||
RM = rm -f
|
||||
RRM = rm -rf
|
||||
MKDIR = mkdir
|
||||
COPY = cp -r
|
||||
MOVE = mv
|
||||
endif
|
||||
|
||||
ifeq ($(OS), Windows_NT)
|
||||
EXECUTABLE=$(NAME).exe
|
||||
SCRIPTPATH = .\assets\scripts\windows
|
||||
else
|
||||
EXECUTABLE=$(NAME)
|
||||
SCRIPTPATH = ./assets/scripts/linux
|
||||
endif
|
||||
|
||||
gui: bundle
|
||||
go build -o $(EXECUTABLE) -ldflags -H=windowsgui main.go
|
||||
|
||||
run: bundle
|
||||
go run main.go
|
||||
|
||||
clear:
|
||||
$(RM) config.ini log.txt playlists.txt liverooms.json
|
||||
|
||||
bundle:
|
||||
fyne bundle --name resImageIcon --package resource ./assets/icon.png > ./resource/bundle.go
|
||||
# fyne bundle --append --name resFontMSYaHei --package resource ./assets/msyh.ttc >> ./resource/bundle.go
|
||||
@@ -32,33 +24,35 @@ bundle:
|
||||
fyne bundle --append --name resFontMSYaHei --package resource ./assets/msyh0.ttf >> ./resource/bundle.go
|
||||
fyne bundle --append --name resFontMSYaHeiBold --package resource ./assets/msyhbd0.ttf >> ./resource/bundle.go
|
||||
|
||||
release: gui
|
||||
-mkdir release
|
||||
ifeq ($(OS), Windows_NT)
|
||||
COPY .\$(EXECUTABLE) .\release\$(EXECUTABLE)
|
||||
COPY .\webtemplates.json .\release\webtemplates.json
|
||||
mkdir .\release\assets
|
||||
COPY .\assets\mpv-2.dll .\release\mpv-2.dll
|
||||
COPY .\assets\translation.json .\release\assets\translation.json
|
||||
COPY LICENSE.md .\release\LICENSE.md
|
||||
XCOPY .\assets\scripts\windows\* .\release\ /k /i /y /q
|
||||
XCOPY .\assets\webinfo .\release\assets\webinfo /s /e /i /y /q
|
||||
XCOPY .\music .\release\music /s /e /i /y /q
|
||||
XCOPY .\template .\release\template /s /e /i /y /q
|
||||
else
|
||||
cp ./$(EXECUTABLE) ./release/$(EXECUTABLE)
|
||||
cp ./webtemplates.json ./release/webtemplates.json
|
||||
cp ./assets/translation.json ./release/assets/translation.json
|
||||
mkdir ./release/assets
|
||||
cp LICENSE.md ./release/LICENSE.md
|
||||
cp ./assets/scripts/linux/* ./release/
|
||||
cp -r ./assets/webinfo ./release/assest/webinfo
|
||||
cp -r ./music ./release/music
|
||||
cp -r ./template ./release/template
|
||||
endif
|
||||
prebuild: bundle
|
||||
$(RRM) ./release
|
||||
$(RRM) ./release/assets
|
||||
$(MKDIR) ./release
|
||||
$(MKDIR) ./release/assets
|
||||
$(COPY) LICENSE.md ./release/LICENSE.md
|
||||
$(COPY) ./assets/translation.json ./release/assets/translation.json
|
||||
$(COPY) ./assets/config ./release/config
|
||||
$(COPY) ./music ./release/music
|
||||
|
||||
|
||||
$(LINUX): prebuild
|
||||
env GOOS=linux GOARCH=amd64 go build -o ./release/$(LINUX) app/main.go
|
||||
$(MOVE) ./release/$(LINUX) ./release/$(EXECUTABLE)
|
||||
|
||||
$(WINDOWS): prebuild
|
||||
env GOOS=windows GOARCH=amd64 go build -o ./release/$(WINDOWS) -ldflags -H=windowsgui app/main.go
|
||||
|
||||
$(DARWIN): prebuild
|
||||
env GOOS=darwin GOARCH=amd64 go build -o ./release/$(DARWIN) app/main.go
|
||||
$(MOVE) ./release/$(LINUX) ./release/$(EXECUTABLE)
|
||||
|
||||
|
||||
windows: $(WINDOWS) ## Build for Windows
|
||||
$(COPY) ./assets/windows/mpv-2.dll ./release/mpv-2.dll
|
||||
|
||||
linux: $(LINUX) ## Build for Linux
|
||||
|
||||
darwin: $(DARWIN) ## Build for Darwin (macOS)
|
||||
|
||||
clean:
|
||||
$(RM) $(EXECUTABLE) config.ini log.txt playlists.txt liverooms.json
|
||||
$(RRM) release
|
||||
|
||||
.PHONY: ${EXECUTABLE}
|
||||
$(RRM) ./release
|
||||
12
assets/config/liverooms.json
Normal file
12
assets/config/liverooms.json
Normal file
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"live_room": {
|
||||
"provider": "biliweb",
|
||||
"room": "3819533"
|
||||
},
|
||||
"config": {
|
||||
"auto_connect": false
|
||||
},
|
||||
"title": "web 3819533"
|
||||
}
|
||||
]
|
||||
2230
assets/config/playlists.json
Normal file
2230
assets/config/playlists.json
Normal file
File diff suppressed because one or more lines are too long
0
assets/deps/linux/.gitkeep
Normal file
0
assets/deps/linux/.gitkeep
Normal file
0
assets/deps/windows/.gitkeep
Normal file
0
assets/deps/windows/.gitkeep
Normal file
0
assets/scripts/linux/.gitkeep
Normal file
0
assets/scripts/linux/.gitkeep
Normal file
@@ -40,14 +40,6 @@
|
||||
"en": "User Playlist",
|
||||
"zh-CN": "用户歌单"
|
||||
},
|
||||
"gui.config.basic.skip_playlist": {
|
||||
"en": "Skip Media From System Playlist",
|
||||
"zh-CN": "跳过闲置歌单"
|
||||
},
|
||||
"gui.config.basic.skip_playlist.prompt": {
|
||||
"en": "Skip",
|
||||
"zh-CN": "跳过"
|
||||
},
|
||||
"gui.config.basic.skip_when_error": {
|
||||
"en": "Skip this Media On Error",
|
||||
"zh-CN": "跳过获取失败的歌曲"
|
||||
@@ -332,6 +324,14 @@
|
||||
"en": "Max Queue",
|
||||
"zh-CN": "最大点歌数"
|
||||
},
|
||||
"plugin.diange.skip_playlist": {
|
||||
"en": "Skip Media From System Playlist",
|
||||
"zh-CN": "跳过闲置歌单"
|
||||
},
|
||||
"plugin.diange.skip_playlist.prompt": {
|
||||
"en": "Skip",
|
||||
"zh-CN": "跳过"
|
||||
},
|
||||
"plugin.diange.source.command": {
|
||||
"en": "command",
|
||||
"zh-CN": "命令"
|
||||
|
||||
3
go.mod
3
go.mod
@@ -32,8 +32,10 @@ require (
|
||||
|
||||
require (
|
||||
fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e // indirect
|
||||
github.com/AynaLivePlayer/blivedm-go v0.0.0-20240408074929-6565ab41764b // indirect
|
||||
github.com/PuerkitoBio/goquery v1.7.1 // indirect
|
||||
github.com/XiaoMengXinX/Music163Api-Go v0.1.30 // indirect
|
||||
github.com/andybalholm/brotli v1.0.5 // indirect
|
||||
github.com/andybalholm/cascadia v1.2.0 // indirect
|
||||
github.com/aynakeya/deepcolor v1.0.2 // indirect
|
||||
github.com/aynakeya/open-bilibili-live v0.0.5 // indirect
|
||||
@@ -67,6 +69,7 @@ require (
|
||||
golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
|
||||
golang.org/x/net v0.17.0 // indirect
|
||||
golang.org/x/text v0.13.0 // indirect
|
||||
google.golang.org/protobuf v1.31.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
|
||||
)
|
||||
|
||||
@@ -105,13 +105,6 @@ func (b *bascicConfig) CreatePanel() fyne.CanvasObject {
|
||||
outputDevice := container.NewBorder(nil, nil,
|
||||
widget.NewLabel(i18n.T("gui.config.basic.audio_device")), nil,
|
||||
deviceSel)
|
||||
skipPlaylistCheck := widget.NewCheck(i18n.T("gui.config.basic.skip_playlist"), func(b bool) {
|
||||
|
||||
})
|
||||
skipPlaylist := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("gui.config.basic.skip_playlist")),
|
||||
skipPlaylistCheck,
|
||||
)
|
||||
//skipWhenErr := container.NewHBox(
|
||||
// widget.NewLabel(i18n.T("gui.config.basic.skip_when_error")),
|
||||
// component.NewCheckOneWayBinding(
|
||||
@@ -141,6 +134,6 @@ func (b *bascicConfig) CreatePanel() fyne.CanvasObject {
|
||||
// }
|
||||
//})
|
||||
//b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist, skipWhenErr, checkUpdateBox, checkUpdateBtn)
|
||||
b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist)
|
||||
b.panel = container.NewVBox(randomPlaylist, outputDevice)
|
||||
return b.panel
|
||||
}
|
||||
|
||||
@@ -25,6 +25,6 @@ func (c *_cfg) OnSave() {
|
||||
|
||||
var cfg = &_cfg{
|
||||
ApiServer: "http://localhost:9090",
|
||||
LiveRoomPath: "liveroom.json",
|
||||
LiveRoomPath: "./config/liverooms.json",
|
||||
liveRooms: make([]model.LiveRoom, 0),
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"errors"
|
||||
liveroomsdk "github.com/AynaLivePlayer/liveroom-sdk"
|
||||
"github.com/AynaLivePlayer/liveroom-sdk/provider/openblive"
|
||||
"github.com/AynaLivePlayer/liveroom-sdk/provider/webdm"
|
||||
)
|
||||
|
||||
type liveroom struct {
|
||||
@@ -26,7 +27,7 @@ func Initialize() {
|
||||
|
||||
liveroomsdk.RegisterProvider(openblive.NewOpenBLiveClientProvider(cfg.ApiServer, 1661006726438))
|
||||
// ignore web danmu client
|
||||
//liveroomsdk.RegisterProvider(webdm.NewWebDanmuClientProvider(cfg.ApiServer))
|
||||
liveroomsdk.RegisterProvider(webdm.NewWebDanmuClientProvider(cfg.ApiServer))
|
||||
|
||||
liveRooms = make(map[string]*liveroom, 0)
|
||||
|
||||
|
||||
@@ -42,8 +42,8 @@ func (p *playlistConfig) OnSave() {
|
||||
|
||||
var cfg = &playlistConfig{
|
||||
PlayerPlaylistMode: model.PlaylistModeNormal,
|
||||
SystemPlaylistMode: model.PlaylistModeNormal,
|
||||
PlaylistsPath: "playlists.json",
|
||||
SystemPlaylistMode: model.PlaylistModeRandom,
|
||||
PlaylistsPath: "./config/playlists.json",
|
||||
playlists: make([]miaosic.Playlist, 0),
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Submodule pkg/miaosic updated: 131d71e2e3...7a863afe64
@@ -37,8 +37,10 @@ type Diange struct {
|
||||
UserCoolDown int
|
||||
CustomCMD string
|
||||
SourceConfigPath string
|
||||
SkipSystemPlaylist bool
|
||||
|
||||
currentQueueLength int
|
||||
isCurrentSystem bool
|
||||
sourceConfigs map[string]*sourceConfig
|
||||
cooldowns map[string]int
|
||||
panel fyne.CanvasObject
|
||||
@@ -53,7 +55,7 @@ func NewDiange() *Diange {
|
||||
QueueMax: 128,
|
||||
UserCoolDown: -1,
|
||||
CustomCMD: "点歌",
|
||||
SourceConfigPath: "diange.json",
|
||||
SourceConfigPath: "./config/diange.json",
|
||||
|
||||
currentQueueLength: 0,
|
||||
sourceConfigs: map[string]*sourceConfig{
|
||||
@@ -108,6 +110,17 @@ func (d *Diange) Enable() error {
|
||||
func(event *event.Event) {
|
||||
d.currentQueueLength = len(event.Data.(events.PlaylistDetailUpdateEvent).Medias)
|
||||
})
|
||||
global.EventManager.RegisterA(
|
||||
events.PlayerPlayingUpdate,
|
||||
"plugin.diange.check_playing",
|
||||
func(event *event.Event) {
|
||||
data := event.Data.(events.PlayerPlayingUpdateEvent)
|
||||
if data.Removed {
|
||||
d.isCurrentSystem = true
|
||||
return
|
||||
}
|
||||
d.isCurrentSystem = (!data.Media.IsLiveRoomUser()) && (data.Media.ToUser().Name == model.SystemUser.Name)
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -178,11 +191,23 @@ func (d *Diange) handleMessage(event *event.Event) {
|
||||
}
|
||||
d.cooldowns[message.User.Uid] = ct
|
||||
keywords := strings.Join(msgs[1:], " ")
|
||||
|
||||
for _, source := range sources {
|
||||
medias, err := miaosic.SearchByProvider(source, keywords, 1, 10)
|
||||
if len(medias) == 0 || err != nil {
|
||||
continue
|
||||
}
|
||||
if d.SkipSystemPlaylist && d.isCurrentSystem {
|
||||
global.EventManager.CallA(
|
||||
events.PlayerPlayCmd,
|
||||
events.PlayerPlayCmdEvent{
|
||||
Media: model.Media{
|
||||
Info: medias[0],
|
||||
User: message.User,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
global.EventManager.CallA(
|
||||
events.PlaylistInsertCmd(model.PlaylistIDPlayer),
|
||||
events.PlaylistInsertCmdEvent{
|
||||
@@ -192,7 +217,7 @@ func (d *Diange) handleMessage(event *event.Event) {
|
||||
User: message.User,
|
||||
},
|
||||
})
|
||||
break
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,6 +265,11 @@ func (d *Diange) CreatePanel() fyne.CanvasObject {
|
||||
widget.NewLabel(i18n.T("plugin.diange.custom_cmd")), nil,
|
||||
widget.NewEntryWithData(binding.BindString(&d.CustomCMD)),
|
||||
)
|
||||
skipPlaylistCheck := widget.NewCheckWithData(i18n.T("plugin.diange.skip_playlist.prompt"), binding.BindBool(&d.SkipSystemPlaylist))
|
||||
skipPlaylist := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("plugin.diange.skip_playlist")),
|
||||
skipPlaylistCheck,
|
||||
)
|
||||
sourceCfgs := []fyne.CanvasObject{}
|
||||
for source, cfg := range d.sourceConfigs {
|
||||
sourceCfgs = append(
|
||||
@@ -256,6 +286,6 @@ func (d *Diange) CreatePanel() fyne.CanvasObject {
|
||||
dgSourceCMD := container.NewBorder(
|
||||
nil, nil, widget.NewLabel(i18n.T("plugin.diange.source_cmd")), nil,
|
||||
container.NewVBox(sourceCfgs...))
|
||||
d.panel = container.NewVBox(dgPerm, dgMdPerm, dgQueue, dgCoolDown, dgShortCut, dgSourceCMD)
|
||||
d.panel = container.NewVBox(dgPerm, dgMdPerm, dgQueue, dgCoolDown, dgShortCut, skipPlaylist, dgSourceCMD)
|
||||
return d.panel
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ func (d *Qiege) Disable() error {
|
||||
func (d *Qiege) handleMessage(event *event.Event) {
|
||||
message := event.Data.(events.LiveRoomMessageReceiveEvent).Message
|
||||
msgs := strings.Split(message.Message, " ")
|
||||
if len(msgs) < 1 || len(msgs[0]) == 0 {
|
||||
if len(msgs) < 1 || msgs[0] != d.CustomCMD {
|
||||
return
|
||||
}
|
||||
if d.UserPermission {
|
||||
|
||||
Reference in New Issue
Block a user