猜歌插件更改为本地猜歌 (#439)

This commit is contained in:
方柳煜 2022-10-11 00:06:50 +08:00 committed by GitHub
parent aef678be5c
commit 467dd2ea65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 524 additions and 830 deletions

View File

@ -677,31 +677,33 @@ print("run[CQ:image,file="+j["img"]+"]")
- 猜歌插件该插件依赖ffmpeg - 猜歌插件该插件依赖ffmpeg
- [x] 设置猜歌缓存歌库路径 [绝对路径] - 因为API不可抗因素更改为了本地猜歌但仍支持歌曲下载VIP歌曲无法下载黑胶可以
- [x] 设置猜歌[本地/Api] [true/false] - [x] 设置猜歌歌库路径 [绝对路径]
- [x] 登录网易云 - [x] 猜歌[开启/关闭][歌单/歌词]自动下载
- 不登陆也能用API有几率返回400 - [x] 添加歌单 [网易云歌单链接/ID] [歌单名称]
- [x] 添加歌单 [网易云歌单ID] [歌单名称] - [x] 下载歌曲 [歌曲名称/网易云歌曲ID] [歌单名称]
- 注:[歌单名称]可为空,默认原标题 - [x] 删除歌单 [网易云歌单ID/歌单名称]
- [x] 删除歌单 [网易云歌单ID/API歌单名称] - 删除网易云歌单ID仅只是解除绑定删除歌单名称是将本地数据全部删除
- [x] 获取歌单列表 - [x] 设置猜歌默认歌单 [歌单名称]
- [x] [网易云歌单ID/API歌单名称]歌单信息 - [x] 歌单列表
- [x] [个人/团队]猜歌 - [x] [个人/团队]猜歌
- 注:默认歌库为网易云ACG动画榜 - 注:默认歌库为歌单列表第一个,如果设置了默认歌单变为指定的歌单
- 可在后面添加[-歌单名称]进行指定歌单猜歌 - 可在“[个人/团队]猜歌指令”后面添加[-歌单名称]进行指定歌单猜歌
- 歌单的歌曲命名规则为:歌名 - 歌手 - 其他(歌曲出处之类) - 猜歌内容必须以[-]开头才会识别
- 本地歌曲命名规则为:\n歌名 - 歌手 - 其他(歌曲出处之类)
</details> </details>
<details> <details>

File diff suppressed because it is too large Load Diff

View File

@ -1,406 +1,43 @@
package guessmusic package guessmusic
type listRaw struct { // config内容
Name string `json:"name"`
ID int64 `json:"id"`
}
type config struct { type config struct {
MusicPath string `json:"musicPath"` MusicPath string `json:"musicPath"`
Local bool `json:"local"` Local bool `json:"local"`
API bool `json:"api"` API bool `json:"api"`
Cookie string `json:"cookie"` Cookie string `json:"cookie"`
Playlist []listRaw `json:"playlist"` Playlist []listRaw `json:"playlist"`
Defaultlist []dlist `json:"defaultlist"`
} }
type keyInfo struct { // 记录歌单绑定的网易云歌单ID
Data struct { type listRaw struct {
Code int `json:"code"` Name string `json:"name"` // 歌单名称
Unikey string `json:"unikey"` ID int64 `json:"id"` // 歌单绑定的网易云ID
} `json:"data"`
Code int `json:"code"`
}
type cookyInfo struct {
Code int `json:"code"`
Message string `json:"message"`
Cookie string `json:"cookie"`
}
type qrInfo struct {
Code int `json:"code"`
Data struct {
Qrurl string `json:"qrurl"`
Qrimg string `json:"qrimg"`
} `json:"data"`
}
type topList struct {
Code int `json:"code"`
RelatedVideos any `json:"relatedVideos"`
Playlist struct {
ID int64 `json:"id"`
Name string `json:"name"`
CoverImgID int64 `json:"coverImgId"`
CoverImgURL string `json:"coverImgUrl"`
CoverImgIDStr string `json:"coverImgId_str"`
AdType int `json:"adType"`
UserID int `json:"userId"`
CreateTime int64 `json:"createTime"`
Status int `json:"status"`
OpRecommend bool `json:"opRecommend"`
HighQuality bool `json:"highQuality"`
NewImported bool `json:"newImported"`
UpdateTime int64 `json:"updateTime"`
TrackCount int `json:"trackCount"`
SpecialType int `json:"specialType"`
Privacy int `json:"privacy"`
TrackUpdateTime int64 `json:"trackUpdateTime"`
CommentThreadID string `json:"commentThreadId"`
PlayCount int `json:"playCount"`
TrackNumberUpdateTime int64 `json:"trackNumberUpdateTime"`
SubscribedCount int `json:"subscribedCount"`
CloudTrackCount int `json:"cloudTrackCount"`
Ordered bool `json:"ordered"`
Description string `json:"description"`
Tags []string `json:"tags"`
UpdateFrequency any `json:"updateFrequency"`
BackgroundCoverID int `json:"backgroundCoverId"`
BackgroundCoverURL any `json:"backgroundCoverUrl"`
TitleImage int `json:"titleImage"`
TitleImageURL any `json:"titleImageUrl"`
EnglishTitle any `json:"englishTitle"`
OfficialPlaylistType any `json:"officialPlaylistType"`
Subscribers []struct {
DefaultAvatar bool `json:"defaultAvatar"`
Province int `json:"province"`
AuthStatus int `json:"authStatus"`
Followed bool `json:"followed"`
AvatarURL string `json:"avatarUrl"`
AccountStatus int `json:"accountStatus"`
Gender int `json:"gender"`
City int `json:"city"`
Birthday int `json:"birthday"`
UserID int `json:"userId"`
UserType int `json:"userType"`
Nickname string `json:"nickname"`
Signature string `json:"signature"`
Description string `json:"description"`
DetailDescription string `json:"detailDescription"`
AvatarImgID int64 `json:"avatarImgId"`
BackgroundImgID int64 `json:"backgroundImgId"`
BackgroundURL string `json:"backgroundUrl"`
Authority int `json:"authority"`
Mutual bool `json:"mutual"`
ExpertTags any `json:"expertTags"`
Experts any `json:"experts"`
DjStatus int `json:"djStatus"`
VipType int `json:"vipType"`
RemarkName any `json:"remarkName"`
AuthenticationTypes int `json:"authenticationTypes"`
AvatarDetail any `json:"avatarDetail"`
Anchor bool `json:"anchor"`
BackgroundImgIDStr string `json:"backgroundImgIdStr"`
AvatarImgIDStr string `json:"avatarImgIdStr"`
AvatarImgIDString string `json:"AvatarImgIDString"`
} `json:"subscribers"`
Subscribed any `json:"subscribed"`
Creator struct {
DefaultAvatar bool `json:"defaultAvatar"`
Province int `json:"province"`
AuthStatus int `json:"authStatus"`
Followed bool `json:"followed"`
AvatarURL string `json:"avatarUrl"`
AccountStatus int `json:"accountStatus"`
Gender int `json:"gender"`
City int `json:"city"`
Birthday int `json:"birthday"`
UserID int `json:"userId"`
UserType int `json:"userType"`
Nickname string `json:"nickname"`
Signature string `json:"signature"`
Description string `json:"description"`
DetailDescription string `json:"detailDescription"`
AvatarImgID int64 `json:"avatarImgId"`
BackgroundImgID int64 `json:"backgroundImgId"`
BackgroundURL string `json:"backgroundUrl"`
Authority int `json:"authority"`
Mutual bool `json:"mutual"`
ExpertTags any `json:"expertTags"`
Experts any `json:"experts"`
DjStatus int `json:"djStatus"`
VipType int `json:"vipType"`
RemarkName any `json:"remarkName"`
AuthenticationTypes int `json:"authenticationTypes"`
AvatarDetail struct {
UserType int `json:"userType"`
IdentityLevel int `json:"identityLevel"`
IdentityIconURL string `json:"identityIconUrl"`
} `json:"avatarDetail"`
Anchor bool `json:"anchor"`
BackgroundImgIDStr string `json:"backgroundImgIdStr"`
AvatarImgIDStr string `json:"avatarImgIdStr"`
AvatarImgIDString string `json:"AvatarImgIDString"`
} `json:"creator"`
Tracks []struct {
Name string `json:"name"`
ID int `json:"id"`
Pst int `json:"pst"`
T int `json:"t"`
Ar []struct {
ID int `json:"id"`
Name string `json:"name"`
Tns []any `json:"tns"`
Alias []any `json:"alias"`
} `json:"ar"`
Alia []string `json:"alia"`
Pop int `json:"pop"`
St int `json:"st"`
Rt string `json:"rt"`
Fee int `json:"fee"`
V int `json:"v"`
Crbt any `json:"crbt"`
Cf string `json:"cf"`
Al struct {
ID int `json:"id"`
Name string `json:"name"`
PicURL string `json:"picUrl"`
Tns []any `json:"tns"`
PicStr string `json:"pic_str"`
Pic int64 `json:"pic"`
} `json:"al"`
Dt int `json:"dt"`
H struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float64 `json:"vd"`
Sr int `json:"sr"`
} `json:"h"`
M struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float64 `json:"vd"`
Sr int `json:"sr"`
} `json:"m"`
L struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float64 `json:"vd"`
Sr int `json:"sr"`
} `json:"l"`
Sq any `json:"sq"`
Hr any `json:"hr"`
A any `json:"a"`
Cd string `json:"cd"`
No int `json:"no"`
RtURL any `json:"rtUrl"`
Ftype int `json:"ftype"`
RtUrls []any `json:"rtUrls"`
DjID int `json:"djId"`
Copyright int `json:"copyright"`
SID int `json:"s_id"`
Mark int `json:"mark"`
OriginCoverType int `json:"originCoverType"`
OriginSongSimpleData any `json:"originSongSimpleData"`
TagPicList any `json:"tagPicList"`
ResourceState bool `json:"resourceState"`
Version int `json:"version"`
SongJumpInfo any `json:"songJumpInfo"`
EntertainmentTags any `json:"entertainmentTags"`
Single int `json:"single"`
NoCopyrightRcmd any `json:"noCopyrightRcmd"`
Alg any `json:"alg"`
Rtype int `json:"rtype"`
Rurl any `json:"rurl"`
Mst int `json:"mst"`
Cp int `json:"cp"`
Mv int `json:"mv"`
PublishTime int64 `json:"publishTime"`
Tns []string `json:"tns,omitempty"`
} `json:"tracks"`
VideoIds any `json:"videoIds"`
Videos any `json:"videos"`
TrackIds []struct {
ID int `json:"id"`
V int `json:"v"`
T int `json:"t"`
At int64 `json:"at"`
Alg any `json:"alg"`
UID int `json:"uid"`
RcmdReason string `json:"rcmdReason"`
Sc any `json:"sc"`
Lr int `json:"lr,omitempty"`
} `json:"trackIds"`
ShareCount int `json:"shareCount"`
CommentCount int `json:"commentCount"`
RemixVideo any `json:"remixVideo"`
SharedUsers any `json:"sharedUsers"`
HistorySharedUsers any `json:"historySharedUsers"`
GradeStatus string `json:"gradeStatus"`
Score any `json:"score"`
AlgTags any `json:"algTags"`
} `json:"playlist"`
Urls any `json:"urls"`
Privileges []struct {
ID int `json:"id"`
Fee int `json:"fee"`
Payed int `json:"payed"`
RealPayed int `json:"realPayed"`
St int `json:"st"`
Pl int `json:"pl"`
Dl int `json:"dl"`
Sp int `json:"sp"`
Cp int `json:"cp"`
Subp int `json:"subp"`
Cs bool `json:"cs"`
Maxbr int `json:"maxbr"`
Fl int `json:"fl"`
Pc any `json:"pc"`
Toast bool `json:"toast"`
Flag int `json:"flag"`
PaidBigBang bool `json:"paidBigBang"`
PreSell bool `json:"preSell"`
PlayMaxbr int `json:"playMaxbr"`
DownloadMaxbr int `json:"downloadMaxbr"`
MaxBrLevel string `json:"maxBrLevel"`
PlayMaxBrLevel string `json:"playMaxBrLevel"`
DownloadMaxBrLevel string `json:"downloadMaxBrLevel"`
PlLevel string `json:"plLevel"`
DlLevel string `json:"dlLevel"`
FlLevel string `json:"flLevel"`
Rscl int `json:"rscl"`
FreeTrialPrivilege struct {
ResConsumable bool `json:"resConsumable"`
UserConsumable bool `json:"userConsumable"`
ListenType any `json:"listenType"`
} `json:"freeTrialPrivilege"`
ChargeInfoList []struct {
Rate int `json:"rate"`
ChargeURL any `json:"chargeUrl"`
ChargeMessage any `json:"chargeMessage"`
ChargeType int `json:"chargeType"`
} `json:"chargeInfoList"`
} `json:"privileges"`
SharedPrivilege any `json:"sharedPrivilege"`
ResEntrance any `json:"resEntrance"`
} }
type topMusicInfo struct { // 记录群默认猜歌
Songs []struct { type dlist struct {
Name string `json:"name"` GroupID int64 `json:"gid"` // 群号
ID int `json:"id"` Name string `json:"name"` // 歌单名称
Pst int `json:"pst"` }
T int `json:"t"`
Ar []struct { // 本地歌单列表信息
ID int `json:"id"` type listinfo struct {
Name string `json:"name"` Name string `json:"name"` // 歌单名称
Tns []any `json:"tns"` Number int // 歌曲数量
Alias []any `json:"alias"` ID int64 // 歌单绑定的歌曲ID
} `json:"ar"` }
Alia []string `json:"alia"`
Pop int `json:"pop"` // 独角兽API随机抽歌信息
St int `json:"st"` type ovooaData struct {
Rt string `json:"rt"` Code int `json:"code"`
Fee int `json:"fee"` Text string `json:"text"`
V int `json:"v"` Data struct {
Crbt any `json:"crbt"` Song string `json:"song"`
Cf string `json:"cf"` Singer string `json:"singer"`
Al struct { Cover string `json:"cover"`
ID int `json:"id"` Music string `json:"Music"`
Name string `json:"name"` ID int `json:"id"`
PicURL string `json:"picUrl"` } `json:"data"`
Tns []any `json:"tns"`
PicStr string `json:"pic_str"`
Pic int64 `json:"pic"`
} `json:"al"`
Dt int `json:"dt"`
H struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float32 `json:"vd"`
Sr int `json:"sr"`
} `json:"h"`
M struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float32 `json:"vd"`
Sr int `json:"sr"`
} `json:"m"`
L struct {
Br int `json:"br"`
Fid int `json:"fid"`
Size int `json:"size"`
Vd float32 `json:"vd"`
Sr int `json:"sr"`
} `json:"l"`
Sq any `json:"sq"`
Hr any `json:"hr"`
A any `json:"a"`
Cd string `json:"cd"`
No int `json:"no"`
RtURL any `json:"rtUrl"`
Ftype int `json:"ftype"`
RtUrls []any `json:"rtUrls"`
DjID int `json:"djId"`
Copyright int `json:"copyright"`
SID int `json:"s_id"`
Mark int `json:"mark"`
OriginCoverType int `json:"originCoverType"`
OriginSongSimpleData any `json:"originSongSimpleData"`
TagPicList any `json:"tagPicList"`
ResourceState bool `json:"resourceState"`
Version int `json:"version"`
SongJumpInfo any `json:"songJumpInfo"`
EntertainmentTags any `json:"entertainmentTags"`
AwardTags any `json:"awardTags"`
Single int `json:"single"`
NoCopyrightRcmd any `json:"noCopyrightRcmd"`
Rtype int `json:"rtype"`
Rurl any `json:"rurl"`
Mst int `json:"mst"`
Cp int `json:"cp"`
Mv int `json:"mv"`
PublishTime int64 `json:"publishTime"`
Tns []string `json:"tns,omitempty"`
} `json:"songs"`
Privileges []struct {
ID int `json:"id"`
Fee int `json:"fee"`
Payed int `json:"payed"`
St int `json:"st"`
Pl int `json:"pl"`
Dl int `json:"dl"`
Sp int `json:"sp"`
Cp int `json:"cp"`
Subp int `json:"subp"`
Cs bool `json:"cs"`
Maxbr int `json:"maxbr"`
Fl int `json:"fl"`
Toast bool `json:"toast"`
Flag int `json:"flag"`
PreSell bool `json:"preSell"`
PlayMaxbr int `json:"playMaxbr"`
DownloadMaxbr int `json:"downloadMaxbr"`
MaxBrLevel string `json:"maxBrLevel"`
PlayMaxBrLevel string `json:"playMaxBrLevel"`
DownloadMaxBrLevel string `json:"downloadMaxBrLevel"`
PlLevel string `json:"plLevel"`
DlLevel string `json:"dlLevel"`
FlLevel string `json:"flLevel"`
Rscl int `json:"rscl"`
FreeTrialPrivilege struct {
ResConsumable bool `json:"resConsumable"`
UserConsumable bool `json:"userConsumable"`
ListenType any `json:"listenType"`
} `json:"freeTrialPrivilege"`
ChargeInfoList []struct {
Rate int `json:"rate"`
ChargeURL any `json:"chargeUrl"`
ChargeMessage any `json:"chargeMessage"`
ChargeType int `json:"chargeType"`
} `json:"chargeInfoList"`
} `json:"privileges"`
Code int `json:"code"`
} }