return
}
-func (i *api) Get_live(qn ...int) (o *api) {
+func (i *api) Get_live(qn ...string) (o *api) {
o = i
if o.Roomid == 0 {
apilog.E("还未New_api")
Cookie = Cookie[:i] + Cookie[i + d + 1:]
}
} else {
- qn = []int{}
+ qn = []string{}
}
- if len(qn) == 0 || qn[0] == 0 {//html获取
+ if len(qn) == 0 || qn[0] == "0" {//html获取
r := p.Get(p.Rval{
Url:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
Cookie:Cookie,
}
apilog.W("api version", c.VERSION)
}
+
+ cu_qn := "0"
{//api获取
req := p.Req()
if err := req.Reqf(p.Rval{
o.Live = append(o.Live, v.(string))
}
}
+ if i := p.Json().GetValFrom(res, "data.play_url.current_qn"); i != nil {
+ cu_qn = strconv.Itoa(int(i.(float64)))
+ }
- if len(qn) != 0 && qn[0] != 0 {
+ if len(qn) != 0 && qn[0] != "0" {
+ if _,ok := c.Default_qn[qn[0]];!ok{
+ apilog.W("清晰度未找到", qn[0], ",使用默认")
+ return
+ }
if err := req.Reqf(p.Rval{
- Url:"https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=" + strconv.Itoa(o.Roomid) + "&qn=" + strconv.Itoa(qn[0]) + "&platform=web&https_url_req=1&ptype=16",
+ Url:"https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=" + strconv.Itoa(o.Roomid) + "&qn=" + qn[0] + "&platform=web&https_url_req=1&ptype=16",
Referer:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
Timeout:10,
Cookie:Cookie,
o.Live = append(o.Live, v.(string))
}
}
+ if i := p.Json().GetValFrom(res, "data.current_qn"); i != nil {
+ cu_qn = strconv.Itoa(int(i.(float64)))
+ c.Live_qn = cu_qn
+ }
}
}
+
+ if v,ok := c.Default_qn[cu_qn];ok {
+ apilog.W("当前清晰度:", v)
+ }
return
}
path string
wait p.Signal
cancel p.Signal
-
- qn int
}
var saveflv = Saveflv {
Inuse:IsOn("Saveflv"),
- qn:10000,
- /*
- 10000 原画
- 400 蓝光
- 250 超清
- 150 高清
- 80 流畅
- */
}
//已go func形式调用,将会获取直播流
cuLinkIndex := 0
api := F.New_api(c.Roomid)
- for api.Get_live(saveflv.qn).Live_status == 1 && !saveflv.cancel.Islive() {
+ for api.Get_live(c.Live_qn).Live_status == 1 {
c.Live = api.Live
saveflv.path = strconv.Itoa(c.Roomid) + "_" + time.Now().Format("2006_01_02_15:04:05.000")
l.I("结束")
Ass_f("", time.Now())//ass
-
+ if !saveflv.cancel.Islive() {break}//cancel
/*
Saveflv需要外部组件
ffmpeg http://ffmpeg.org/download.html
{
var groomid = flag.Int("r", 0, "roomid")
+ var live_qn = flag.String("q", "0", "qn")
flag.Parse()
+ if _,ok := c.Default_qn[*live_qn]; ok{c.Live_qn = *live_qn}
+
var room = *groomid
if room == 0 && len(roomid) != 0 {
room = roomid[0]