var apilog = c.Log.Base(`api`)
var api_limit = limit.New(1, 2000, 30000) //频率限制1次/2s,最大等待时间30s
-func Get(key string) {
+type GetFunc struct {
+ c.Common
+}
+
+func (c *GetFunc) Get(key string) {
apilog := apilog.Base_add(`Get`)
if api_limit.TO() {
return
} //超额请求阻塞,超时将取消
- var api_can_get = map[string][]func() []string{
- `Cookie`: { //Cookie
- Get_cookie,
- },
- `Uid`: { //用戶uid
- GetUid,
- },
- `UpUid`: { //主播uid
- getInfoByRoom,
- getRoomPlayInfo,
- Html,
- },
- `Live_Start_Time`: { //直播开始时间
- getInfoByRoom,
- getRoomPlayInfo,
- Html,
- },
- `Liveing`: { //是否在直播
- getInfoByRoom,
- getRoomPlayInfo,
- Html,
- },
- `Title`: { //直播间标题
- getInfoByRoom,
- Html,
- },
- `Uname`: { //主播名
- getInfoByRoom,
- Html,
- },
- `ParentAreaID`: { //分区
- getInfoByRoom,
- Html,
- },
- `AreaID`: { //子分区
- getInfoByRoom,
- Html,
- },
- `Roomid`: { //房间id
- missRoomId,
- },
- `GuardNum`: { //舰长数
- Get_guardNum,
- getInfoByRoom,
- getRoomPlayInfo,
- Html,
- },
- `Note`: { //分区排行
- Get_HotRank,
- getInfoByRoom,
- Html,
- },
- `Locked`: { //直播间是否被封禁
- getInfoByRoom,
- Html,
- },
- `Live_qn`: { //当前直播流质量
- getRoomPlayInfo,
- Html,
- },
- `AcceptQn`: { //允许的清晰度
- getRoomPlayInfo,
- Html,
- },
- `Live`: { //直播流链接
- getRoomPlayInfoByQn,
- getRoomPlayInfo,
- Html,
- },
- `Token`: { //弹幕钥
- getDanmuInfo,
- },
- `WSURL`: { //弹幕链接
- getDanmuInfo,
- },
- // `VERSION`:[]func()([]string){//客户版本 不再需要
- // Get_Version,
- // },
- `LIVE_BUVID`: { //LIVE_BUVID
- Get_LIVE_BUVID,
- },
+ var (
+ api_can_get = map[string][]func() []string{
+ `Cookie`: { //Cookie
+ c.Get_cookie,
+ },
+ `Uid`: { //用戶uid
+ c.GetUid,
+ },
+ `UpUid`: { //主播uid
+ c.getInfoByRoom,
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Live_Start_Time`: { //直播开始时间
+ c.getInfoByRoom,
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Liveing`: { //是否在直播
+ c.getInfoByRoom,
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Title`: { //直播间标题
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `Uname`: { //主播名
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `ParentAreaID`: { //分区
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `AreaID`: { //子分区
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `Roomid`: { //房间id
+ c.missRoomId,
+ },
+ `GuardNum`: { //舰长数
+ c.Get_guardNum,
+ c.getInfoByRoom,
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Note`: { //分区排行
+ c.Get_HotRank,
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `Locked`: { //直播间是否被封禁
+ c.getInfoByRoom,
+ c.Html,
+ },
+ `Live_qn`: { //当前直播流质量
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `AcceptQn`: { //允许的清晰度
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Live`: { //直播流链接
+ c.getRoomPlayInfoByQn,
+ c.getRoomPlayInfo,
+ c.Html,
+ },
+ `Token`: { //弹幕钥
+ c.getDanmuInfo,
+ },
+ `WSURL`: { //弹幕链接
+ c.getDanmuInfo,
+ },
+ // `VERSION`:[]func()([]string){//客户版本 不再需要
+ // Get_Version,
+ // },
+ `LIVE_BUVID`: { //LIVE_BUVID
+ c.Get_LIVE_BUVID,
+ },
- `Silver_2_coin`: { //银瓜子2硬币
- Silver_2_coin,
- },
- `CheckSwitch_FansMedal`: { //切换粉丝牌
- CheckSwitch_FansMedal,
- },
- }
- var check = map[string]func() bool{
- `Uid`: func() bool { //用戶uid
- return c.Uid != 0
- },
- `UpUid`: func() bool { //主播uid
- return c.UpUid != 0
- },
- `Live_Start_Time`: func() bool { //直播开始时间
- return c.Live_Start_Time != time.Time{}
- },
- `Liveing`: func() bool { //是否在直播
- return true
- },
- `Title`: func() bool { //直播间标题
- return c.Title != ``
- },
- `Uname`: func() bool { //主播名
- return c.Uname != ``
- },
- `ParentAreaID`: func() bool { //分区
- return c.ParentAreaID != 0
- },
- `AreaID`: func() bool { //子分区
- return c.AreaID != 0
- },
- `Roomid`: func() bool { //房间id
- return c.Roomid != 0
- },
- `GuardNum`: func() bool { //舰长数
- return c.GuardNum != 0
- },
- `Note`: func() bool { //分区排行
- return c.Note != ``
- },
- `Locked`: func() bool { //直播间是否被封禁
- return true
- },
- `Live_qn`: func() bool { //当前直播流质量
- return c.Live_qn != 0
- },
- `AcceptQn`: func() bool { //允许的清晰度
- return len(c.AcceptQn) != 0
- },
- `Live`: func() bool { //直播流链接
- return len(c.Live) != 0
- },
- `Token`: func() bool { //弹幕钥
- return c.Token != ``
- },
- `WSURL`: func() bool { //弹幕链接
- return len(c.WSURL) != 0
- },
- // `VERSION`:func()(bool){//客户版本 不再需要
- // return c.VERSION != `2.0.11`
- // },
- `LIVE_BUVID`: func() bool { //LIVE_BUVID
- return c.LIVE_BUVID
- },
- `Silver_2_coin`: func() bool { //银瓜子2硬币
- return true
- },
- `CheckSwitch_FansMedal`: func() bool { //切换粉丝牌
- return true
- },
- `Cookie`: func() bool { //Cookie
- return true
- },
- }
+ `Silver_2_coin`: { //银瓜子2硬币
+ c.Silver_2_coin,
+ },
+ `CheckSwitch_FansMedal`: { //切换粉丝牌
+ c.CheckSwitch_FansMedal,
+ },
+ }
+ check = map[string]func() bool{
+ `Uid`: func() bool { //用戶uid
+ return c.Uid != 0
+ },
+ `UpUid`: func() bool { //主播uid
+ return c.UpUid != 0
+ },
+ `Live_Start_Time`: func() bool { //直播开始时间
+ return c.Live_Start_Time != time.Time{}
+ },
+ `Liveing`: func() bool { //是否在直播
+ return true
+ },
+ `Title`: func() bool { //直播间标题
+ return c.Title != ``
+ },
+ `Uname`: func() bool { //主播名
+ return c.Uname != ``
+ },
+ `ParentAreaID`: func() bool { //分区
+ return c.ParentAreaID != 0
+ },
+ `AreaID`: func() bool { //子分区
+ return c.AreaID != 0
+ },
+ `Roomid`: func() bool { //房间id
+ return c.Roomid != 0
+ },
+ `GuardNum`: func() bool { //舰长数
+ return c.GuardNum != 0
+ },
+ `Note`: func() bool { //分区排行
+ return c.Note != ``
+ },
+ `Locked`: func() bool { //直播间是否被封禁
+ return true
+ },
+ `Live_qn`: func() bool { //当前直播流质量
+ return c.Live_qn != 0
+ },
+ `AcceptQn`: func() bool { //允许的清晰度
+ return len(c.AcceptQn) != 0
+ },
+ `Live`: func() bool { //直播流链接
+ return len(c.Live) != 0
+ },
+ `Token`: func() bool { //弹幕钥
+ return c.Token != ``
+ },
+ `WSURL`: func() bool { //弹幕链接
+ return len(c.WSURL) != 0
+ },
+ // `VERSION`:func()(bool){//客户版本 不再需要
+ // return c.VERSION != `2.0.11`
+ // },
+ `LIVE_BUVID`: func() bool { //LIVE_BUVID
+ return c.LIVE_BUVID
+ },
+ `Silver_2_coin`: func() bool { //银瓜子2硬币
+ return true
+ },
+ `CheckSwitch_FansMedal`: func() bool { //切换粉丝牌
+ return true
+ },
+ `Cookie`: func() bool { //Cookie
+ return true
+ },
+ }
+ )
if fList, ok := api_can_get[key]; ok {
for _, fItem := range fList {
apilog.L(`W: `, `missKey equrt key`, key, missKey)
continue
}
- Get(misskeyitem)
+ c.Get(misskeyitem)
}
missKey := fItem()
if len(missKey) > 0 {
}
}
-func GetUid() (missKey []string) {
+func (c *GetFunc) GetUid() (missKey []string) {
if uid, ok := c.Cookie.LoadV(`DedeUserID`).(string); !ok { //cookie中无DedeUserID
missKey = append(missKey, `Cookie`)
} else if uid, e := strconv.Atoi(uid); e != nil {
return
}
-func Info(UpUid int) (info J.Info) {
- apilog := apilog.Base_add(`Info`)
- if api_limit.TO() {
- return
- } //超额请求阻塞,超时将取消
-
- //html
- {
- req := reqf.New()
- if err := req.Reqf(reqf.Rval{
- Url: `https://api.bilibili.com/x/space/acc/info?mid=` + strconv.Itoa(UpUid) + `&jsonp=jsonp`,
- Proxy: c.Proxy,
- Timeout: 10 * 1000,
- Retry: 2,
- }); err != nil {
- apilog.L(`E: `, err)
- return
- }
-
- //Info
- {
- if e := json.Unmarshal(req.Respon, &info); e != nil {
- apilog.L(`E: `, e)
- return
- } else if info.Code != 0 {
- apilog.L(`E: `, info.Message)
- return
- }
- }
- }
- return
-}
-
-func Html() (missKey []string) {
+func (c *GetFunc) Html() (missKey []string) {
apilog := apilog.Base_add(`html`)
if c.Roomid == 0 {
return
}
-func missRoomId() (missKey []string) {
+func (c *GetFunc) missRoomId() (missKey []string) {
apilog.Base_add(`missRoomId`).L(`E: `, `missRoomId`)
return
}
-func getInfoByRoom() (missKey []string) {
+func (c *GetFunc) getInfoByRoom() (missKey []string) {
apilog := apilog.Base_add(`getInfoByRoom`)
if c.Roomid == 0 {
return
}
-func getRoomPlayInfo() (missKey []string) {
+func (c *GetFunc) getRoomPlayInfo() (missKey []string) {
apilog := apilog.Base_add(`getRoomPlayInfo`)
if c.Roomid == 0 {
return
}
-func getRoomPlayInfoByQn() (missKey []string) {
+func (c *GetFunc) getRoomPlayInfoByQn() (missKey []string) {
apilog := apilog.Base_add(`getRoomPlayInfoByQn`)
if c.Roomid == 0 {
return
}
-func getDanmuInfo() (missKey []string) {
+func (c *GetFunc) getDanmuInfo() (missKey []string) {
apilog := apilog.Base_add(`getDanmuInfo`)
if c.Roomid == 0 {
return rface.(string) + `@58w_58h`
}
-func Get_HotRank() (missKey []string) {
+func (c *GetFunc) Get_HotRank() (missKey []string) {
apilog := apilog.Base_add(`Get_HotRank`)
if c.UpUid == 0 {
return
}
-func Get_guardNum() (missKey []string) {
+func (c *GetFunc) Get_guardNum() (missKey []string) {
apilog := apilog.Base_add(`Get_guardNum`)
if c.UpUid == 0 {
// return
// }
+func Info(UpUid int) (info J.Info) {
+ apilog := apilog.Base_add(`Info`)
+ if api_limit.TO() {
+ return
+ } //超额请求阻塞,超时将取消
+
+ //html
+ {
+ req := reqf.New()
+ if err := req.Reqf(reqf.Rval{
+ Url: `https://api.bilibili.com/x/space/acc/info?mid=` + strconv.Itoa(UpUid) + `&jsonp=jsonp`,
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
+ return
+ }
+
+ //Info
+ {
+ if e := json.Unmarshal(req.Respon, &info); e != nil {
+ apilog.L(`E: `, e)
+ return
+ } else if info.Code != 0 {
+ apilog.L(`E: `, info.Message)
+ return
+ }
+ }
+ }
+ return
+}
+
//调用记录
var boot_Get_cookie funcCtrl.FlashFunc //新的替代旧的
//扫码登录
-func Get_cookie() (missKey []string) {
+func (c *GetFunc) Get_cookie() (missKey []string) {
if v, ok := c.K_v.LoadV(`扫码登录`).(bool); !ok || !v {
return
}
}
-func CheckSwitch_FansMedal() (missKey []string) {
+func (c *GetFunc) CheckSwitch_FansMedal() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
//LIVE_BUVID
-func Get_LIVE_BUVID() (missKey []string) {
+func (c *GetFunc) Get_LIVE_BUVID() (missKey []string) {
apilog := apilog.Base_add(`LIVE_BUVID`).L(`T: `, `获取`)
if live_buvid, ok := c.Cookie.LoadV(`LIVE_BUVID`).(string); ok && live_buvid != `` {
}
//银瓜子2硬币
-func Silver_2_coin() (missKey []string) {
+func (c *GetFunc) Silver_2_coin() (missKey []string) {
apilog := apilog.Base_add(`银瓜子=>硬币`)
if !c.LIVE_BUVID {