mirai
mirai copied to clipboard
定制化分享音乐(MusicShare)卡片底部
曾在远古时期,我分析过音乐分享的卡片消息,通过客户端生成的是也是 LightApp
类型。目前框架内将收到的 LightApp
类型的 MusicShare
做了类型转换,并在发送的时候使用了 OidbCmd0x77
的包。实际上,类似这两个包对于音乐的部分是类似的
这是 lightapp 中部分结构,这个结构可以对应到 pb 的 LightAppStruct#Meta#Music
,这也是 mirai 对音乐类的 LightApp
转换时使用的结构
"music":{
"action":"",
"android_pkg_name":"",
"app_type":1,
"appid":100497308,
"desc":"$singer",
"jumpUrl":"",
"musicUrl":"$songPath",
"preview":"$poster",
"sourceMsgId":"0",
"source_icon":"",
"source_url":"",
"tag":"$tag",
"title":"$title"
}
这是 OidbCmd077
的部分结构
@Serializable
internal class RichMsgBody(
@JvmField @ProtoNumber(1) val usingArk: Boolean = false,
@JvmField @ProtoNumber(10) val title: String = "",
@JvmField @ProtoNumber(11) val summary: String = "",
@JvmField @ProtoNumber(12) val brief: String = "",
@JvmField @ProtoNumber(13) val url: String = "",
@JvmField @ProtoNumber(14) val pictureUrl: String = "",
@JvmField @ProtoNumber(15) val action: String = "",
@JvmField @ProtoNumber(16) val musicUrl: String = "",
@JvmField @ProtoNumber(21) val imageInfo: ImageInfo? = null,
) : ProtoBuf
其中缺少了两个很有意思的字段 source_icon
和 tag
这两个字段可以生成卡片底部的图标和脚注。注意到在 OidbCmd077
结构中有部分字段没有生成,我猜测应该是包含这两个字段拿到,具体是哪个顺序呢。
新 Feature 需求:
对 MusicType
的枚举新增一个 Custom
类型,可以修改这两个字段,它会覆盖掉 clientInfo 提供的默认底部的图标和脚注。同时传入另一个 MusicType
作为原本的 clientInfo。
真的有么,mirai 的 proto 应该是一两年以内的
真的有么,mirai 的 proto 应该是一两年以内的
我不知道,但是 proto 里不是确实空了些字段么