/*https://passport.bilibili.com/x/passport-login/web/sms/send*/
}
+// 牌子字段
+type FansMedalI struct {
+ TargetID int
+ IsLighted int
+ MedalID int
+ RoomID int
+}
+
// 获取牌子信息
-func Get_list_in_room() (array []J.GetMyMedals_Items) {
+func Get_list_in_room() (array []FansMedalI) {
apilog := apilog.Base_add(`获取牌子`)
//验证cookie
})
{ //获取牌子列表
- var medalList []J.GetMyMedals_Items
+ var medalList []FansMedalI
for pageNum := 1; true; pageNum += 1 {
r := c.C.ReqPool.Get()
defer c.C.ReqPool.Put(r)
if e := r.Reqf(reqf.Rval{
- Url: `https://api.live.bilibili.com/xlive/app-ucenter/v1/user/GetMyMedals?page=` + strconv.Itoa(pageNum) + `&page_size=10`,
+ Url: `https://api.live.bilibili.com/xlive/app-ucenter/v1/fansMedal/panel?page=` + strconv.Itoa(pageNum) + `&page_size=10`,
Header: map[string]string{
`Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
return
}
- var res J.GetMyMedals
+ var res J.FansMedal
if e := json.Unmarshal(r.Respon, &res); e != nil {
apilog.L(`E: `, e)
return
}
- medalList = append(medalList, res.Data.Items...)
+ for i := 0; i < len(res.Data.List); i++ {
+ li := res.Data.List[i]
+ medalList = append(medalList, FansMedalI{
+ TargetID: li.Medal.TargetID,
+ IsLighted: li.Medal.IsLighted,
+ MedalID: li.Medal.MedalID,
+ RoomID: li.RoomInfo.RoomID,
+ })
+ }
- if res.Data.PageInfo.CurPage == res.Data.PageInfo.TotalPage {
+ if res.Data.PageInfo.CurrentPage == res.Data.PageInfo.TotalPage {
break
}
Message string `json:"message"`
TTL int `json:"ttl"`
Data struct {
+ List []struct {
+ Medal FansMedalItem `json:"medal"`
+ AnchorInfo struct {
+ NickName string `json:"nick_name"`
+ Avatar string `json:"avatar"`
+ Verify int `json:"verify"`
+ } `json:"anchor_info"`
+ Superscript interface{} `json:"superscript"`
+ RoomInfo struct {
+ RoomID int `json:"room_id"`
+ LivingStatus int `json:"living_status"`
+ URL string `json:"url"`
+ } `json:"room_info"`
+ } `json:"list"`
+ SpecialList []struct {
+ Medal struct {
+ UID int `json:"uid"`
+ TargetID int `json:"target_id"`
+ TargetName string `json:"target_name"`
+ MedalID int `json:"medal_id"`
+ Level int `json:"level"`
+ MedalName string `json:"medal_name"`
+ MedalColor int `json:"medal_color"`
+ Intimacy int `json:"intimacy"`
+ NextIntimacy int `json:"next_intimacy"`
+ DayLimit int `json:"day_limit"`
+ TodayFeed int `json:"today_feed"`
+ MedalColorStart int `json:"medal_color_start"`
+ MedalColorEnd int `json:"medal_color_end"`
+ MedalColorBorder int `json:"medal_color_border"`
+ IsLighted int `json:"is_lighted"`
+ GuardLevel int `json:"guard_level"`
+ WearingStatus int `json:"wearing_status"`
+ MedalIconID int `json:"medal_icon_id"`
+ MedalIconURL string `json:"medal_icon_url"`
+ GuardIcon string `json:"guard_icon"`
+ HonorIcon string `json:"honor_icon"`
+ CanDelete bool `json:"can_delete"`
+ } `json:"medal"`
+ AnchorInfo struct {
+ NickName string `json:"nick_name"`
+ Avatar string `json:"avatar"`
+ Verify int `json:"verify"`
+ } `json:"anchor_info"`
+ Superscript interface{} `json:"superscript"`
+ RoomInfo struct {
+ RoomID int `json:"room_id"`
+ LivingStatus int `json:"living_status"`
+ URL string `json:"url"`
+ } `json:"room_info"`
+ } `json:"special_list"`
+ BottomBar interface{} `json:"bottom_bar"`
+ PageInfo struct {
+ Number int `json:"number"`
+ CurrentPage int `json:"current_page"`
+ HasMore bool `json:"has_more"`
+ NextPage int `json:"next_page"`
+ NextLightStatus int `json:"next_light_status"`
+ TotalPage int `json:"total_page"`
+ } `json:"page_info"`
+ TotalNumber int `json:"total_number"`
+ HasMedal int `json:"has_medal"`
} `json:"data"`
}
+
+type FansMedalItem struct {
+ UID int `json:"uid"`
+ TargetID int `json:"target_id"`
+ TargetName string `json:"target_name"`
+ MedalID int `json:"medal_id"`
+ Level int `json:"level"`
+ MedalName string `json:"medal_name"`
+ MedalColor int `json:"medal_color"`
+ Intimacy int `json:"intimacy"`
+ NextIntimacy int `json:"next_intimacy"`
+ DayLimit int `json:"day_limit"`
+ TodayFeed int `json:"today_feed"`
+ MedalColorStart int `json:"medal_color_start"`
+ MedalColorEnd int `json:"medal_color_end"`
+ MedalColorBorder int `json:"medal_color_border"`
+ IsLighted int `json:"is_lighted"`
+ GuardLevel int `json:"guard_level"`
+ WearingStatus int `json:"wearing_status"`
+ MedalIconID int `json:"medal_icon_id"`
+ MedalIconURL string `json:"medal_icon_url"`
+ GuardIcon string `json:"guard_icon"`
+ HonorIcon string `json:"honor_icon"`
+ CanDelete bool `json:"can_delete"`
+}
+
"github.com/dustin/go-humanize"
c "github.com/qydysky/bili_danmu/CV"
F "github.com/qydysky/bili_danmu/F"
- J "github.com/qydysky/bili_danmu/Json"
send "github.com/qydysky/bili_danmu/Send"
p "github.com/qydysky/part"
flog.L(`T: `, `开始`)
defer flog.L(`I: `, `完成`)
- cacheInfo := make(map[int]J.Info)
medals := F.Get_list_in_room()
if len(medals) == 0 {
return
}
for _, v := range medals {
- if v.IsLighted == 1 {
+ if v.IsLighted == 1 || v.RoomID == 0 {
continue
} //点亮状态
- if info, e := F.Get(c.C).Info(v.TargetID); e != nil {
- flog.L(`E: `, e)
- return
- } else {
- cacheInfo[v.TargetID] = info
- }
-
//两天内到期,发弹幕续期
rand := p.Rand().MixRandom(0, int64(len(array)-1))
- send.Danmu_s(array[rand].(string), cacheInfo[v.TargetID].Data.LiveRoom.Roomid)
- time.Sleep(time.Second)
+ send.Danmu_s(array[rand].(string), v.RoomID)
+ time.Sleep(time.Second * 5)
}
//重试,使用点赞
return
}
for _, v := range medals {
- if v.IsLighted == 1 || cacheInfo[v.TargetID].Data.LiveRoom.Roomid == 0 {
+ if v.IsLighted == 1 || v.RoomID == 0 {
continue
}
send.Danmu_s2(map[string]string{
`msg`: `official_147`,
`dm_type`: `1`,
- `roomid`: strconv.Itoa(cacheInfo[v.TargetID].Data.LiveRoom.Roomid),
+ `roomid`: strconv.Itoa(v.RoomID),
})
- time.Sleep(time.Second)
+ time.Sleep(time.Second * 5)
}
//重试,使用历史弹幕
return
}
for _, v := range medals {
- if v.IsLighted == 1 || cacheInfo[v.TargetID].Data.LiveRoom.Roomid == 0 {
+ if v.IsLighted == 1 || v.RoomID == 0 {
continue
}
//两天内到期,发弹幕续期
var Str string
- for _, v := range F.GetHistory(cacheInfo[v.TargetID].Data.LiveRoom.Roomid).Data.Room {
+ for _, v := range F.GetHistory(v.RoomID).Data.Room {
if v.Text != "" {
Str = v.Text
break
rand := p.Rand().MixRandom(0, int64(len(array)-1))
Str = array[rand].(string)
}
- send.Danmu_s(Str, cacheInfo[v.TargetID].Data.LiveRoom.Roomid)
- time.Sleep(time.Second)
+ send.Danmu_s(Str, v.RoomID)
+ time.Sleep(time.Second * 5)
}
}