重写controller部分,修改search界面,添加歌词滚动效果,部分资源添加到bundle,修复拖动进度条时产生的噪音

This commit is contained in:
Aynakeya
2022-12-24 03:51:21 -08:00
parent c47d338a9e
commit 9ec4057412
52 changed files with 777 additions and 376 deletions

View File

@@ -37,14 +37,14 @@ func (l *LyricLoader) Reload(lyric string) {
}
func (l *LyricLoader) Update(time float64) {
lrc := l.Lyric.Find(time)
lrc := l.Lyric.FindContext(time, 1, 3)
if lrc == nil {
return
}
if l.prev == lrc.Time {
if l.prev == lrc.Now.Time {
return
}
l.prev = lrc.Time
l.prev = lrc.Now.Time
l.Handler.CallA(
model.EventLyricUpdate,
model.LyricUpdateEvent{

View File

@@ -6,7 +6,7 @@ import (
"AynaLivePlayer/controller"
"AynaLivePlayer/model"
"AynaLivePlayer/player"
"AynaLivePlayer/provider"
"AynaLivePlayer/repo/provider"
)
type PlayController struct {

View File

@@ -5,7 +5,7 @@ import (
"AynaLivePlayer/config"
"AynaLivePlayer/controller"
"AynaLivePlayer/model"
"AynaLivePlayer/provider"
"AynaLivePlayer/repo/provider"
"errors"
"fmt"
"math/rand"
@@ -27,7 +27,7 @@ type PlaylistController struct {
func NewPlaylistController(
provider controller.IProviderController) controller.IPlaylistController {
pc := &PlaylistController{
PlaylistPath: "playlist.json",
PlaylistPath: "playlists.json",
provider: provider,
History: NewPlaylist("history"),
Default: NewPlaylist("default"),

View File

@@ -4,7 +4,7 @@ import (
"AynaLivePlayer/config"
"AynaLivePlayer/controller"
"AynaLivePlayer/model"
"AynaLivePlayer/provider"
provider2 "AynaLivePlayer/repo/provider"
)
type ProviderController struct {
@@ -23,7 +23,7 @@ func NewProviderController() controller.IProviderController {
LocalDir: "./music",
}
config.LoadConfig(p)
provider.NewLocal(p.LocalDir)
provider2.NewLocal(p.LocalDir)
return p
}
@@ -35,21 +35,21 @@ func (pc *ProviderController) PrepareMedia(media *model.Media) error {
var err error
if media.Title == "" || !media.Cover.Exists() {
lg.Trace("fetching media info")
if err = provider.UpdateMedia(media); err != nil {
if err = provider2.UpdateMedia(media); err != nil {
lg.Warn("fail to prepare media when fetch info", err)
return err
}
}
if media.Url == "" {
lg.Trace("fetching media url")
if err = provider.UpdateMediaUrl(media); err != nil {
if err = provider2.UpdateMediaUrl(media); err != nil {
lg.Warn("fail to prepare media when url", err)
return err
}
}
if media.Lyric == "" {
lg.Trace("fetching media lyric")
if err = provider.UpdateMediaLyric(media); err != nil {
if err = provider2.UpdateMediaLyric(media); err != nil {
lg.Warn("fail to prepare media when lyric", err)
}
}
@@ -59,12 +59,12 @@ func (pc *ProviderController) PrepareMedia(media *model.Media) error {
func (pc *ProviderController) MediaMatch(keyword string) *model.Media {
lg.Infof("Match media for %s", keyword)
for _, p := range pc.Priority {
if pr, ok := provider.Providers[p]; ok {
if pr, ok := provider2.Providers[p]; ok {
m := pr.MatchMedia(keyword)
if m == nil {
continue
}
if err := provider.UpdateMedia(m); err == nil {
if err := provider2.UpdateMedia(m); err == nil {
return m
}
} else {
@@ -77,7 +77,7 @@ func (pc *ProviderController) MediaMatch(keyword string) *model.Media {
func (pc *ProviderController) Search(keyword string) ([]*model.Media, error) {
lg.Infof("Search for %s", keyword)
for _, p := range pc.Priority {
if pr, ok := provider.Providers[p]; ok {
if pr, ok := provider2.Providers[p]; ok {
r, err := pr.Search(keyword)
if err != nil {
lg.Warn("Provider %s return err", err)
@@ -88,22 +88,22 @@ func (pc *ProviderController) Search(keyword string) ([]*model.Media, error) {
lg.Warnf("Provider %s not exist", p)
}
}
return nil, provider.ErrorNoSuchProvider
return nil, provider2.ErrorNoSuchProvider
}
func (pc *ProviderController) SearchWithProvider(keyword string, p string) ([]*model.Media, error) {
lg.Infof("Search for %s using %s", keyword, p)
if pr, ok := provider.Providers[p]; ok {
if pr, ok := provider2.Providers[p]; ok {
r, err := pr.Search(keyword)
return r, err
}
lg.Warnf("Provider %s not exist", p)
return nil, provider.ErrorNoSuchProvider
return nil, provider2.ErrorNoSuchProvider
}
func (pc *ProviderController) PreparePlaylist(playlist controller.IPlaylist) error {
lg.Debug("Prepare playlist ", playlist.Name())
medias, err := provider.GetPlaylist(&playlist.Model().Meta)
medias, err := provider2.GetPlaylist(&playlist.Model().Meta)
if err != nil {
lg.Warn("prepare playlist failed ", err)
return err