mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-14 05:58:17 +08:00
music id match up
This commit is contained in:
@@ -24,8 +24,8 @@ func Play(media *player.Media) {
|
||||
l().Info("prepare media")
|
||||
err := PrepareMedia(media)
|
||||
if err != nil {
|
||||
l().Warn("prepare media failed. try play next")
|
||||
PlayNext()
|
||||
l().Warn("prepare media failed.")
|
||||
//PlayNext()
|
||||
return
|
||||
}
|
||||
CurrentMedia = media
|
||||
@@ -39,16 +39,19 @@ func Play(media *player.Media) {
|
||||
}
|
||||
|
||||
func Add(keyword string, user interface{}) {
|
||||
medias, err := Search(keyword)
|
||||
if err != nil {
|
||||
l().Warnf("search for %s, got error %s", keyword, err)
|
||||
return
|
||||
media := MediaMatch(keyword)
|
||||
if media == nil {
|
||||
medias, err := Search(keyword)
|
||||
if err != nil {
|
||||
l().Warnf("search for %s, got error %s", keyword, err)
|
||||
return
|
||||
}
|
||||
if len(medias) == 0 {
|
||||
l().Info("search for %s, got no result", keyword)
|
||||
return
|
||||
}
|
||||
media = medias[0]
|
||||
}
|
||||
if len(medias) == 0 {
|
||||
l().Info("search for %s, got no result", keyword)
|
||||
return
|
||||
}
|
||||
media := medias[0]
|
||||
media.User = user
|
||||
l().Infof("add media %s (%s)", media.Title, media.Artist)
|
||||
UserPlaylist.Insert(-1, media)
|
||||
|
||||
@@ -12,23 +12,41 @@ func PrepareMedia(media *player.Media) error {
|
||||
l().Trace("fetching media info")
|
||||
if err = provider.UpdateMedia(media); err != nil {
|
||||
l().Warn("fail to prepare media when fetch info", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if media.Url == "" {
|
||||
l().Trace("fetching media url")
|
||||
if err = provider.UpdateMediaUrl(media); err != nil {
|
||||
l().Warn("fail to prepare media when url", err)
|
||||
return err
|
||||
}
|
||||
|
||||
}
|
||||
if media.Lyric == "" {
|
||||
l().Trace("fetching media lyric")
|
||||
if err = provider.UpdateMediaLyric(media); err != nil {
|
||||
l().Warn("fail to prepare media when lyric", err)
|
||||
}
|
||||
|
||||
}
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
|
||||
func MediaMatch(keyword string) *player.Media {
|
||||
l().Infof("Match media for %s", keyword)
|
||||
for _, p := range config.Provider.Priority {
|
||||
if pr, ok := provider.Providers[p]; ok {
|
||||
m := pr.MatchMedia(keyword)
|
||||
if m == nil {
|
||||
continue
|
||||
}
|
||||
if err := provider.UpdateMedia(m); err == nil {
|
||||
return m
|
||||
}
|
||||
} else {
|
||||
l().Warnf("Provider %s not exist", p)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Search(keyword string) ([]*player.Media, error) {
|
||||
|
||||
Reference in New Issue
Block a user