Skip to content

Commit 4cd81cb

Browse files
authored
更新QQ音乐点歌API,修复猜歌panic (#444)
1 parent dc34a33 commit 4cd81cb

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,9 @@ print("run[CQ:image,file="+j["img"]+"]")
683683

684684
- [x] 猜歌[开启/关闭][歌单/歌词]自动下载
685685

686-
- [x] 添加歌单 [网易云歌单链接/ID] [歌单名称]
686+
- 现只有歌词指令有效
687+
688+
- [ ] 添加歌单 [网易云歌单链接/ID] [歌单名称]
687689

688690
- [x] 下载歌曲 [歌曲名称/网易云歌曲ID] [歌单名称]
689691

plugin/guessmusic/main.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/FloatTech/zbputils/control"
1818
"github.com/FloatTech/zbputils/ctxext"
1919
"github.com/pkg/errors"
20+
"github.com/sirupsen/logrus"
2021
zero "github.com/wdvxdr1123/ZeroBot"
2122
"github.com/wdvxdr1123/ZeroBot/extension/single"
2223
"github.com/wdvxdr1123/ZeroBot/message"
@@ -45,12 +46,10 @@ func init() { // 插件主体
4546
DisableOnDefault: false,
4647
Help: "猜歌插件(该插件依赖ffmpeg)\n" +
4748
"由于不可抗因素无法获取网易云歌单内容,\n插件改为本地猜歌了,但保留了下歌功能\n" +
48-
"当前的API是独角兽的网易云API,只能从歌单随机抽取歌曲信息\n(也不知道这个API能活到什么时候x)\n" +
49-
"修改了猜歌逻辑:\n可为本地目录添加网易云歌单,\n猜歌时会优先从API歌单中随机抽取歌曲并下载\n" +
5049
"------bot主人指令------\n" +
5150
"- 设置猜歌歌库路径 [绝对路径]\n" +
52-
"- 猜歌[开启/关闭][歌单/歌词]自动下载\n" +
53-
"- 添加歌单 [网易云歌单链接/ID] [歌单名称]\n" +
51+
"-(指令仅歌词有效) 猜歌[开启/关闭][歌单/歌词]自动下载\n" +
52+
"-(指令已失效) 添加歌单 [网易云歌单链接/ID] [歌单名称]\n" +
5453
"- 下载歌曲 [歌曲名称/网易云歌曲ID] [歌单名称]\n" +
5554
"- 删除歌单 [网易云歌单ID/歌单名称]\n" +
5655
"注:\n删除网易云歌单ID仅只是解除绑定\n删除歌单名称是将本地数据全部删除,慎用\n" +
@@ -113,7 +112,7 @@ func init() { // 插件主体
113112
}
114113
filelist, err = getlist(cfg.MusicPath)
115114
if err != nil {
116-
panic(serviceErr + "ERROR:" + err.Error())
115+
logrus.Errorln(serviceErr + "ERROR:" + err.Error())
117116
}
118117
// 用户配置
119118
engine.OnRegex(`^设置猜歌(歌库路径|默认歌单)\s*(.*)$`).SetBlock(true).

plugin/music/selecter.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,13 @@ func cloud163(keyword string) (msg message.MessageSegment) {
150150

151151
// qqmusic 返回QQ音乐卡片
152152
func qqmusic(keyword string) (msg message.MessageSegment) {
153-
requestURL := "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?w=" + url.QueryEscape(keyword)
153+
requestURL := "https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?platform=yqq.json&key=" + url.QueryEscape(keyword)
154154
data, err := web.RequestDataWith(web.NewDefaultClient(), requestURL, "GET", "", web.RandUA())
155155
if err != nil {
156156
msg = message.Text("ERROR: ", err)
157157
return
158158
}
159-
info := gjson.ParseBytes(data[9 : len(data)-1]).Get("data.song.list.0")
160-
msg = message.Music("qq", info.Get("songid").Int())
159+
msg = message.Music("qq", gjson.ParseBytes(data).Get("data.song.itemlist.0.id").Int())
161160
return
162161
}
163162

0 commit comments

Comments
 (0)