package F
import (
- "os"
"bufio"
- "strings"
+ "fmt"
+ "os"
"strconv"
+ "strings"
"time"
- "fmt"
- send "github.com/qydysky/bili_danmu/Send"
c "github.com/qydysky/bili_danmu/CV"
+ send "github.com/qydysky/bili_danmu/Send"
)
//直播间缓存
-var liveList =make(map[string]int)
+var liveList = make(map[string]int)
func Cmd() {
-
- cmdlog := c.Log.Base_add(`命令行操作`).L(`T: `,`回车查看帮助`)
+
+ cmdlog := c.Log.Base_add(`命令行操作`).L(`T: `, `回车查看帮助`)
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
- if inputs := scanner.Text();inputs == `` {//帮助
+ if inputs := scanner.Text(); inputs == `` { //帮助
fmt.Print("\n")
fmt.Println("切换房间->输入数字回车")
if c.Roomid == 0 {
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);ok {
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); ok {
fmt.Println("查看直播中主播->输入' live'回车")
} else {
fmt.Println("登陆->输入' login'回车")
fmt.Print("\n")
continue
}
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);ok {
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); ok {
fmt.Println("发送弹幕->输入' 字符串'回车")
fmt.Println("查看直播中主播->输入' live'回车")
fmt.Println("获取小心心->输入' getheart'回车")
fmt.Println("开始结束录制->输入' rec'回车")
fmt.Println("其他输出隔断不影响")
fmt.Print("\n")
- } else if inputs[0] == 27 {//屏蔽功能键
+ } else if inputs[0] == 27 { //屏蔽功能键
cmdlog.L(`W: `, "不支持功能键")
- } else if inputs[0] == 32 {// 开头
+ } else if inputs[0] == 32 { // 开头
//录制切换
if strings.Contains(inputs, ` rec`) && c.Roomid != 0 {
if !c.Liveing {
}
//直播间切换
if strings.Contains(inputs, ` live`) {
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);!ok {
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); !ok {
cmdlog.L(`W: `, "尚未登陆,未能获取关注主播")
continue
}
fmt.Print("\n")
if len(inputs) > 5 {
- if room,ok := liveList[inputs];ok{
+ if room, ok := liveList[inputs]; ok {
c.Roomid = room
- c.Danmu_Main_mq.Push_tag(`change_room`,nil)
+ c.Danmu_Main_mq.Push_tag(`change_room`, nil)
continue
}
cmdlog.L(`W: `, "输入错误", inputs)
continue
}
- for k,v := range Feed_list() {
+ for k, v := range Feed_list() {
liveList[` live`+strconv.Itoa(k)] = v.Roomid
fmt.Printf("%d\t%s\n\t\t\t%s\n", k, v.Uname, v.Title)
}
}
//登陆
if strings.Contains(inputs, ` login`) {
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);ok {
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); ok {
cmdlog.L(`W: `, "已登陆")
continue
}
}
//获取小心心
if strings.Contains(inputs, ` getheart`) && c.Roomid != 0 {
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);!ok {
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); !ok {
cmdlog.L(`W: `, "尚未登陆,不能获取小心心")
continue
}
}
fmt.Print("\n")
- for k,v := range SearchUP(inputs[7:]) {
+ for k, v := range SearchUP(inputs[7:]) {
liveList[` live`+strconv.Itoa(k)] = v.Roomid
if v.Is_live {
fmt.Printf("%d\t%s\t%s\n", k, `☁`, v.Uname)
}
//重载弹幕
if strings.Contains(inputs, ` reload`) && c.Roomid != 0 {
- c.Danmu_Main_mq.Push_tag(`flash_room`,nil)
+ c.Danmu_Main_mq.Push_tag(`flash_room`, nil)
continue
}
//当前直播间信息
fmt.Println("当前直播间信息")
{
living := `未在直播`
- if c.Liveing {living = `直播中`}
+ if c.Liveing {
+ living = `直播中`
+ }
fmt.Println(c.Uname, c.Title, living)
}
{
}
}
{
- fmt.Println(`营收:`, fmt.Sprintf("¥%.2f",c.Rev))
+ fmt.Println(`营收:`, fmt.Sprintf("¥%.2f", c.Rev))
}
fmt.Println(`舰长数:`, c.GuardNum)
fmt.Println(`分区排行:`, c.Note, `人气:`, c.Renqi)
- if c.Stream_url != ""{fmt.Println(`直播Web服务:`, c.Stream_url)}
+ if c.Stream_url != "" {
+ fmt.Println(`直播Web服务:`, c.Stream_url+`/now`)
+ }
fmt.Print("\n")
continue
}
- {//弹幕发送
- if c.Roomid == 0 {continue}
- if _,ok := c.Cookie.LoadV(`bili_jct`).(string);!ok {
+ { //弹幕发送
+ if c.Roomid == 0 {
+ continue
+ }
+ if _, ok := c.Cookie.LoadV(`bili_jct`).(string); !ok {
cmdlog.L(`W: `, "尚未登陆,不能发送弹幕")
continue
}
}
send.Danmu_s(inputs[1:], c.Roomid)
}
- } else if room,err := strconv.Atoi(inputs);err == nil {//直接进入房间
+ } else if room, err := strconv.Atoi(inputs); err == nil { //直接进入房间
c.Roomid = room
- cmdlog.L(`I: `, "进入房间",room)
- c.Danmu_Main_mq.Push_tag(`change_room`,nil)
- } else {//其余字符串
- if c.Roomid == 0 {continue}
+ cmdlog.L(`I: `, "进入房间", room)
+ c.Danmu_Main_mq.Push_tag(`change_room`, nil)
+ } else { //其余字符串
+ if c.Roomid == 0 {
+ continue
+ }
send.Danmu_s(inputs, c.Roomid)
}
}
-}
\ No newline at end of file
+}
o := bytes.Index(line, []byte(`EXT-X-MAP:URI="`)) + 15
e := bytes.Index(line[o:], []byte(`"`)) + o
m4s_link = string(line[o:e])
+ } else if bytes.Contains(line, []byte("EXT-X-BILI-PREFETCH")) {
+ continue
} else if bytes.Contains(line, []byte(".m4s")) {
m4s_link = string(line)
}
if found {
offset := m4s_links[i].Offset_line - 1
for i := offset; i < len(lines); i += 1 {
+ if bytes.Contains(lines[i], []byte("EXT-X-BILI-PREFETCH")) {
+ continue
+ }
m3u8_file_addition = append(m3u8_file_addition, lines[i]...)
m3u8_file_addition = append(m3u8_file_addition, []byte("\n")...)
}
if !found {
offset := m4s_links[1].Offset_line - 1
for i := offset; i < len(lines); i += 1 {
+ if bytes.Contains(lines[i], []byte("EXT-X-BILI-PREFETCH")) {
+ continue
+ }
m3u8_file_addition = append(m3u8_file_addition, lines[i]...)
m3u8_file_addition = append(m3u8_file_addition, []byte("\n")...)
}
for i := now - 1; i > previou; i -= 1 {
base := strconv.Itoa(i) + ".m4s"
links = append([]*m4s_link_item{
- &m4s_link_item{
+ {
Url: path_front + base + path_behind,
Base: base,
},