From 4f025a6d3e1bbc8a362940cc2c7cb08f46d68cfa Mon Sep 17 00:00:00 2001 From: qydysky Date: Mon, 8 Mar 2021 12:59:41 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=9D=E6=8C=81=E5=BD=93=E5=89=8D=E5=B7=B2?= =?utf8?q?=E7=82=B9=E4=BA=AE=E7=9A=84=E7=B2=89=E4=B8=9D=E7=89=8C=E6=80=BB?= =?utf8?q?=E6=98=AF=E7=82=B9=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- F/api.go | 71 ++++++++++++++++++++++++++++++++-------------------- README.md | 32 +++++++++++++++-------- Reply/F.go | 2 +- Send/Send.go | 23 +++++++++++------ 4 files changed, 82 insertions(+), 46 deletions(-) diff --git a/F/api.go b/F/api.go index 8374250..a3ff145 100644 --- a/F/api.go +++ b/F/api.go @@ -936,7 +936,8 @@ type TGet_list_in_room struct{ Medal_name string `json:"medal_name"`//牌子名 Target_id int `json:"target_id"`//牌子up主uid Target_name string `json:"target_name"`//牌子up主名 - Room_id int `json:"room_id"`//牌子直播间 + Room_id int `json:"roomid"`//牌子直播间 + Last_wear_time int `json:"last_wear_time"`//上次佩戴时间 Today_intimacy int `json:"today_intimacy"`//今日亲密(0:未发送弹幕 100:已发送弹幕) Is_lighted int `json:"is_lighted"`//牌子是否熄灭(0:熄灭 1:亮) } @@ -960,36 +961,52 @@ func Get_list_in_room() (array []TGet_list_in_room) { }) {//获取牌子列表 - r := p.Req() - if e := r.Reqf(p.Rval{ - Url:`https://api.live.bilibili.com/fans_medal/v1/FansMedal/get_list_in_room`, - Header:map[string]string{ - `Cookie`:p.Map_2_Cookies_String(Cookie), - }, - Timeout:10, - Retry:2, - });e != nil { - apilog.L(`E: `,e) - return - } - - var res struct{ - Code int `json:"code"` - Msg string `json:"msg"` - Message string `json:"message"` - Data []TGet_list_in_room `json:"data"` - } + var medalList []TGet_list_in_room + for pageNum:=1; true;pageNum+=1{ + r := p.Req() + if e := r.Reqf(p.Rval{ + Url:`https://api.live.bilibili.com/fans_medal/v5/live_fans_medal/iApiMedal?page=`+strconv.Itoa(pageNum)+`&pageSize=10`, + Header:map[string]string{ + `Cookie`:p.Map_2_Cookies_String(Cookie), + }, + Timeout:10, + Retry:2, + });e != nil { + apilog.L(`E: `,e) + return + } + + var res struct{ + Code int `json:"code"` + Msg string `json:"msg"` + Message string `json:"message"` + Data struct{ + FansMedalList []TGet_list_in_room `json"fansMedalList"` + Pageinfo struct{ + Totalpages int `json:"totalpages"` + CurPage int `json:"curPage"` + } `json:"pageinfo"` + } `json:"data"` + } + + if e := json.Unmarshal(r.Respon, &res);e != nil{ + apilog.L(`E: `,e) + } + + if res.Code != 0 { + apilog.L(`E: `,`返回code`, res.Code, res.Msg) + return + } - if e := json.Unmarshal(r.Respon, &res);e != nil{ - apilog.L(`E: `,e) - } + medalList = append(medalList, res.Data.FansMedalList...) - if res.Code != 0 { - apilog.L(`E: `,`返回code`, res.Code, res.Msg) - return + if res.Data.Pageinfo.CurPage == res.Data.Pageinfo.Totalpages {break} + + time.Sleep(time.Second) } + - return res.Data + return medalList } } diff --git a/README.md b/README.md index b826fd0..226e44e 100644 --- a/README.md +++ b/README.md @@ -59,12 +59,12 @@ golang go version go1.15 linux/amd64 #### 当前支持功能 以下内容可能过时,点击查看[~~当前支持功能(旧)~~](https://github.com/qydysky/bili_danmu/blob/9731f69d06a15645c6cb1d41379520a5a3f519f1/Reply/F.go#L26),[功能配置(新)](https://github.com/qydysky/bili_danmu/blob/maintenance/demo/config/config_K_v.json) -- [x] 自动发送将要过期的银瓜子礼物(默认发送3天内过期的)(日期更迭会触发) -- [x] 保持自选(手机25个(最多)自选)粉丝牌总是点亮(日期更迭会触发) -- [x] 银瓜子自动兑换硬币(日期更迭会触发) -- [x] 发进房弹幕(可选有无粉丝牌(可选每日首次发送后不发))(日期更迭会触发) -- [x] 签到(日期更迭会触发) -- [x] 有粉丝牌获取小心心(日期更迭会触发) +- [x] 每天自动发送将要过期的银瓜子礼物(默认发送3天内过期的) +- [x] 保持当前已点亮的粉丝牌总是点亮 +- [x] 银瓜子自动兑换硬币 +- [x] 发进房弹幕(可选有无粉丝牌(可选每日首次发送后不发)) +- [x] 每日签到 +- [x] 每日有粉丝牌获取小心心 - [x] 自定义私信 - [x] 自动切换粉丝牌 - [x] 扫码登录 @@ -100,10 +100,12 @@ golang go version go1.15 linux/amd64 #### 命令行操作 在准备动作完成(`T: 2021/03/06 16:22:39 命令行操作 [回车查看帮助]`)后,输入回车将显示帮助 ``` -I: 2021/03/06 16:16:17 命令行操作 [切换房间->输入数字回车] -I: 2021/03/06 16:16:17 命令行操作 [发送弹幕->输入' 字符串'回车] -I: 2021/03/06 16:16:17 命令行操作 [查看直播中主播->输入' live'回车] -I: 2021/03/06 16:16:17 命令行操作 [其他输出隔断不影响] +I: 2021/03/08 12:57:09 命令行操作 [切换房间->输入数字回车] +I: 2021/03/08 12:57:09 命令行操作 [发送弹幕->输入' 字符串'回车] +I: 2021/03/08 12:57:09 命令行操作 [房间信息->输入' room'回车] +I: 2021/03/08 12:57:09 命令行操作 [查看直播中主播->输入' live'回车] +I: 2021/03/08 12:57:09 命令行操作 [其他输出隔断不影响] + ``` 用例: - 直播间切换 @@ -128,6 +130,16 @@ I: 2021/03/06 16:21:35 命令行操作 [进入 120] 1 I: 2021/03/06 16:21:17 弹幕发送 [发送 1 至 7734200] ``` +- 查看房间信息 +``` + room +I: 2021/03/08 01:06:53 命令行操作 [当前直播间信息] +I: 2021/03/08 01:06:53 命令行操作 [C酱です 213电竞俱乐部开业了! 直播中] +I: 2021/03/08 01:06:53 命令行操作 [已直播时长: 07:56:53] +I: 2021/03/08 01:06:53 命令行操作 [营收: ¥0.00] +I: 2021/03/08 01:06:53 命令行操作 [舰长数: 1427] +I: 2021/03/08 01:06:53 命令行操作 [分区排行: 单机游戏 19 人气: 1321956] +``` #### cookie加密 保护cookie.txt diff --git a/Reply/F.go b/Reply/F.go index 02da059..a47d5f2 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -779,7 +779,7 @@ func Keep_medal_light() { for _,v := range F.Get_list_in_room() { if v.Is_lighted == 1 {continue} - + if time.Now().Add(-time.Hour * time.Duration(24 * 7)).Unix() - int64(v.Last_wear_time) > 0 {continue} send.Danmu_s(sendStr,p.Map_2_Cookies_String(Cookie),v.Room_id) time.Sleep(time.Second) } diff --git a/Send/Send.go b/Send/Send.go index 578d7a6..2d62e21 100644 --- a/Send/Send.go +++ b/Send/Send.go @@ -3,6 +3,7 @@ package send import ( "strings" "strconv" + "encoding/json" c "github.com/qydysky/bili_danmu/CV" p "github.com/qydysky/part" @@ -44,7 +45,8 @@ func Danmu_s(msg,Cookie string, roomid int) { err := r.Reqf(p.Rval{ Url:"https://api.live.bilibili.com/msg/send", PostStr:PostStr, - Timeout:5, + Retry:2, + Timeout:10, Header:map[string]string{ `Host`: `api.live.bilibili.com`, `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`, @@ -65,13 +67,18 @@ func Danmu_s(msg,Cookie string, roomid int) { return } - if code := p.Json().GetValFromS(string(r.Respon), "code");code == nil || code.(float64) != 0 { - if message := p.Json().GetValFromS(string(r.Respon), "message");message != nil { - l.L(`E: `,message) - } else { - l.L(`E: `,string(r.Respon)) - } - return + var res struct{ + Code int `json:"code"` + Message string `json:"message"` + } + + if e := json.Unmarshal(r.Respon, &res);e != nil{ + l.L(`E: `,e) + } + + if res.Code != 0 { + l.L(`E: `, res.Code, res.Message) } + l.L(`E: `, res.Message) } \ No newline at end of file -- 2.39.2