more stuff

This commit is contained in:
aynakeya
2024-04-15 16:07:31 -07:00
parent fbf8c7f149
commit 6ddcb507f5
17 changed files with 2339 additions and 74 deletions

8
.gitignore vendored
View File

@@ -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/

View File

@@ -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

View 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

File diff suppressed because one or more lines are too long

View File

View File

View File

View 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
View File

@@ -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
)

View File

@@ -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
}

View File

@@ -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),
}

View File

@@ -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)

View File

@@ -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),
}

View File

@@ -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
}

View File

@@ -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 {