From 814801ee04418d04a6d825f10d642fddc05d30bb Mon Sep 17 00:00:00 2001
From: qydysky <32743305+qydysky@users.noreply.github.com>
Date: Thu, 31 Mar 2022 16:02:43 +0800
Subject: [PATCH] =?utf8?q?=E4=BB=A3=E7=A0=81fix?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
---
F/api.go | 1900 +++++++++++++++++++++++++++++-------------------------
1 file changed, 1012 insertions(+), 888 deletions(-)
diff --git a/F/api.go b/F/api.go
index ef0bd2c..c91a4d2 100644
--- a/F/api.go
+++ b/F/api.go
@@ -1,220 +1,222 @@
package F
import (
- "time"
- "os"
- "strconv"
- "strings"
- "context"
+ "context"
"encoding/json"
"net/http"
"net/url"
+ "os"
+ "strconv"
+ "strings"
+ "time"
c "github.com/qydysky/bili_danmu/CV"
J "github.com/qydysky/bili_danmu/Json"
+ "github.com/skratchdot/open-golang/open"
p "github.com/qydysky/part"
+ funcCtrl "github.com/qydysky/part/funcCtrl"
g "github.com/qydysky/part/get"
- web "github.com/qydysky/part/web"
- reqf "github.com/qydysky/part/reqf"
limit "github.com/qydysky/part/limit"
- funcCtrl "github.com/qydysky/part/funcCtrl"
+ reqf "github.com/qydysky/part/reqf"
+ web "github.com/qydysky/part/web"
uuid "github.com/gofrs/uuid"
- qr "github.com/skip2/go-qrcode"
"github.com/mdp/qrterminal/v3"
- "github.com/skratchdot/open-golang/open"
+ qr "github.com/skip2/go-qrcode"
)
var apilog = c.Log.Base(`api`)
-var api_limit = limit.New(1,2000,30000)//é¢çéå¶1次/2sï¼æå¤§çå¾
æ¶é´30s
+var api_limit = limit.New(1, 2000, 30000) //é¢çéå¶1次/2sï¼æå¤§çå¾
æ¶é´30s
func Get(key string) {
apilog := apilog.Base_add(`Get`)
- if api_limit.TO() {return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+ if api_limit.TO() {
+ return
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
- var api_can_get = map[string][]func()([]string){
- `Cookie`:[]func()([]string){//Cookie
+ var api_can_get = map[string][]func() []string{
+ `Cookie`: { //Cookie
Get_cookie,
},
- `Uid`:[]func()([]string){//ç¨æ¶uid
+ `Uid`: { //ç¨æ¶uid
GetUid,
},
- `UpUid`:[]func()([]string){//主æuid
+ `UpUid`: { //主æuid
getInfoByRoom,
getRoomPlayInfo,
Html,
},
- `Live_Start_Time`:[]func()([]string){//ç´æå¼å§æ¶é´
+ `Live_Start_Time`: { //ç´æå¼å§æ¶é´
getInfoByRoom,
getRoomPlayInfo,
Html,
},
- `Liveing`:[]func()([]string){//æ¯å¦å¨ç´æ
+ `Liveing`: { //æ¯å¦å¨ç´æ
getInfoByRoom,
getRoomPlayInfo,
Html,
},
- `Title`:[]func()([]string){//ç´æé´æ é¢
+ `Title`: { //ç´æé´æ é¢
getInfoByRoom,
Html,
},
- `Uname`:[]func()([]string){//主æå
+ `Uname`: { //主æå
getInfoByRoom,
Html,
},
- `ParentAreaID`:[]func()([]string){//ååº
+ `ParentAreaID`: { //ååº
getInfoByRoom,
Html,
},
- `AreaID`:[]func()([]string){//åååº
+ `AreaID`: { //åååº
getInfoByRoom,
Html,
},
- `Roomid`:[]func()([]string){//æ¿é´id
+ `Roomid`: { //æ¿é´id
missRoomId,
},
- `GuardNum`:[]func()([]string){//è°é¿æ°
+ `GuardNum`: { //è°é¿æ°
Get_guardNum,
getInfoByRoom,
getRoomPlayInfo,
Html,
},
- `Note`:[]func()([]string){//ååºæè¡
+ `Note`: { //ååºæè¡
Get_HotRank,
getInfoByRoom,
Html,
},
- `Locked`:[]func()([]string){//ç´æé´æ¯å¦è¢«å°ç¦
+ `Locked`: { //ç´æé´æ¯å¦è¢«å°ç¦
getInfoByRoom,
Html,
},
- `Live_qn`:[]func()([]string){//å½åç´ææµè´¨é
+ `Live_qn`: { //å½åç´ææµè´¨é
getRoomPlayInfo,
Html,
},
- `AcceptQn`:[]func()([]string){//å
è®¸çæ¸
æ°åº¦
+ `AcceptQn`: { //å
è®¸çæ¸
æ°åº¦
getRoomPlayInfo,
Html,
},
- `Live`:[]func()([]string){//ç´ææµé¾æ¥
+ `Live`: { //ç´ææµé¾æ¥
getRoomPlayInfoByQn,
getRoomPlayInfo,
Html,
},
- `Token`:[]func()([]string){//å¼¹å¹é¥
+ `Token`: { //å¼¹å¹é¥
getDanmuInfo,
},
- `WSURL`:[]func()([]string){//å¼¹å¹é¾æ¥
+ `WSURL`: { //å¼¹å¹é¾æ¥
getDanmuInfo,
},
// `VERSION`:[]func()([]string){//客æ·çæ¬ ä¸åéè¦
// Get_Version,
// },
- `LIVE_BUVID`:[]func()([]string){//LIVE_BUVID
+ `LIVE_BUVID`: { //LIVE_BUVID
Get_LIVE_BUVID,
},
- `Silver_2_coin`:[]func()([]string){//é¶çå2硬å¸
+ `Silver_2_coin`: { //é¶çå2硬å¸
Silver_2_coin,
},
- `CheckSwitch_FansMedal`:[]func()([]string){//忢ç²ä¸ç
+ `CheckSwitch_FansMedal`: { //忢ç²ä¸ç
CheckSwitch_FansMedal,
},
}
- var check = map[string]func()(bool){
- `Uid`:func()(bool){//ç¨æ¶uid
+ var check = map[string]func() bool{
+ `Uid`: func() bool { //ç¨æ¶uid
return c.Uid != 0
},
- `UpUid`:func()(bool){//主æuid
+ `UpUid`: func() bool { //主æuid
return c.UpUid != 0
},
- `Live_Start_Time`:func()(bool){//ç´æå¼å§æ¶é´
+ `Live_Start_Time`: func() bool { //ç´æå¼å§æ¶é´
return c.Live_Start_Time != time.Time{}
},
- `Liveing`:func()(bool){//æ¯å¦å¨ç´æ
+ `Liveing`: func() bool { //æ¯å¦å¨ç´æ
return true
},
- `Title`:func()(bool){//ç´æé´æ é¢
+ `Title`: func() bool { //ç´æé´æ é¢
return c.Title != ``
},
- `Uname`:func()(bool){//主æå
+ `Uname`: func() bool { //主æå
return c.Uname != ``
},
- `ParentAreaID`:func()(bool){//ååº
+ `ParentAreaID`: func() bool { //ååº
return c.ParentAreaID != 0
},
- `AreaID`:func()(bool){//åååº
+ `AreaID`: func() bool { //åååº
return c.AreaID != 0
},
- `Roomid`:func()(bool){//æ¿é´id
+ `Roomid`: func() bool { //æ¿é´id
return c.Roomid != 0
},
- `GuardNum`:func()(bool){//è°é¿æ°
+ `GuardNum`: func() bool { //è°é¿æ°
return c.GuardNum != 0
},
- `Note`:func()(bool){//ååºæè¡
+ `Note`: func() bool { //ååºæè¡
return c.Note != ``
},
- `Locked`:func()(bool){//ç´æé´æ¯å¦è¢«å°ç¦
+ `Locked`: func() bool { //ç´æé´æ¯å¦è¢«å°ç¦
return true
},
- `Live_qn`:func()(bool){//å½åç´ææµè´¨é
+ `Live_qn`: func() bool { //å½åç´ææµè´¨é
return c.Live_qn != 0
},
- `AcceptQn`:func()(bool){//å
è®¸çæ¸
æ°åº¦
+ `AcceptQn`: func() bool { //å
è®¸çæ¸
æ°åº¦
return len(c.AcceptQn) != 0
},
- `Live`:func()(bool){//ç´ææµé¾æ¥
+ `Live`: func() bool { //ç´ææµé¾æ¥
return len(c.Live) != 0
},
- `Token`:func()(bool){//å¼¹å¹é¥
+ `Token`: func() bool { //å¼¹å¹é¥
return c.Token != ``
},
- `WSURL`:func()(bool){//å¼¹å¹é¾æ¥
+ `WSURL`: func() bool { //å¼¹å¹é¾æ¥
return len(c.WSURL) != 0
},
// `VERSION`:func()(bool){//客æ·çæ¬ ä¸åéè¦
// return c.VERSION != `2.0.11`
// },
- `LIVE_BUVID`:func()(bool){//LIVE_BUVID
+ `LIVE_BUVID`: func() bool { //LIVE_BUVID
return c.LIVE_BUVID
},
- `Silver_2_coin`:func()(bool){//é¶çå2硬å¸
+ `Silver_2_coin`: func() bool { //é¶çå2硬å¸
return true
},
- `CheckSwitch_FansMedal`:func()(bool){//忢ç²ä¸ç
+ `CheckSwitch_FansMedal`: func() bool { //忢ç²ä¸ç
return true
},
- `Cookie`:func()(bool){//Cookie
+ `Cookie`: func() bool { //Cookie
return true
},
}
- if fList,ok := api_can_get[key];ok{
- for _,fItem := range fList{
+ if fList, ok := api_can_get[key]; ok {
+ for _, fItem := range fList {
apilog.L(`T: `, `Get`, key)
missKey := fItem()
if len(missKey) > 0 {
- apilog.L(`T: `,`missKey when get`,key,missKey)
- for _,misskeyitem := range missKey{
- if checkf,ok := check[misskeyitem];ok && checkf() {
+ apilog.L(`T: `, `missKey when get`, key, missKey)
+ for _, misskeyitem := range missKey {
+ if checkf, ok := check[misskeyitem]; ok && checkf() {
continue
}
if misskeyitem == key {
- apilog.L(`W: `,`missKey equrt key`,key,missKey)
+ apilog.L(`W: `, `missKey equrt key`, key, missKey)
continue
}
Get(misskeyitem)
}
missKey := fItem()
if len(missKey) > 0 {
- apilog.L(`W: `,`missKey when get`,key,missKey)
+ apilog.L(`W: `, `missKey when get`, key, missKey)
continue
}
}
- if checkf,ok := check[key];ok && checkf() {
+ if checkf, ok := check[key]; ok && checkf() {
break
}
}
@@ -222,9 +224,9 @@ func Get(key string) {
}
func GetUid() (missKey []string) {
- if uid,ok := c.Cookie.LoadV(`DedeUserID`).(string);!ok{//cookie䏿 DedeUserID
+ if uid, ok := c.Cookie.LoadV(`DedeUserID`).(string); !ok { //cookie䏿 DedeUserID
missKey = append(missKey, `Cookie`)
- } else if uid,e := strconv.Atoi(uid);e != nil{
+ } else if uid, e := strconv.Atoi(uid); e != nil {
missKey = append(missKey, `Cookie`)
} else {
c.Uid = uid
@@ -234,24 +236,26 @@ func GetUid() (missKey []string) {
func Info(UpUid int) (info J.Info) {
apilog := apilog.Base_add(`Info`)
- if api_limit.TO() {return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+ 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)
+ 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{
+ if e := json.Unmarshal(req.Respon, &info); e != nil {
apilog.L(`E: `, e)
return
} else if info.Code != 0 {
@@ -272,32 +276,32 @@ func Html() (missKey []string) {
}
Roomid := strconv.Itoa(c.Roomid)
-
+
//html
{
r := g.Get(reqf.Rval{
- Url:"https://live.bilibili.com/" + Roomid,
- Proxy:c.Proxy,
+ Url: "https://live.bilibili.com/" + Roomid,
+ Proxy: c.Proxy,
})
- if tmp := r.S(``, 0, 0);tmp.Err != nil {
+ if tmp := r.S(``, 0, 0); tmp.Err != nil {
apilog.L(`E: `, `ä¸åå¨`)
} else {
s := tmp.RS[0]
//Roominitres
{
- var j struct{
- Roominitres J.Roominitres `json:"roomInitRes"`
+ var j struct {
+ Roominitres J.Roominitres `json:"roomInitRes"`
}
- if e := json.Unmarshal([]byte(s),&j);e != nil{
+ if e := json.Unmarshal([]byte(s), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Roominitres.Code != 0 {
apilog.L(`E: `, j.Roominitres.Message)
return
}
-
+
//主æuid
c.UpUid = j.Roominitres.Data.UID
//æ¿é´å·ï¼å®æ´ï¼
@@ -305,10 +309,10 @@ func Html() (missKey []string) {
c.Roomid = j.Roominitres.Data.RoomID
}
//ç´æå¼å§æ¶é´
- c.Live_Start_Time = time.Unix(int64(j.Roominitres.Data.LiveTime),0)
+ c.Live_Start_Time = time.Unix(int64(j.Roominitres.Data.LiveTime), 0)
//æ¯å¦å¨ç´æ
c.Liveing = j.Roominitres.Data.LiveStatus == 1
-
+
//æªå¨ç´æï¼ä¸è·åç´ææµ
if !c.Liveing {
c.Live_qn = 0
@@ -321,50 +325,58 @@ func Html() (missKey []string) {
{
type Stream_name struct {
Protocol_name string
- Format_name string
- Codec_name string
+ Format_name string
+ Codec_name string
}
var name_map = map[string]Stream_name{
- `flv`: Stream_name{
- Protocol_name:"http_stream",
- Format_name:"flv",
- Codec_name:"avc",
+ `flv`: {
+ Protocol_name: "http_stream",
+ Format_name: "flv",
+ Codec_name: "avc",
},
- `hls`: Stream_name{
- Protocol_name:"http_hls",
- Format_name:"fmp4",
- Codec_name:"avc",
+ `hls`: {
+ Protocol_name: "http_hls",
+ Format_name: "fmp4",
+ Codec_name: "avc",
},
}
-
+
want_type := name_map[`hls`]
- if v,ok := c.K_v.LoadV(`ç´ææµç±»å`).(string);ok {
- if v,ok := name_map[v];ok {
+ if v, ok := c.K_v.LoadV(`ç´ææµç±»å`).(string); ok {
+ if v, ok := name_map[v]; ok {
want_type = v
} else {
- apilog.L(`I: `, `æªæ¾å°`,v,`,é»è®¤hls`)
+ apilog.L(`I: `, `æªæ¾å°`, v, `,é»è®¤hls`)
}
} else {
apilog.L(`T: `, `é»è®¤flv`)
}
-
- for _,v := range j.Roominitres.Data.PlayurlInfo.Playurl.Stream {
- if v.ProtocolName != want_type.Protocol_name {continue}
-
- for _,v := range v.Format {
- if v.FormatName != want_type.Format_name {continue}
-
- for _,v := range v.Codec {
- if v.CodecName != want_type.Codec_name {continue}
-
+
+ for _, v := range j.Roominitres.Data.PlayurlInfo.Playurl.Stream {
+ if v.ProtocolName != want_type.Protocol_name {
+ continue
+ }
+
+ for _, v := range v.Format {
+ if v.FormatName != want_type.Format_name {
+ continue
+ }
+
+ for _, v := range v.Codec {
+ if v.CodecName != want_type.Codec_name {
+ continue
+ }
+
//å½åç´ææµè´¨é
c.Live_qn = v.CurrentQn
- if c.Live_want_qn == 0 {c.Live_want_qn = v.CurrentQn}
+ if c.Live_want_qn == 0 {
+ c.Live_want_qn = v.CurrentQn
+ }
//å
è®¸çæ¸
æ°åº¦
{
var tmp = make(map[int]string)
- for _,v := range v.AcceptQn {
- if s,ok := c.Qn[v];ok{
+ for _, v := range v.AcceptQn {
+ if s, ok := c.Qn[v]; ok {
tmp[v] = s
}
}
@@ -372,7 +384,7 @@ func Html() (missKey []string) {
}
//ç´ææµé¾æ¥
c.Live = []string{}
- for _,v1 := range v.URLInfo {
+ for _, v1 := range v.URLInfo {
c.Live = append(c.Live, v1.Host+v.BaseURL+v1.Extra)
}
}
@@ -383,11 +395,11 @@ func Html() (missKey []string) {
//Roominfores
{
- var j struct{
+ var j struct {
Roominfores J.Roominfores `json:"roomInitRes"`
}
- if e := json.Unmarshal([]byte(s),&j);e != nil{
+ if e := json.Unmarshal([]byte(s), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Roominfores.Code != 0 {
@@ -407,14 +419,14 @@ func Html() (missKey []string) {
c.GuardNum = j.Roominfores.Data.GuardInfo.Count
//ååºæè¡
c.Note = j.Roominfores.Data.HotRankInfo.AreaName
- if rank := j.Roominfores.Data.HotRankInfo.Rank;rank > 50 || rank == 0 {
+ if rank := j.Roominfores.Data.HotRankInfo.Rank; rank > 50 || rank == 0 {
c.Note += "50+"
} else {
c.Note += strconv.Itoa(rank)
}
//ç´æé´æ¯å¦è¢«å°ç¦
- if j.Roominfores.Data.RoomInfo.LockStatus == 1{
- apilog.L(`W: `,"ç´æé´å°ç¦ä¸")
+ if j.Roominfores.Data.RoomInfo.LockStatus == 1 {
+ apilog.L(`W: `, "ç´æé´å°ç¦ä¸")
c.Locked = true
return
}
@@ -425,7 +437,7 @@ func Html() (missKey []string) {
}
func missRoomId() (missKey []string) {
- apilog.Base_add(`missRoomId`).L(`E: `,`missRoomId`)
+ apilog.Base_add(`missRoomId`).L(`E: `, `missRoomId`)
return
}
@@ -439,18 +451,18 @@ func getInfoByRoom() (missKey []string) {
Roomid := strconv.Itoa(c.Roomid)
- {//使ç¨å
¶ä»api
+ { //使ç¨å
¶ä»api
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getInfoByRoom?room_id=" + Roomid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + Roomid,
+ Url: "https://api.live.bilibili.com/xlive/web-room/v1/index/getInfoByRoom?room_id=" + Roomid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + Roomid,
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
@@ -458,7 +470,7 @@ func getInfoByRoom() (missKey []string) {
{
var j J.Roominfores
- if e := json.Unmarshal(req.Respon,&j);e != nil{
+ if e := json.Unmarshal(req.Respon, &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -467,7 +479,7 @@ func getInfoByRoom() (missKey []string) {
}
//ç´æå¼å§æ¶é´
- c.Live_Start_Time = time.Unix(int64(j.Data.RoomInfo.LiveStartTime),0)
+ c.Live_Start_Time = time.Unix(int64(j.Data.RoomInfo.LiveStartTime), 0)
//æ¯å¦å¨ç´æ
c.Liveing = j.Data.RoomInfo.LiveStatus == 1
//ç´æé´æ é¢
@@ -488,14 +500,14 @@ func getInfoByRoom() (missKey []string) {
c.GuardNum = j.Data.GuardInfo.Count
//ååºæè¡
c.Note = j.Data.HotRankInfo.AreaName
- if rank := j.Data.HotRankInfo.Rank;rank > 50 || rank == 0 {
+ if rank := j.Data.HotRankInfo.Rank; rank > 50 || rank == 0 {
c.Note += "50+"
} else {
c.Note += strconv.Itoa(rank)
}
//ç´æé´æ¯å¦è¢«å°ç¦
- if j.Data.RoomInfo.LockStatus == 1{
- apilog.L(`W: `,"ç´æé´å°ç¦ä¸")
+ if j.Data.RoomInfo.LockStatus == 1 {
+ apilog.L(`W: `, "ç´æé´å°ç¦ä¸")
c.Locked = true
return
}
@@ -513,36 +525,38 @@ func getRoomPlayInfo() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
-
+ if len(missKey) > 0 {
+ return
+ }
+
Roomid := strconv.Itoa(c.Roomid)
-
+
//Roominitres
{
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?no_playurl=0&mask=1&qn=0&platform=web&protocol=0,1&format=0,2&codec=0,1&room_id=" + Roomid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + Roomid,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: "https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?no_playurl=0&mask=1&qn=0&platform=web&protocol=0,1&format=0,2&codec=0,1&room_id=" + Roomid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + Roomid,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var j J.Roominitres
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -553,14 +567,14 @@ func getRoomPlayInfo() (missKey []string) {
//主æuid
c.UpUid = j.Data.UID
//æ¿é´å·ï¼å®æ´ï¼
- if j.Data.RoomID != 0{
+ if j.Data.RoomID != 0 {
c.Roomid = j.Data.RoomID
}
//ç´æå¼å§æ¶é´
- c.Live_Start_Time = time.Unix(int64(j.Data.LiveTime),0)
+ c.Live_Start_Time = time.Unix(int64(j.Data.LiveTime), 0)
//æ¯å¦å¨ç´æ
c.Liveing = j.Data.LiveStatus == 1
-
+
//æªå¨ç´æï¼ä¸è·åç´ææµ
if !c.Liveing {
c.Live_qn = 0
@@ -573,51 +587,59 @@ func getRoomPlayInfo() (missKey []string) {
{
type Stream_name struct {
Protocol_name string
- Format_name string
- Codec_name string
+ Format_name string
+ Codec_name string
}
var name_map = map[string]Stream_name{
- `flv`: Stream_name{
- Protocol_name:"http_stream",
- Format_name:"flv",
- Codec_name:"avc",
+ `flv`: {
+ Protocol_name: "http_stream",
+ Format_name: "flv",
+ Codec_name: "avc",
},
- `hls`: Stream_name{
- Protocol_name:"http_hls",
- Format_name:"fmp4",
- Codec_name:"avc",
+ `hls`: {
+ Protocol_name: "http_hls",
+ Format_name: "fmp4",
+ Codec_name: "avc",
},
}
-
+
want_type := name_map[`hls`]
- if v,ok := c.K_v.LoadV(`ç´ææµç±»å`).(string);ok {
- if v,ok := name_map[v];ok {
+ if v, ok := c.K_v.LoadV(`ç´ææµç±»å`).(string); ok {
+ if v, ok := name_map[v]; ok {
want_type = v
} else {
- apilog.L(`I: `, `æªæ¾å°`,v,`,é»è®¤hls`)
+ apilog.L(`I: `, `æªæ¾å°`, v, `,é»è®¤hls`)
}
} else {
apilog.L(`T: `, `é»è®¤hls`)
}
no_found_type := true
for {
- for _,v := range j.Data.PlayurlInfo.Playurl.Stream {
- if v.ProtocolName != want_type.Protocol_name {continue}
-
- for _,v := range v.Format {
- if v.FormatName != want_type.Format_name {continue}
-
- for _,v := range v.Codec {
- if v.CodecName != want_type.Codec_name {continue}
-
+ for _, v := range j.Data.PlayurlInfo.Playurl.Stream {
+ if v.ProtocolName != want_type.Protocol_name {
+ continue
+ }
+
+ for _, v := range v.Format {
+ if v.FormatName != want_type.Format_name {
+ continue
+ }
+
+ for _, v := range v.Codec {
+ if v.CodecName != want_type.Codec_name {
+ continue
+ }
+
//å½åç´ææµè´¨é
c.Live_qn = v.CurrentQn
- if c.Live_want_qn == 0 {c.Live_want_qn = v.CurrentQn}
+ if c.Live_want_qn == 0 {
+ c.Live_want_qn = v.CurrentQn
+ }
//å
è®¸çæ¸
æ°åº¦
{
var tmp = make(map[int]string)
- for _,v := range v.AcceptQn {
- if s,ok := c.Qn[v];ok{
+ for _, v := range v.AcceptQn {
+ if s, ok := c.Qn[v]; ok {
tmp[v] = s
}
}
@@ -625,7 +647,7 @@ func getRoomPlayInfo() (missKey []string) {
}
//ç´ææµé¾æ¥
c.Live = []string{}
- for _,v1 := range v.URLInfo {
+ for _, v1 := range v.URLInfo {
c.Live = append(c.Live, v1.Host+v.BaseURL+v1.Extra)
}
}
@@ -658,53 +680,57 @@ func getRoomPlayInfoByQn() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
+ if len(missKey) > 0 {
+ return
+ }
{
AcceptQn := []int{}
- for k,_ := range c.AcceptQn {
- if k <= c.Live_want_qn {AcceptQn = append(AcceptQn, k)}
+ for k, _ := range c.AcceptQn {
+ if k <= c.Live_want_qn {
+ AcceptQn = append(AcceptQn, k)
+ }
}
MaxQn := 0
- for i:=0; len(AcceptQn)>i; i+=1{
+ for i := 0; len(AcceptQn) > i; i += 1 {
if AcceptQn[i] > MaxQn {
MaxQn = AcceptQn[i]
}
}
if MaxQn == 0 {
- apilog.L(`W: `,"使ç¨é»è®¤")
+ apilog.L(`W: `, "使ç¨é»è®¤")
}
c.Live_qn = MaxQn
}
-
+
Roomid := strconv.Itoa(c.Roomid)
-
+
//Roominitres
{
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?no_playurl=0&mask=1&qn="+ strconv.Itoa(c.Live_qn) +"&platform=web&protocol=0,1&format=0,2&codec=0,1&room_id=" + Roomid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + Roomid,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: "https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?no_playurl=0&mask=1&qn=" + strconv.Itoa(c.Live_qn) + "&platform=web&protocol=0,1&format=0,2&codec=0,1&room_id=" + Roomid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + Roomid,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var j J.Roominitres
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -715,14 +741,14 @@ func getRoomPlayInfoByQn() (missKey []string) {
//主æuid
c.UpUid = j.Data.UID
//æ¿é´å·ï¼å®æ´ï¼
- if j.Data.RoomID != 0{
+ if j.Data.RoomID != 0 {
c.Roomid = j.Data.RoomID
}
//ç´æå¼å§æ¶é´
- c.Live_Start_Time = time.Unix(int64(j.Data.LiveTime),0)
+ c.Live_Start_Time = time.Unix(int64(j.Data.LiveTime), 0)
//æ¯å¦å¨ç´æ
c.Liveing = j.Data.LiveStatus == 1
-
+
//æªå¨ç´æï¼ä¸è·åç´ææµ
if !c.Liveing {
c.Live_qn = 0
@@ -735,54 +761,62 @@ func getRoomPlayInfoByQn() (missKey []string) {
{
type Stream_name struct {
Protocol_name string
- Format_name string
- Codec_name string
+ Format_name string
+ Codec_name string
}
var name_map = map[string]Stream_name{
- `flv`: Stream_name{
- Protocol_name:"http_stream",
- Format_name:"flv",
- Codec_name:"avc",
+ `flv`: {
+ Protocol_name: "http_stream",
+ Format_name: "flv",
+ Codec_name: "avc",
},
- `hls`: Stream_name{
- Protocol_name:"http_hls",
- Format_name:"fmp4",
- Codec_name:"avc",
+ `hls`: {
+ Protocol_name: "http_hls",
+ Format_name: "fmp4",
+ Codec_name: "avc",
},
}
-
+
want_type := name_map[`hls`]
- if v,ok := c.K_v.LoadV(`ç´ææµç±»å`).(string);ok {
- if v,ok := name_map[v];ok {
+ if v, ok := c.K_v.LoadV(`ç´ææµç±»å`).(string); ok {
+ if v, ok := name_map[v]; ok {
want_type = v
} else {
- apilog.L(`I: `, `æªæ¾å°`,v,`,é»è®¤hls`)
+ apilog.L(`I: `, `æªæ¾å°`, v, `,é»è®¤hls`)
}
} else {
apilog.L(`T: `, `é»è®¤hls`)
}
-
+
no_found_type := true
for {
- for _,v := range j.Data.PlayurlInfo.Playurl.Stream {
- if v.ProtocolName != want_type.Protocol_name {continue}
-
- for _,v := range v.Format {
- if v.FormatName != want_type.Format_name {continue}
-
- for _,v := range v.Codec {
- if v.CodecName != want_type.Codec_name {continue}
-
+ for _, v := range j.Data.PlayurlInfo.Playurl.Stream {
+ if v.ProtocolName != want_type.Protocol_name {
+ continue
+ }
+
+ for _, v := range v.Format {
+ if v.FormatName != want_type.Format_name {
+ continue
+ }
+
+ for _, v := range v.Codec {
+ if v.CodecName != want_type.Codec_name {
+ continue
+ }
+
no_found_type = false
-
+
//å½åç´ææµè´¨é
c.Live_qn = v.CurrentQn
- if c.Live_want_qn == 0 {c.Live_want_qn = v.CurrentQn}
+ if c.Live_want_qn == 0 {
+ c.Live_want_qn = v.CurrentQn
+ }
//å
è®¸çæ¸
æ°åº¦
{
var tmp = make(map[int]string)
- for _,v := range v.AcceptQn {
- if s,ok := c.Qn[v];ok{
+ for _, v := range v.AcceptQn {
+ if s, ok := c.Qn[v]; ok {
tmp[v] = s
}
}
@@ -790,7 +824,7 @@ func getRoomPlayInfoByQn() (missKey []string) {
}
//ç´ææµé¾æ¥
c.Live = []string{}
- for _,v1 := range v.URLInfo {
+ for _, v1 := range v.URLInfo {
c.Live = append(c.Live, v1.Host+v.BaseURL+v1.Extra)
}
}
@@ -809,7 +843,7 @@ func getRoomPlayInfoByQn() (missKey []string) {
break
}
}
- if s,ok := c.Qn[c.Live_qn];!ok{
+ if s, ok := c.Qn[c.Live_qn]; !ok {
apilog.L(`W: `, `æªç¥æ¸
æ°åº¦`, c.Live_qn)
} else {
apilog.L(`I: `, s)
@@ -828,86 +862,92 @@ func getDanmuInfo() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
+ if len(missKey) > 0 {
+ return
+ }
Roomid := strconv.Itoa(c.Roomid)
-
+
//GetDanmuInfo
{
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?type=0&id=" + Roomid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + Roomid,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?type=0&id=" + Roomid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + Roomid,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var j J.GetDanmuInfo
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
apilog.L(`E: `, j.Message)
return
}
-
+
//å¼¹å¹é¥
c.Token = j.Data.Token
//å¼¹å¹é¾æ¥
- for _,v := range j.Data.HostList {
- c.WSURL = append(c.WSURL, "wss://" + v.Host + "/sub")
+ for _, v := range j.Data.HostList {
+ c.WSURL = append(c.WSURL, "wss://"+v.Host+"/sub")
}
}
return
}
-func Get_face_src(uid string) (string) {
- if uid == "" {return ""}
- if api_limit.TO() {return ""}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+func Get_face_src(uid string) string {
+ if uid == "" {
+ return ""
+ }
+ if api_limit.TO() {
+ return ""
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
apilog := apilog.Base_add(`è·å头å`)
-
+
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuMedalAnchorInfo?ruid=" + uid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuMedalAnchorInfo?ruid=" + uid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return ""
}
res := string(req.Respon)
- if msg := p.Json().GetValFromS(res, "message");msg == nil || msg != "0" {
- apilog.L(`E: `,"message", msg)
+ if msg := p.Json().GetValFromS(res, "message"); msg == nil || msg != "0" {
+ apilog.L(`E: `, "message", msg)
return ""
}
rface := p.Json().GetValFromS(res, "data.rface")
if rface == nil {
- apilog.L(`E: `,"data.rface", rface)
+ apilog.L(`E: `, "data.rface", rface)
return ""
}
return rface.(string) + `@58w_58h`
@@ -928,45 +968,47 @@ func Get_HotRank() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
+ if len(missKey) > 0 {
+ return
+ }
Roomid := strconv.Itoa(c.Roomid)
-
+
//getHotRank
{
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/general-interface/v1/rank/getHotRank?ruid=`+strconv.Itoa(c.UpUid)+`&room_id=`+Roomid+`&is_pre=0&page_size=50&source=2&area_id=`+strconv.Itoa(c.ParentAreaID),
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/general-interface/v1/rank/getHotRank?ruid=` + strconv.Itoa(c.UpUid) + `&room_id=` + Roomid + `&is_pre=0&page_size=50&source=2&area_id=` + strconv.Itoa(c.ParentAreaID),
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/" + Roomid,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/" + Roomid,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var j J.GetHotRank
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -998,45 +1040,47 @@ func Get_guardNum() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
+ if len(missKey) > 0 {
+ return
+ }
Roomid := strconv.Itoa(c.Roomid)
-
+
//Get_guardNum
{
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/app-room/v2/guardTab/topList?roomid=`+Roomid+`&page=1&ruid=`+strconv.Itoa(c.UpUid)+`&page_size=29`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/app-room/v2/guardTab/topList?roomid=` + Roomid + `&page=1&ruid=` + strconv.Itoa(c.UpUid) + `&page_size=29`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/" + Roomid,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/" + Roomid,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var j J.GetGuardNum
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -1058,7 +1102,7 @@ func Get_guardNum() (missKey []string) {
// if len(missKey) != 0 {return}
// Roomid := strconv.Itoa(c.Roomid)
-
+
// apilog := apilog.Base_add(`è·å客æ·çæ¬`)
// var player_js_url string
@@ -1115,23 +1159,25 @@ func Get_guardNum() (missKey []string) {
// }
//è°ç¨è®°å½
-var boot_Get_cookie funcCtrl.FlashFunc//æ°çæ¿ä»£æ§ç
+var boot_Get_cookie funcCtrl.FlashFunc //æ°çæ¿ä»£æ§ç
//æ«ç ç»å½
func Get_cookie() (missKey []string) {
- if v,ok := c.K_v.LoadV(`æ«ç ç»å½`).(bool);!ok || !v {return}
+ if v, ok := c.K_v.LoadV(`æ«ç ç»å½`).(bool); !ok || !v {
+ return
+ }
apilog := apilog.Base_add(`è·åCookie`)
-
- if p.Checkfile().IsExist("cookie.txt") {//读åcookieæä»¶
- if cookieString := string(CookieGet());cookieString != ``{
- for k,v := range reqf.Cookies_String_2_Map(cookieString){//cookieåå
¥å
¨å±åésyncmap
+
+ if p.Checkfile().IsExist("cookie.txt") { //读åcookieæä»¶
+ if cookieString := string(CookieGet()); cookieString != `` {
+ for k, v := range reqf.Cookies_String_2_Map(cookieString) { //cookieåå
¥å
¨å±åésyncmap
c.Cookie.Store(k, v)
}
if miss := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
- });len(miss) == 0 {
+ }); len(miss) == 0 {
return
}
}
@@ -1143,26 +1189,26 @@ func Get_cookie() (missKey []string) {
var img_url string
var oauth string
- {//è·åäºç»´ç
+ { //è·åäºç»´ç
r := reqf.New()
if e := r.Reqf(reqf.Rval{
- Url:`https://passport.bilibili.com/qrcode/getLoginUrl`,
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });e != nil {
- apilog.L(`E: `,e)
+ Url: `https://passport.bilibili.com/qrcode/getLoginUrl`,
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); e != nil {
+ apilog.L(`E: `, e)
return
}
- var res struct{
- Code int `json:"code"`
+ var res struct {
+ Code int `json:"code"`
Status bool `json:"status"`
- Data struct{
- Url string `json:"url"`
+ Data struct {
+ Url string `json:"url"`
OauthKey string `json:"oauthKey"`
} `json:"data"`
}
- if e := json.Unmarshal(r.Respon, &res);e != nil {
+ if e := json.Unmarshal(r.Respon, &res); e != nil {
apilog.L(`E: `, e)
return
}
@@ -1174,136 +1220,155 @@ func Get_cookie() (missKey []string) {
apilog.L(`E: `, `status == false`)
return
}
-
+
if res.Data.Url == `` {
apilog.L(`E: `, `Data.Urls == ""`)
return
- } else {img_url = res.Data.Url}
+ } else {
+ img_url = res.Data.Url
+ }
if res.Data.OauthKey == `` {
apilog.L(`E: `, `Data.OauthKey == ""`)
return
- } else {oauth = res.Data.OauthKey}
+ } else {
+ oauth = res.Data.OauthKey
+ }
}
//ææ°å®ä¾ï¼éåº
- if boot_Get_cookie.NeedExit(id) {return}
+ if boot_Get_cookie.NeedExit(id) {
+ return
+ }
var server = &http.Server{
- Addr: p.Sys().GetIntranetIp()+":"+strconv.Itoa(p.Sys().GetFreePort()),
+ Addr: p.Sys().GetIntranetIp() + ":" + strconv.Itoa(p.Sys().GetFreePort()),
}
- {//çæäºç»´ç
- qr.WriteFile(img_url,qr.Medium,256,`qr.png`)
+ { //çæäºç»´ç
+ qr.WriteFile(img_url, qr.Medium, 256, `qr.png`)
if !p.Checkfile().IsExist(`qr.png`) {
- apilog.L(`E: `,`qr error`)
+ apilog.L(`E: `, `qr error`)
return
}
//å¯å¨web
s := web.New(server)
- s.Handle(map[string]func(http.ResponseWriter,*http.Request){
- `/`:func(w http.ResponseWriter,r *http.Request){
+ s.Handle(map[string]func(http.ResponseWriter, *http.Request){
+ `/`: func(w http.ResponseWriter, r *http.Request) {
var path string = r.URL.Path[1:]
- if path == `` {path = `index.html`}
+ if path == `` {
+ path = `index.html`
+ }
http.ServeFile(w, r, path)
},
- `/exit`:func(w http.ResponseWriter,r *http.Request){
+ `/exit`: func(w http.ResponseWriter, r *http.Request) {
s.Server.Shutdown(context.Background())
},
})
defer server.Shutdown(context.Background())
- if c.K_v.LoadV(`æ«ç ç»å½èªå¨æå¼æ ç¾é¡µ`).(bool) {open.Run(`http://`+server.Addr+`/qr.png`)}
+ if c.K_v.LoadV(`æ«ç ç»å½èªå¨æå¼æ ç¾é¡µ`).(bool) {
+ open.Run(`http://` + server.Addr + `/qr.png`)
+ }
apilog.Block(1000)
//show qr code in cmd
qrterminal.GenerateWithConfig(img_url, qrterminal.Config{
- Level: qrterminal.L,
- Writer: os.Stdout,
+ Level: qrterminal.L,
+ Writer: os.Stdout,
BlackChar: ` `,
WhiteChar: `OO`,
})
- apilog.L(`W: `,`æå¼é¾æ¥æ«ç (å½ä»¤è¡é»åº)ç»å½ï¼`,`http://`+server.Addr+`/qr.png`)
+ apilog.L(`W: `, `ææºæ«å½ä»¤è¡äºç»´ç ç»å½`)
+ apilog.L(`W: `, `ææå¼é¾æ¥æ«ç ç»å½ï¼`, `http://`+server.Addr+`/qr.png`)
p.Sys().Timeoutf(1)
}
-
+
//ææ°å®ä¾ï¼éåº
- if boot_Get_cookie.NeedExit(id) {return}
+ if boot_Get_cookie.NeedExit(id) {
+ return
+ }
var cookie string
- {//3så·æ°æ¥çæ¯å¦éè¿
- max_try := 20
-
+ { //å¾ªç¯æ¥çæ¯å¦éè¿
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
- for max_try > 0 {
- max_try -= 1
+ for {
+ //3så·æ°æ¥çæ¯å¦éè¿
p.Sys().Timeoutf(3)
-
+
//ææ°å®ä¾ï¼éåº
- if boot_Get_cookie.NeedExit(id) {return}
+ if boot_Get_cookie.NeedExit(id) {
+ return
+ }
r := reqf.New()
if e := r.Reqf(reqf.Rval{
- Url:`https://passport.bilibili.com/qrcode/getLoginInfo`,
- PostStr:`oauthKey=`+oauth,
- Header:map[string]string{
- `Content-Type`:`application/x-www-form-urlencoded; charset=UTF-8`,
- `Referer`: `https://passport.bilibili.com/login`,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: `https://passport.bilibili.com/qrcode/getLoginInfo`,
+ PostStr: `oauthKey=` + oauth,
+ Header: map[string]string{
+ `Content-Type`: `application/x-www-form-urlencoded; charset=UTF-8`,
+ `Referer`: `https://passport.bilibili.com/login`,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });e != nil {
- apilog.L(`E: `,e)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); e != nil {
+ apilog.L(`E: `, e)
return
}
- res := string(r.Respon)
- if v,ok := p.Json().GetValFromS(res, "status").(bool);!ok {
- apilog.L(`E: `,`getLoginInfo status false`)
- return
- } else if !v {
- if v,ok := p.Json().GetValFromS(res, "message").(string);ok {
- if max_try < 5 || max_try%5 == 0 {//åå°æ¥å¿é¢åº¦
- apilog.L(`W: `,`ç»å½ä¸`,v,max_try)
- }
+
+ var res struct {
+ Status bool `josn:"status"`
+ Message string `json:"message"`
+ }
+
+ if e := json.Unmarshal(r.Respon, &res); e != nil {
+ apilog.L(`E: `, e.Error(), string(r.Respon))
+ }
+
+ if !res.Status {
+ if res.Message == `Can't Match oauthKey~` {
+ apilog.L(`W: `, `ç»å½è¶
æ¶`)
+ return
}
- continue
} else {
- apilog.L(`W: `,`ç»å½ï¼å¹¶ä¿åäºcookie`)
- if v := r.Response.Cookies();len(v) == 0 {
- apilog.L(`E: `,`getLoginInfo cookies len == 0`)
+ apilog.L(`W: `, `ç»å½ï¼å¹¶ä¿åäºcookie`)
+ if v := r.Response.Cookies(); len(v) == 0 {
+ apilog.L(`E: `, `getLoginInfo cookies len == 0`)
return
} else {
- cookie = reqf.Map_2_Cookies_String(reqf.Cookies_List_2_Map(v))//cookie to string
+ cookie = reqf.Map_2_Cookies_String(reqf.Cookies_List_2_Map(v)) //cookie to string
}
if cookie == `` {
- apilog.L(`E: `,`getLoginInfo cookies ""`)
+ apilog.L(`E: `, `getLoginInfo cookies ""`)
return
- } else {break}
+ } else {
+ break
+ }
}
}
- if max_try <= 0 {
- apilog.L(`W: `,`ç»å½åæ¶`)
+ if len(cookie) == 0 {
return
}
- if len(cookie) == 0 {return}
}
//ææ°å®ä¾ï¼éåº
- if boot_Get_cookie.NeedExit(id) {return}
+ if boot_Get_cookie.NeedExit(id) {
+ return
+ }
- {//åå
¥cookie.txt
- for k,v := range reqf.Cookies_String_2_Map(cookie){
+ { //åå
¥cookie.txt
+ for k, v := range reqf.Cookies_String_2_Map(cookie) {
c.Cookie.Store(k, v)
}
//çæcookieString
cookieString := ``
{
- c.Cookie.Range(func(k,v interface{})(bool){
- cookieString += k.(string)+`=`+v.(string)+`; `
+ c.Cookie.Range(func(k, v interface{}) bool {
+ cookieString += k.(string) + `=` + v.(string) + `; `
return true
})
t := []rune(cookieString)
@@ -1314,9 +1379,11 @@ func Get_cookie() (missKey []string) {
}
//ææ°å®ä¾ï¼éåº
- if boot_Get_cookie.NeedExit(id) {return}
+ if boot_Get_cookie.NeedExit(id) {
+ return
+ }
- {//æ¸
ç
+ { //æ¸
ç
if p.Checkfile().IsExist(`qr.png`) {
os.RemoveAll(`qr.png`)
return
@@ -1329,158 +1396,161 @@ func Get_cookie() (missKey []string) {
func Get_cookie_by_msg() {
/*
- https://passport.bilibili.com/x/passport-login/web/sms/send
+ https://passport.bilibili.com/x/passport-login/web/sms/send
*/
}
//çå
-type TGet_list_in_room struct{
- Medal_id int `json:"medal_id"`//çåid
- 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:"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:亮)
+type TGet_list_in_room struct {
+ Medal_id int `json:"medal_id"` //çåid
+ 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:"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:亮)
}
+
//è·åçåä¿¡æ¯
func Get_list_in_room() (array []TGet_list_in_room) {
-
+
apilog := apilog.Base_add(`è·åçå`)
//éªè¯cookie
if missKey := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
return
}
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
- {//è·åçåå表
+ { //è·åçåå表
var medalList []TGet_list_in_room
- for pageNum:=1; true;pageNum+=1{
+ for pageNum := 1; true; pageNum += 1 {
r := reqf.New()
if e := r.Reqf(reqf.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`:reqf.Map_2_Cookies_String(Cookie),
+ Url: `https://api.live.bilibili.com/fans_medal/v5/live_fans_medal/iApiMedal?page=` + strconv.Itoa(pageNum) + `&pageSize=10`,
+ Header: map[string]string{
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });e != nil {
- apilog.L(`E: `,e)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); e != nil {
+ apilog.L(`E: `, e)
return
}
-
- var res struct{
- Code int `json:"code"`
- Msg string `json:"msg"`
+
+ 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{
+ Data struct {
+ FansMedalList []TGet_list_in_room `json:"fansMedalList"`
+ Pageinfo struct {
Totalpages int `json:"totalpages"`
- CurPage int `json:"curPage"`
+ CurPage int `json:"curPage"`
} `json:"pageinfo"`
} `json:"data"`
}
-
- if e := json.Unmarshal(r.Respon, &res);e != nil{
- apilog.L(`E: `,e)
+
+ 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)
+ apilog.L(`E: `, `è¿åcode`, res.Code, res.Msg)
return
}
medalList = append(medalList, res.Data.FansMedalList...)
- if res.Data.Pageinfo.CurPage == res.Data.Pageinfo.Totalpages {break}
+ if res.Data.Pageinfo.CurPage == res.Data.Pageinfo.Totalpages {
+ break
+ }
time.Sleep(time.Second)
}
-
return medalList
}
}
-type TGet_weared_medal struct{
- Medal_id int `json:"medal_id"`//çåid
- Medal_name string `json:"medal_name"`//çåå
- Target_id int `json:"target_id"`//çåup主uid
- Target_name string `json:"target_name"`//çåup主å
- Roominfo Roominfo `json:"roominfo"`//çåç´æé´
- Today_intimacy int `json:"today_intimacy"`//仿¥äº²å¯(0:æªåéå¼¹å¹ 100:å·²åéå¼¹å¹)
- Is_lighted int `json:"is_lighted"`//ç忝å¦çç(0:çç 1:亮)
+type TGet_weared_medal struct {
+ Medal_id int `json:"medal_id"` //çåid
+ Medal_name string `json:"medal_name"` //çåå
+ Target_id int `json:"target_id"` //çåup主uid
+ Target_name string `json:"target_name"` //çåup主å
+ Roominfo Roominfo `json:"roominfo"` //çåç´æé´
+ Today_intimacy int `json:"today_intimacy"` //仿¥äº²å¯(0:æªåéå¼¹å¹ 100:å·²åéå¼¹å¹)
+ Is_lighted int `json:"is_lighted"` //ç忝å¦çç(0:çç 1:亮)
}
-type Roominfo struct{
+type Roominfo struct {
Room_id int `json:"room_id"`
}
+
//è·åå½å佩æ´ççå
func Get_weared_medal() (item TGet_weared_medal) {
-
+
apilog := apilog.Base_add(`è·åçå`)
//éªè¯cookie
if missKey := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
return
}
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
- {//è·å
+ { //è·å
r := reqf.New()
if e := r.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/live_user/v1/UserInfo/get_weared_medal`,
- Header:map[string]string{
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ Url: `https://api.live.bilibili.com/live_user/v1/UserInfo/get_weared_medal`,
+ Header: map[string]string{
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });e != nil {
- apilog.L(`E: `,e)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ 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_weared_medal `json:"data"`
+ var res struct {
+ Code int `json:"code"`
+ Msg string `json:"msg"`
+ Message string `json:"message"`
+ Data TGet_weared_medal `json:"data"`
}
- if e := json.Unmarshal(r.Respon, &res);e != nil && res.Msg == ``{//æªä½©æ´æ¶çdataæ¯arrayåä¼å¯¼è´é误
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(r.Respon, &res); e != nil && res.Msg == `` { //æªä½©æ´æ¶çdataæ¯arrayåä¼å¯¼è´é误
+ apilog.L(`E: `, e)
return
}
if res.Code != 0 {
- apilog.L(`E: `,`è¿åcode`, res.Code, res.Msg)
+ apilog.L(`E: `, `è¿åcode`, res.Code, res.Msg)
return
}
return res.Data
}
-
+
}
func CheckSwitch_FansMedal() (missKey []string) {
@@ -1488,49 +1558,51 @@ func CheckSwitch_FansMedal() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if c.UpUid == 0{
+ if c.UpUid == 0 {
missKey = append(missKey, `UpUid`)
}
if len(missKey) > 0 {
return
}
-
+
apilog := apilog.Base_add(`忢ç²ä¸ç`)
//éªè¯cookie
if missCookie := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missCookie) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missCookie)
+ }); len(missCookie) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missCookie)
return
}
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
- {//è·åå½åçåï¼éªè¯æ¯å¦æ¬ç´æé´çå
+ { //è·åå½åçåï¼éªè¯æ¯å¦æ¬ç´æé´çå
res := Get_weared_medal()
- c.Wearing_FansMedal = res.Roominfo.Room_id//æ´æ°ä½©æ´ä¿¡æ¯
+ c.Wearing_FansMedal = res.Roominfo.Room_id //æ´æ°ä½©æ´ä¿¡æ¯
if res.Target_id == c.UpUid {
return
}
}
- var medal_id int//å°è¦ä½¿ç¨ççåid
+ var medal_id int //å°è¦ä½¿ç¨ççåid
//æ£æ¥æ¯å¦ææ¤ç´æé´ççå
{
medal_list := Get_list_in_room()
- for _,v := range medal_list {
- if v.Target_id != c.UpUid {continue}
+ for _, v := range medal_list {
+ if v.Target_id != c.UpUid {
+ continue
+ }
medal_id = v.Medal_id
}
- if medal_id == 0 {//æ ç
- apilog.L(`I: `,`æ 主æç²ä¸ç`)
- if c.Wearing_FansMedal == 0 {//å½å没ç
+ if medal_id == 0 { //æ ç
+ apilog.L(`I: `, `æ 主æç²ä¸ç`)
+ if c.Wearing_FansMedal == 0 { //å½å没ç
return
}
}
@@ -1540,46 +1612,49 @@ func CheckSwitch_FansMedal() (missKey []string) {
post_url string
post_str string
)
- {//çæä½©æ´ä¿¡æ¯
- csrf,_ := c.Cookie.LoadV(`bili_jct`).(string)
- if csrf == `` {apilog.L(`E: `,"Cookieé误,æ bili_jct=");return}
-
- post_str = `csrf_token=`+csrf+`&csrf=`+csrf
-
- if medal_id == 0 {//æ çï¼ä¸ä½©æ´çå
+ { //çæä½©æ´ä¿¡æ¯
+ csrf, _ := c.Cookie.LoadV(`bili_jct`).(string)
+ if csrf == `` {
+ apilog.L(`E: `, "Cookieé误,æ bili_jct=")
+ return
+ }
+
+ post_str = `csrf_token=` + csrf + `&csrf=` + csrf
+
+ if medal_id == 0 { //æ çï¼ä¸ä½©æ´çå
post_url = `https://api.live.bilibili.com/xlive/web-room/v1/fansMedal/take_off`
} else {
post_url = `https://api.live.bilibili.com/xlive/web-room/v1/fansMedal/wear`
- post_str = `medal_id=`+strconv.Itoa(medal_id)+`&`+post_str
+ post_str = `medal_id=` + strconv.Itoa(medal_id) + `&` + post_str
}
}
- {//忢çå
+ { //忢çå
r := reqf.New()
if e := r.Reqf(reqf.Rval{
- Url:post_url,
- PostStr:post_str,
- Header:map[string]string{
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
- `Content-Type`:`application/x-www-form-urlencoded; charset=UTF-8`,
- `Referer`: `https://passport.bilibili.com/login`,
+ Url: post_url,
+ PostStr: post_str,
+ Header: map[string]string{
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
+ `Content-Type`: `application/x-www-form-urlencoded; charset=UTF-8`,
+ `Referer`: `https://passport.bilibili.com/login`,
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });e != nil {
- apilog.L(`E: `,e)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); e != nil {
+ apilog.L(`E: `, e)
return
}
res := string(r.Respon)
- if v,ok := p.Json().GetValFromS(res, "code").(float64);ok && v == 0 {
- apilog.L(`I: `,`èªå¨åæ¢ç²ä¸ç id:`,medal_id)
- c.Wearing_FansMedal = medal_id//æ´æ°ä½©æ´ä¿¡æ¯
+ if v, ok := p.Json().GetValFromS(res, "code").(float64); ok && v == 0 {
+ apilog.L(`I: `, `èªå¨åæ¢ç²ä¸ç id:`, medal_id)
+ c.Wearing_FansMedal = medal_id //æ´æ°ä½©æ´ä¿¡æ¯
return
}
- if v,ok := p.Json().GetValFromS(res, "message").(string);ok {
- apilog.L(`E: `,`Get_FansMedal wear message`, v)
+ if v, ok := p.Json().GetValFromS(res, "message").(string); ok {
+ apilog.L(`E: `, `Get_FansMedal wear message`, v)
} else {
- apilog.L(`E: `,`Get_FansMedal wear message nil`)
+ apilog.L(`E: `, `Get_FansMedal wear message nil`)
}
}
return
@@ -1587,173 +1662,180 @@ func CheckSwitch_FansMedal() (missKey []string) {
//ç¾å°
func Dosign() {
- apilog := apilog.Base_add(`ç¾å°`).L(`T: `,`ç¾å°`)
+ apilog := apilog.Base_add(`ç¾å°`).L(`T: `, `ç¾å°`)
//éªè¯cookie
if missKey := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
return
}
-
- {//æ£æ¥æ¯å¦ç¾å°
+ { //æ£æ¥æ¯å¦ç¾å°
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/WebGetSignInfo`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/WebGetSignInfo`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/all",
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/all",
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
-
+
var msg struct {
- Code int `json:"code"`
+ Code int `json:"code"`
Message string `json:"message"`
- Data struct {
+ Data struct {
Status int `json:"status"`
} `json:"data"`
}
- if e := json.Unmarshal(req.Respon,&msg);e != nil{
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(req.Respon, &msg); e != nil {
+ apilog.L(`E: `, e)
}
- if msg.Code != 0 {apilog.L(`E: `,msg.Message);return}
- if msg.Data.Status == 1 {//仿¥å·²ç¾å°
+ if msg.Code != 0 {
+ apilog.L(`E: `, msg.Message)
+ return
+ }
+ if msg.Data.Status == 1 { //仿¥å·²ç¾å°
return
}
}
- {//ç¾å°
+ { //ç¾å°
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/all",
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/all",
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
-
+
var msg struct {
- Code int `json:"code"`
+ Code int `json:"code"`
Message string `json:"message"`
- Data struct {
+ Data struct {
HadSignDays int `json:"hadSignDays"`
} `json:"data"`
}
- if e := json.Unmarshal(req.Respon,&msg);e != nil{
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(req.Respon, &msg); e != nil {
+ apilog.L(`E: `, e)
}
- if msg.Code == 0 {apilog.L(`I: `,`ç¾å°æå!æ¬æå·²ç¾å°`, msg.Data.HadSignDays,`天`);return}
- apilog.L(`E: `,msg.Message)
+ if msg.Code == 0 {
+ apilog.L(`I: `, `ç¾å°æå!æ¬æå·²ç¾å°`, msg.Data.HadSignDays, `天`)
+ return
+ }
+ apilog.L(`E: `, msg.Message)
}
}
//LIVE_BUVID
func 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 != `` {
- apilog.L(`T: `,`åå¨`)
+ apilog := apilog.Base_add(`LIVE_BUVID`).L(`T: `, `è·å`)
+
+ if live_buvid, ok := c.Cookie.LoadV(`LIVE_BUVID`).(string); ok && live_buvid != `` {
+ apilog.L(`T: `, `åå¨`)
c.LIVE_BUVID = true
return
}
//彿¿é´å¤äºç¹æ®æ´»å¨ç¶ææ¶ï¼å°ä¼è·åä¸å°ï¼æ¤å¤ä½¿ç¨äºè¥å¹²èåup主æ¿é´è¿è¡å°è¯
roomIdList := []string{
- "3",//åå©åå©é³æ¦å°
- "2",//ç´æå§¬
- "1",//åå©åå©ç´æ
+ "3", //åå©åå©é³æ¦å°
+ "2", //ç´æå§¬
+ "1", //åå©åå©ç´æ
}
- for _,roomid := range roomIdList{//è·å
+ for _, roomid := range roomIdList { //è·å
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/live/getRoomKanBanModel?roomid=`+roomid,
- Header:map[string]string{
- `Host`: `live.bilibili.com`,
- `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`,
- `Accept`: `text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8`,
- `Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
- `Accept-Encoding`: `gzip, deflate, br`,
- `Connection`: `keep-alive`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com",
- `DNT`: `1`,
+ Url: `https://api.live.bilibili.com/live/getRoomKanBanModel?roomid=` + roomid,
+ Header: map[string]string{
+ `Host`: `live.bilibili.com`,
+ `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`,
+ `Accept`: `text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8`,
+ `Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
+ `Accept-Encoding`: `gzip, deflate, br`,
+ `Connection`: `keep-alive`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com",
+ `DNT`: `1`,
`Upgrade-Insecure-Requests`: `1`,
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
//cookie
var has bool
- for k,v := range reqf.Cookies_List_2_Map(req.Response.Cookies()){
+ for k, v := range reqf.Cookies_List_2_Map(req.Response.Cookies()) {
c.Cookie.Store(k, v)
- if k == `LIVE_BUVID` {has = true}
+ if k == `LIVE_BUVID` {
+ has = true
+ }
}
if has {
- apilog.L(`I: `,`è·åå°LIVE_BUVIDï¼ä¿åcookie`)
+ apilog.L(`I: `, `è·åå°LIVE_BUVIDï¼ä¿åcookie`)
break
} else {
- apilog.L(`I: `, roomid,`æªè·åå°ï¼éè¯`)
+ apilog.L(`I: `, roomid, `æªè·åå°ï¼éè¯`)
time.Sleep(time.Second)
}
}
-
+
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
-
+
CookieSet([]byte(reqf.Map_2_Cookies_String(Cookie)))
c.LIVE_BUVID = true
@@ -1762,98 +1844,116 @@ func Get_LIVE_BUVID() (missKey []string) {
}
//å°å¿å¿
-type E_json struct{
- Code int `json:"code"`
+type E_json struct {
+ Code int `json:"code"`
Message string `json:"message"`
- Ttl int `json:"ttl"`
- Data struct{
- Timestamp int `json:"timestamp"`
- Heartbeat_interval int `json:"heartbeat_interval"`
- Secret_key string `json:"secret_key"`
- Secret_rule []int `json:"secret_rule"`
- Patch_status int `json:"patch_status"`
+ Ttl int `json:"ttl"`
+ Data struct {
+ Timestamp int `json:"timestamp"`
+ Heartbeat_interval int `json:"heartbeat_interval"`
+ Secret_key string `json:"secret_key"`
+ Secret_rule []int `json:"secret_rule"`
+ Patch_status int `json:"patch_status"`
} `json:"data"`
}
//è°ç¨è®°å½
-var boot_F_x25Kn funcCtrl.FlashFunc//æ°çæ¿ä»£æ§ç
+var boot_F_x25Kn funcCtrl.FlashFunc //æ°çæ¿ä»£æ§ç
func F_x25Kn_cancel() {
- apilog.Base_add(`å°å¿å¿`).L(`T: `,`åæ¶`)
- boot_F_x25Kn.Flash()//è·å彿°è°ç¨ä¼è¯id
+ apilog.Base_add(`å°å¿å¿`).L(`T: `, `åæ¶`)
+ boot_F_x25Kn.Flash() //è·å彿°è°ç¨ä¼è¯id
boot_F_x25Kn.UnFlash()
}
func F_x25Kn() {
apilog := apilog.Base_add(`å°å¿å¿`)
- if c.Wearing_FansMedal == 0{apilog.L(`I: `,`æ ç²ä¸çï¼ä¸è·å`);return}
+ if c.Wearing_FansMedal == 0 {
+ apilog.L(`I: `, `æ ç²ä¸çï¼ä¸è·å`)
+ return
+ }
//éªè¯cookie
if missKey := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
return
}
- if c.ParentAreaID == -1 {apilog.L(`E: `,`å¤±è´¥ï¼æªè·åParent_area_id`);return}
- if c.AreaID == -1 {apilog.L(`E: `,`å¤±è´¥ï¼æªè·åArea_id`);return}
- if api_limit.TO() {apilog.L(`E: `,`è¶
æ¶ï¼`);return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+ if c.ParentAreaID == -1 {
+ apilog.L(`E: `, `å¤±è´¥ï¼æªè·åParent_area_id`)
+ return
+ }
+ if c.AreaID == -1 {
+ apilog.L(`E: `, `å¤±è´¥ï¼æªè·åArea_id`)
+ return
+ }
+ if api_limit.TO() {
+ apilog.L(`E: `, `è¶
æ¶ï¼`)
+ return
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
- id := boot_F_x25Kn.Flash()//è·å彿°è°ç¨ä¼è¯id
+ id := boot_F_x25Kn.Flash() //è·å彿°è°ç¨ä¼è¯id
defer boot_F_x25Kn.UnFlash()
- {//æ¥çä»å¤©å°å¿å¿æ°é
+ { //æ¥çä»å¤©å°å¿å¿æ°é
var num = 0
- for _,v := range Gift_list() {
- if v.Gift_id == 30607 && v.Expire_at - int(p.Sys().GetSTime()) > 6 * 86400 {
+ for _, v := range Gift_list() {
+ if v.Gift_id == 30607 && v.Expire_at-int(p.Sys().GetSTime()) > 6*86400 {
num = v.Gift_num
}
}
if num == 24 {
- Close(0)//å
³éå
¨é¨ï¼0ï¼æµè§å¨websocketè¿æ¥
- apilog.L(`I: `,`ä»å¤©å°å¿å¿å·²æ»¡ï¼`)
+ Close(0) //å
³éå
¨é¨ï¼0ï¼æµè§å¨websocketè¿æ¥
+ apilog.L(`I: `, `ä»å¤©å°å¿å¿å·²æ»¡ï¼`)
return
} else {
- apilog.L(`I: `,`ä»å¤©å·²æ`,num,`个å°å¿å¿ï¼å¼å§è·å`)
- defer apilog.L(`T: `,`éåº`)
+ apilog.L(`I: `, `ä»å¤©å·²æ`, num, `个å°å¿å¿ï¼å¼å§è·å`)
+ defer apilog.L(`T: `, `éåº`)
}
}
-
+
var (
- res E_json
+ res E_json
loop_num = 0
)
- csrf,_ := c.Cookie.LoadV(`bili_jct`).(string)
- if csrf == `` {apilog.L(`E: `,"Cookieé误,æ bili_jct");return}
+ csrf, _ := c.Cookie.LoadV(`bili_jct`).(string)
+ if csrf == `` {
+ apilog.L(`E: `, "Cookieé误,æ bili_jct")
+ return
+ }
LIVE_BUVID := c.Cookie.LoadV(`LIVE_BUVID`).(string)
- if LIVE_BUVID == `` {apilog.L(`E: `,"Cookieé误,æ LIVE_BUVID");return}
+ if LIVE_BUVID == `` {
+ apilog.L(`E: `, "Cookieé误,æ LIVE_BUVID")
+ return
+ }
var new_uuid string
{
- if tmp_uuid,e := uuid.NewV4();e == nil {
+ if tmp_uuid, e := uuid.NewV4(); e == nil {
new_uuid = tmp_uuid.String()
} else {
- apilog.L(`E: `,e)
+ apilog.L(`E: `, e)
return
}
}
- {//åå§å
+ { //åå§å
- PostStr := `id=[`+strconv.Itoa(c.ParentAreaID)+`,`+strconv.Itoa(c.AreaID)+`,`+strconv.Itoa(loop_num)+`,`+strconv.Itoa(c.Roomid)+`]&`
- PostStr += `device=["`+LIVE_BUVID+`","`+new_uuid+`"]&`
- PostStr += `ts=`+strconv.Itoa(int(p.Sys().GetMTime()))
+ PostStr := `id=[` + strconv.Itoa(c.ParentAreaID) + `,` + strconv.Itoa(c.AreaID) + `,` + strconv.Itoa(loop_num) + `,` + strconv.Itoa(c.Roomid) + `]&`
+ PostStr += `device=["` + LIVE_BUVID + `","` + new_uuid + `"]&`
+ PostStr += `ts=` + strconv.Itoa(int(p.Sys().GetMTime()))
PostStr += `&is_patch=0&`
PostStr += `heart_beat=[]&`
PostStr += `ua=Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0&`
- PostStr += `csrf_token=`+csrf+`&csrf=`+csrf+`&`
+ PostStr += `csrf_token=` + csrf + `&csrf=` + csrf + `&`
PostStr += `visit_id=`
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
@@ -1861,181 +1961,183 @@ func F_x25Kn() {
req := reqf.New()
for {
//æ°è°ç¨ï¼æ¤éåº
- if boot_F_x25Kn.NeedExit(id) {return}
+ if boot_F_x25Kn.NeedExit(id) {
+ return
+ }
if err := req.Reqf(reqf.Rval{
- Url:`https://live-trace.bilibili.com/xlive/data-interface/v1/x25Kn/E`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
- `Content-Type`: `application/x-www-form-urlencoded`,
+ Url: `https://live-trace.bilibili.com/xlive/data-interface/v1/x25Kn/E`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
+ `Content-Type`: `application/x-www-form-urlencoded`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/"+strconv.Itoa(c.Roomid),
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- PostStr:url.PathEscape(PostStr),
- Proxy:c.Proxy,
- Timeout:5*1000,
- Retry:2,
- });err != nil {
+ PostStr: url.PathEscape(PostStr),
+ Proxy: c.Proxy,
+ Timeout: 5 * 1000,
+ Retry: 2,
+ }); err != nil {
if !reqf.IsTimeout(err) {
- apilog.L(`E: `,err)
+ apilog.L(`E: `, err)
return
}
- apilog.L(`W: `,`ååºè¶
æ¶ï¼1minåéè¯`)
+ apilog.L(`W: `, `ååºè¶
æ¶ï¼1minåéè¯`)
time.Sleep(time.Minute)
} else {
break
}
}
- if e := json.Unmarshal(req.Respon,&res);e != nil {
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(req.Respon, &res); e != nil {
+ apilog.L(`E: `, e)
return
}
- if res.Code != 0{
- apilog.L(`E: `,`è¿åé误`,res.Message)
+ if res.Code != 0 {
+ apilog.L(`E: `, `è¿åé误`, res.Message)
return
}
}
- {//loop
+ { //loop
for loop_num < (24+2)*5 {
loop_num += 1
//æ¥çä»å¤©å°å¿å¿æ°é
- if loop_num > 5 && loop_num%5 == 2 {//5min忝5min
- {//æ¥çä»å¤©å°å¿å¿æ°é
+ if loop_num > 5 && loop_num%5 == 2 { //5min忝5min
+ { //æ¥çä»å¤©å°å¿å¿æ°é
var num = 0
- for _,v := range Gift_list() {
- if v.Gift_id == 30607 && v.Expire_at - int(p.Sys().GetSTime()) > 6 * 86400 {
+ for _, v := range Gift_list() {
+ if v.Gift_id == 30607 && v.Expire_at-int(p.Sys().GetSTime()) > 6*86400 {
num = v.Gift_num
}
}
if num == 24 {
- Close(0)//å
³éå
¨é¨ï¼0ï¼æµè§å¨websocketè¿æ¥
- apilog.L(`I: `,`ä»å¤©å°å¿å¿å·²æ»¡ï¼`)
+ Close(0) //å
³éå
¨é¨ï¼0ï¼æµè§å¨websocketè¿æ¥
+ apilog.L(`I: `, `ä»å¤©å°å¿å¿å·²æ»¡ï¼`)
return
} else {
- apilog.L(`I: `,`è·åäºä»å¤©ç第`,num,`个å°å¿å¿`)
+ apilog.L(`I: `, `è·åäºä»å¤©ç第`, num, `个å°å¿å¿`)
}
}
}
- <- time.After(time.Second*time.Duration(res.Data.Heartbeat_interval))
-
+ <-time.After(time.Second * time.Duration(res.Data.Heartbeat_interval))
+
//æ°è°ç¨ï¼æ¤éåº
- if boot_F_x25Kn.NeedExit(id) {return}
+ if boot_F_x25Kn.NeedExit(id) {
+ return
+ }
var (
rt_obj = RT{
- R:R{
- Id:`[`+strconv.Itoa(c.ParentAreaID)+`,`+strconv.Itoa(c.AreaID)+`,`+strconv.Itoa(loop_num)+`,`+strconv.Itoa(c.Roomid)+`]`,
- Device:`["`+LIVE_BUVID+`","`+new_uuid+`"]`,
- Ets:res.Data.Timestamp,
- Benchmark:res.Data.Secret_key,
- Time:res.Data.Heartbeat_interval,
- Ts:int(p.Sys().GetMTime()),
- Ua:`Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0`,
+ R: R{
+ Id: `[` + strconv.Itoa(c.ParentAreaID) + `,` + strconv.Itoa(c.AreaID) + `,` + strconv.Itoa(loop_num) + `,` + strconv.Itoa(c.Roomid) + `]`,
+ Device: `["` + LIVE_BUVID + `","` + new_uuid + `"]`,
+ Ets: res.Data.Timestamp,
+ Benchmark: res.Data.Secret_key,
+ Time: res.Data.Heartbeat_interval,
+ Ts: int(p.Sys().GetMTime()),
+ Ua: `Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0`,
},
- T:res.Data.Secret_rule,
+ T: res.Data.Secret_rule,
}
wasm string
)
-
- if rt_obj,wasm = Wasm(0, rt_obj);wasm == `` {//0å
¨å±
- apilog.L(`E: `,`åçé误`)
+ if rt_obj, wasm = Wasm(0, rt_obj); wasm == `` { //0å
¨å±
+ apilog.L(`E: `, `åçé误`)
return
}
- PostStr := `id=`+rt_obj.R.Id+`&`
- PostStr += `device=["`+LIVE_BUVID+`","`+new_uuid+`"]&`
- PostStr += `ets=`+strconv.Itoa(res.Data.Timestamp)
- PostStr += `&benchmark=`+res.Data.Secret_key
- PostStr += `&time=`+strconv.Itoa(res.Data.Heartbeat_interval)
- PostStr += `&ts=`+strconv.Itoa(rt_obj.R.Ts)
+ PostStr := `id=` + rt_obj.R.Id + `&`
+ PostStr += `device=["` + LIVE_BUVID + `","` + new_uuid + `"]&`
+ PostStr += `ets=` + strconv.Itoa(res.Data.Timestamp)
+ PostStr += `&benchmark=` + res.Data.Secret_key
+ PostStr += `&time=` + strconv.Itoa(res.Data.Heartbeat_interval)
+ PostStr += `&ts=` + strconv.Itoa(rt_obj.R.Ts)
PostStr += `&is_patch=0&`
PostStr += `heart_beat=[]&`
- PostStr += `ua=`+rt_obj.R.Ua+`&`
- PostStr += `csrf_token=`+csrf+`&csrf=`+csrf+`&`
+ PostStr += `ua=` + rt_obj.R.Ua + `&`
+ PostStr += `csrf_token=` + csrf + `&csrf=` + csrf + `&`
PostStr += `visit_id=`
- PostStr = `s=`+wasm+`&`+PostStr
+ PostStr = `s=` + wasm + `&` + PostStr
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://live-trace.bilibili.com/xlive/data-interface/v1/x25Kn/X`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
- `Content-Type`: `application/x-www-form-urlencoded`,
+ Url: `https://live-trace.bilibili.com/xlive/data-interface/v1/x25Kn/X`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
+ `Content-Type`: `application/x-www-form-urlencoded`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/"+strconv.Itoa(c.Roomid),
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- PostStr:url.PathEscape(PostStr),
- Proxy:c.Proxy,
- Timeout:5*1000,
- Retry:2,
- });err != nil {
+ PostStr: url.PathEscape(PostStr),
+ Proxy: c.Proxy,
+ Timeout: 5 * 1000,
+ Retry: 2,
+ }); err != nil {
if !reqf.IsTimeout(err) {
loop_num -= 1
- apilog.L(`W: `,`ååºè¶
æ¶ï¼å°éè¯`)
+ apilog.L(`W: `, `ååºè¶
æ¶ï¼å°éè¯`)
continue
}
- apilog.L(`E: `,err)
+ apilog.L(`E: `, err)
return
}
- if e := json.Unmarshal(req.Respon,&res);e != nil {
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(req.Respon, &res); e != nil {
+ apilog.L(`E: `, e)
return
}
-
- if res.Code != 0{
- apilog.L(`E: `,`è¿åé误`,res.Message)
+
+ if res.Code != 0 {
+ apilog.L(`E: `, `è¿åé误`, res.Message)
return
}
}
}
- return
}
//礼ç©å表
type Gift_list_type struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Data Gift_list_type_Data `json:"data"`
+ Code int `json:"code"`
+ Message string `json:"message"`
+ Data Gift_list_type_Data `json:"data"`
}
type Gift_list_type_Data struct {
List []Gift_list_type_Data_List `json:"list"`
}
-type Gift_list_type_Data_List struct{
- Bag_id int `json:"bag_id"`
- Gift_id int `json:"gift_id"`
+type Gift_list_type_Data_List struct {
+ Bag_id int `json:"bag_id"`
+ Gift_id int `json:"gift_id"`
Gift_name string `json:"gift_name"`
- Gift_num int `json:"gift_num"`
- Expire_at int `json:"expire_at"`
+ Gift_num int `json:"gift_num"`
+ Expire_at int `json:"expire_at"`
}
func Gift_list() (list []Gift_list_type_Data_List) {
@@ -2045,56 +2147,62 @@ func Gift_list() (list []Gift_list_type_Data_List) {
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
+ return
+ }
+ if c.Roomid == 0 {
+ apilog.L(`E: `, `å¤±è´¥ï¼æ Roomid`)
return
}
- if c.Roomid == 0 {apilog.L(`E: `,`å¤±è´¥ï¼æ Roomid`);return}
- if api_limit.TO() {apilog.L(`E: `,`è¶
æ¶ï¼`);return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+ if api_limit.TO() {
+ apilog.L(`E: `, `è¶
æ¶ï¼`)
+ return
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/web-room/v1/gift/bag_list?t=`+strconv.Itoa(int(p.Sys().GetMTime()))+`&room_id=`+strconv.Itoa(c.Roomid),
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/web-room/v1/gift/bag_list?t=` + strconv.Itoa(int(p.Sys().GetMTime())) + `&room_id=` + strconv.Itoa(c.Roomid),
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://live.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:"https://live.bilibili.com/"+strconv.Itoa(c.Roomid),
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://live.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: "https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
var res Gift_list_type
- if e := json.Unmarshal(req.Respon,&res);e != nil {
- apilog.L(`E: `,e)
+ if e := json.Unmarshal(req.Respon, &res); e != nil {
+ apilog.L(`E: `, e)
return
}
- if res.Code != 0{
- apilog.L(`E: `,res.Message)
+ if res.Code != 0 {
+ apilog.L(`E: `, res.Message)
return
}
- apilog.L(`T: `,`æå`)
+ apilog.L(`T: `, `æå`)
return res.Data.List
}
@@ -2105,53 +2213,55 @@ func Silver_2_coin() (missKey []string) {
if !c.LIVE_BUVID {
missKey = append(missKey, `LIVE_BUVID`)
}
- if len(missKey) > 0 {return}
+ if len(missKey) > 0 {
+ return
+ }
//éªè¯cookie
if miss := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(miss) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,miss)
+ }); len(miss) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, miss)
return
}
var Silver int
- {//éªè¯æ¯å¦è¿ææºä¼
+ { //éªè¯æ¯å¦è¿ææºä¼
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/revenue/v1/wallet/getStatus`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/revenue/v1/wallet/getStatus`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://link.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:`https://link.bilibili.com/p/center/index`,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://link.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: `https://link.bilibili.com/p/center/index`,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
-
+
var j J.ApiXliveRevenueV1WalletGetStatus
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -2168,40 +2278,40 @@ func Silver_2_coin() (missKey []string) {
Silver = j.Data.Silver
}
- {//è·å交æ¢è§åï¼éªè¯æ°éè¶³å¤
+ { //è·å交æ¢è§åï¼éªè¯æ°éè¶³å¤
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/revenue/v1/wallet/getRule`,
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/revenue/v1/wallet/getRule`,
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://link.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:`https://link.bilibili.com/p/center/index`,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://link.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: `https://link.bilibili.com/p/center/index`,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
-
+
var j J.ApixliveRevenueV1WalletGetRule
-
- if e := json.Unmarshal([]byte(req.Respon),&j);e != nil{
+
+ if e := json.Unmarshal([]byte(req.Respon), &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -2214,59 +2324,62 @@ func Silver_2_coin() (missKey []string) {
return
}
}
-
- {//交æ¢
- csrf,_ := c.Cookie.LoadV(`bili_jct`).(string)
- if csrf == `` {apilog.L(`E: `,"Cookieé误,æ bili_jct=");return}
-
- post_str := `csrf_token=`+csrf+`&csrf=`+csrf
+
+ { //交æ¢
+ csrf, _ := c.Cookie.LoadV(`bili_jct`).(string)
+ if csrf == `` {
+ apilog.L(`E: `, "Cookieé误,æ bili_jct=")
+ return
+ }
+
+ post_str := `csrf_token=` + csrf + `&csrf=` + csrf
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/revenue/v1/wallet/silver2coin`,
- PostStr:url.PathEscape(post_str),
- 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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/revenue/v1/wallet/silver2coin`,
+ PostStr: url.PathEscape(post_str),
+ 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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://link.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Content-Type`: `application/x-www-form-urlencoded`,
- `Referer`:`https://link.bilibili.com/p/center/index`,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://link.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Content-Type`: `application/x-www-form-urlencoded`,
+ `Referer`: `https://link.bilibili.com/p/center/index`,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
-
+
save_cookie(req.Response.Cookies())
- var res struct{
- Code int `json:"code"`
- Msg string `json:"msg"`
+ var res struct {
+ Code int `json:"code"`
+ Msg string `json:"msg"`
Message string `json:"message"`
}
-
- if e := json.Unmarshal(req.Respon, &res);e != nil{
+
+ if e := json.Unmarshal(req.Respon, &res); e != nil {
apilog.L(`E: `, e)
return
}
-
- if res.Code != 0{
+
+ if res.Code != 0 {
apilog.L(`E: `, res.Message)
return
}
@@ -2275,13 +2388,13 @@ func Silver_2_coin() (missKey []string) {
return
}
-func save_cookie(Cookies []*http.Cookie){
- for k,v := range reqf.Cookies_List_2_Map(Cookies){
+func save_cookie(Cookies []*http.Cookie) {
+ for k, v := range reqf.Cookies_List_2_Map(Cookies) {
c.Cookie.Store(k, v)
}
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
@@ -2289,82 +2402,88 @@ func save_cookie(Cookies []*http.Cookie){
}
//æ£å¨ç´æä¸»æ
-type UpItem struct{
- Uname string `json:"uname"`
- Title string `json:"title"`
- Roomid int `json:"roomid"`
+type UpItem struct {
+ Uname string `json:"uname"`
+ Title string `json:"title"`
+ Roomid int `json:"roomid"`
}
+
func Feed_list() (Uplist []UpItem) {
- apilog := apilog.Base_add(`æ£å¨ç´æä¸»æ`).L(`T: `,`è·åä¸`)
+ apilog := apilog.Base_add(`æ£å¨ç´æä¸»æ`).L(`T: `, `è·åä¸`)
//éªè¯cookie
if missKey := CookieCheck([]string{
`bili_jct`,
`DedeUserID`,
`LIVE_BUVID`,
- });len(missKey) != 0 {
- apilog.L(`T: `,`Cookieæ Key:`,missKey)
+ }); len(missKey) != 0 {
+ apilog.L(`T: `, `Cookieæ Key:`, missKey)
return
}
- if api_limit.TO() {apilog.L(`E: `,`è¶
æ¶ï¼`);return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+ if api_limit.TO() {
+ apilog.L(`E: `, `è¶
æ¶ï¼`)
+ return
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
Cookie := make(map[string]string)
- c.Cookie.Range(func(k,v interface{})(bool){
+ c.Cookie.Range(func(k, v interface{}) bool {
Cookie[k.(string)] = v.(string)
return true
})
req := reqf.New()
- for pageNum:=1; true; pageNum+=1 {
+ for pageNum := 1; true; pageNum += 1 {
if err := req.Reqf(reqf.Rval{
- Url:`https://api.live.bilibili.com/xlive/web-ucenter/v1/xfetter/FeedList?page=`+strconv.Itoa(pageNum)+`&pagesize=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`,
- `Accept`: `application/json, text/plain, */*`,
+ Url: `https://api.live.bilibili.com/xlive/web-ucenter/v1/xfetter/FeedList?page=` + strconv.Itoa(pageNum) + `&pagesize=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`,
+ `Accept`: `application/json, text/plain, */*`,
`Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
`Accept-Encoding`: `gzip, deflate, br`,
- `Origin`: `https://t.bilibili.com`,
- `Connection`: `keep-alive`,
- `Pragma`: `no-cache`,
- `Cache-Control`: `no-cache`,
- `Referer`:`https://t.bilibili.com/pages/nav/index_new`,
- `Cookie`:reqf.Map_2_Cookies_String(Cookie),
+ `Origin`: `https://t.bilibili.com`,
+ `Connection`: `keep-alive`,
+ `Pragma`: `no-cache`,
+ `Cache-Control`: `no-cache`,
+ `Referer`: `https://t.bilibili.com/pages/nav/index_new`,
+ `Cookie`: reqf.Map_2_Cookies_String(Cookie),
},
- Proxy:c.Proxy,
- Timeout:3*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 3 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
- var res struct{
- Code int `json:"code"`
- Msg string `json:"msg"`
+ var res struct {
+ Code int `json:"code"`
+ Msg string `json:"msg"`
Message string `json:"message"`
- Data struct{
- Results int `json:"results"`
- List []UpItem `json:"list"`
+ Data struct {
+ Results int `json:"results"`
+ List []UpItem `json:"list"`
} `json:"data"`
}
- if e := json.Unmarshal(req.Respon, &res);e != nil{
+ if e := json.Unmarshal(req.Respon, &res); e != nil {
apilog.L(`E: `, e)
return
}
- if res.Code != 0{
+ if res.Code != 0 {
apilog.L(`E: `, res.Message)
return
}
Uplist = append(Uplist, res.Data.List...)
- if pageNum*10 > res.Data.Results {break}
+ if pageNum*10 > res.Data.Results {
+ break
+ }
time.Sleep(time.Second)
}
- apilog.L(`T: `,`宿`)
+ apilog.L(`T: `, `宿`)
return
}
@@ -2373,24 +2492,24 @@ func GetHistory(Roomid_int int) (j J.GetHistory) {
Roomid := strconv.Itoa(Roomid_int)
- {//使ç¨å
¶ä»api
+ { //使ç¨å
¶ä»api
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=" + Roomid,
- Header:map[string]string{
- `Referer`:"https://live.bilibili.com/" + Roomid,
+ Url: "https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=" + Roomid,
+ Header: map[string]string{
+ `Referer`: "https://live.bilibili.com/" + Roomid,
},
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
//GetHistory
{
- if e := json.Unmarshal(req.Respon,&j);e != nil{
+ if e := json.Unmarshal(req.Respon, &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -2402,25 +2521,28 @@ func GetHistory(Roomid_int int) (j J.GetHistory) {
return
}
-type searchresult struct{
- Roomid int
- Uname string
+type searchresult struct {
+ Roomid int
+ Uname string
Is_live bool
}
func SearchUP(s string) (list []searchresult) {
apilog := apilog.Base_add(`æç´¢ä¸»æ`)
- if api_limit.TO() {apilog.L(`E: `,`è¶
æ¶ï¼`);return}//è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
-
- {//使ç¨å
¶ä»api
+ if api_limit.TO() {
+ apilog.L(`E: `, `è¶
æ¶ï¼`)
+ return
+ } //è¶
é¢è¯·æ±é»å¡ï¼è¶
æ¶å°åæ¶
+
+ { //使ç¨å
¶ä»api
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://api.bilibili.com/x/web-interface/search/type?context=&search_type=live_user&cover_type=user_cover&page=1&order=&category_id=&__refresh__=true&_extra=&highlight=1&single_column=0&keyword=" + url.PathEscape(s),
- Proxy:c.Proxy,
- Timeout:10*1000,
- Retry:2,
- });err != nil {
- apilog.L(`E: `,err)
+ Url: "https://api.bilibili.com/x/web-interface/search/type?context=&search_type=live_user&cover_type=user_cover&page=1&order=&category_id=&__refresh__=true&_extra=&highlight=1&single_column=0&keyword=" + url.PathEscape(s),
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ Retry: 2,
+ }); err != nil {
+ apilog.L(`E: `, err)
return
}
@@ -2428,7 +2550,7 @@ func SearchUP(s string) (list []searchresult) {
//Search
{
- if e := json.Unmarshal(req.Respon,&j);e != nil{
+ if e := json.Unmarshal(req.Respon, &j); e != nil {
apilog.L(`E: `, e)
return
} else if j.Code != 0 {
@@ -2438,15 +2560,16 @@ func SearchUP(s string) (list []searchresult) {
}
if j.Data.Numresults == 0 {
- apilog.L(`I: `,`没æå¹é
`);return
+ apilog.L(`I: `, `没æå¹é
`)
+ return
}
- for i:=0;i`,``)
- uname = strings.ReplaceAll(uname, ``,``)
+ for i := 0; i < len(j.Data.Result); i += 1 {
+ uname := strings.ReplaceAll(j.Data.Result[i].Uname, ``, ``)
+ uname = strings.ReplaceAll(uname, ``, ``)
list = append(list, searchresult{
- Roomid: j.Data.Result[i].Roomid,
- Uname: uname,
+ Roomid: j.Data.Result[i].Roomid,
+ Uname: uname,
Is_live: j.Data.Result[i].IsLive,
})
}
@@ -2458,28 +2581,29 @@ func SearchUP(s string) (list []searchresult) {
func KeepConnect() {
for !IsConnected() {
- time.Sleep(time.Duration(30)*time.Second)
+ time.Sleep(time.Duration(30) * time.Second)
}
- return
}
func IsConnected() bool {
apilog := apilog.Base_add(`IsConnected`)
- v,ok := c.K_v.LoadV(`ç½ç»ä¸æä¸éåº`).(bool)
- if !ok || !v {return true}
+ v, ok := c.K_v.LoadV(`ç½ç»ä¸æä¸éåº`).(bool)
+ if !ok || !v {
+ return true
+ }
req := reqf.New()
if err := req.Reqf(reqf.Rval{
- Url:"https://www.bilibili.com",
- Proxy:c.Proxy,
- Timeout:10*1000,
- JustResponseCode:true,
- });err != nil {
- apilog.L(`W: `,`ç½ç»ä¸æ`,err)
+ Url: "https://www.bilibili.com",
+ Proxy: c.Proxy,
+ Timeout: 10 * 1000,
+ JustResponseCode: true,
+ }); err != nil {
+ apilog.L(`W: `, `ç½ç»ä¸æ`, err)
return false
}
- apilog.L(`T: `,`å·²è¿æ¥`)
+ apilog.L(`T: `, `å·²è¿æ¥`)
return true
-}
\ No newline at end of file
+}
--
2.39.2