From 802961576cdde861a80d8ba3e68905571f13e8d1 Mon Sep 17 00:00:00 2001 From: aynakeya Date: Mon, 22 Apr 2024 13:49:17 -0700 Subject: [PATCH] fix id diange not working --- pkg/miaosic | 2 +- plugin/diange/diange.go | 52 +++++++++++++++++++++++++++++------------ 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/pkg/miaosic b/pkg/miaosic index a743c5f..95343bb 160000 --- a/pkg/miaosic +++ b/pkg/miaosic @@ -1 +1 @@ -Subproject commit a743c5f97cd812b772e1d768c77998c78fbee966 +Subproject commit 95343bb3f99fe7db03509ae4284a4e7bca7fe995 diff --git a/plugin/diange/diange.go b/plugin/diange/diange.go index 01bf7eb..d99d3ae 100644 --- a/plugin/diange/diange.go +++ b/plugin/diange/diange.go @@ -213,28 +213,49 @@ func (d *Diange) handleMessage(event *event.Event) { d.cooldowns[message.User.Uid] = ct - for _, source := range sources { - medias, err := miaosic.SearchByProvider(source, keywords, 1, 10) - if len(medias) == 0 || err != nil { - continue - } - // double check blacklist - for _, item := range d.blacklist { - if item.Exact && item.Value == medias[0].Title { - d.log.Warnf("User %s(%s) diange %s is in blacklist %s, ignore", message.User.Username, message.User.Uid, keywords, item.Value) - return + // match media first + + mediaMeta, found := miaosic.MatchMedia(keywords) + + var media miaosic.MediaInfo + + if !found { + for _, source := range sources { + medias, err := miaosic.SearchByProvider(source, keywords, 1, 10) + if len(medias) == 0 || err != nil { + continue } - if !item.Exact && strings.Contains(medias[0].Title, item.Value) { - d.log.Warnf("User %s(%s) diange %s is in blacklist %s, ignore", message.User.Username, message.User.Uid, keywords, item.Value) - return + // double check blacklist + for _, item := range d.blacklist { + if item.Exact && item.Value == medias[0].Title { + d.log.Warnf("User %s(%s) diange %s is in blacklist %s, ignore", message.User.Username, message.User.Uid, keywords, item.Value) + return + } + if !item.Exact && strings.Contains(medias[0].Title, item.Value) { + d.log.Warnf("User %s(%s) diange %s is in blacklist %s, ignore", message.User.Username, message.User.Uid, keywords, item.Value) + return + } } + media = medias[0] + found = true + break } + } else { + m, err := miaosic.GetMediaInfo(mediaMeta) + if err != nil { + d.log.Error("Get media info failed: ", err) + found = false + } + media = m + } + + if found { if d.SkipSystemPlaylist && d.isCurrentSystem { global.EventManager.CallA( events.PlayerPlayCmd, events.PlayerPlayCmdEvent{ Media: model.Media{ - Info: medias[0], + Info: media, User: message.User, }, }) @@ -245,12 +266,13 @@ func (d *Diange) handleMessage(event *event.Event) { events.PlaylistInsertCmdEvent{ Position: -1, Media: model.Media{ - Info: medias[0], + Info: media, User: message.User, }, }) return } + } func (d *Diange) Title() string {