init
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
// 命令输入相关
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"log"
|
||||
"os"
|
||||
"sort"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 列出正在直播的主播
|
||||
func listLive() {
|
||||
streamers.RLock()
|
||||
lives := make([]streamer, 0, len(streamers.crt))
|
||||
for _, s := range streamers.crt {
|
||||
if s.isLiveOn() {
|
||||
lives = append(lives, s)
|
||||
}
|
||||
}
|
||||
streamers.RUnlock()
|
||||
|
||||
sort.Slice(lives, func(i, j int) bool {
|
||||
return lives[i].UID < lives[j].UID
|
||||
})
|
||||
|
||||
log.Println("正在直播的主播:")
|
||||
for _, s := range lives {
|
||||
log.Println(s.longID() + ":" + s.getTitle() + " " + s.getURL())
|
||||
}
|
||||
}
|
||||
|
||||
// 列出正在录制直播弹幕的主播
|
||||
func listDanmu() {
|
||||
lInfoMap.RLock()
|
||||
danmu := make([]liveInfo, 0, len(lInfoMap.info))
|
||||
for _, info := range lInfoMap.info {
|
||||
if info.isDanmu {
|
||||
danmu = append(danmu, info)
|
||||
}
|
||||
}
|
||||
lInfoMap.RUnlock()
|
||||
|
||||
sort.Slice(danmu, func(i, j int) bool {
|
||||
return danmu[i].uid < danmu[j].uid
|
||||
})
|
||||
|
||||
log.Println("正在录制直播弹幕的主播:")
|
||||
for _, d := range danmu {
|
||||
s := streamer{UID: d.uid, Name: getName(d.uid)}
|
||||
log.Println(s.longID() + ":" + s.getTitle() + " " + s.getURL())
|
||||
}
|
||||
}
|
||||
|
||||
// 列出正在录制直播视频的主播
|
||||
func listRecord() {
|
||||
lInfoMap.RLock()
|
||||
recs := make([]liveInfo, 0, len(lInfoMap.info))
|
||||
for _, info := range lInfoMap.info {
|
||||
if info.isRecording {
|
||||
recs = append(recs, info)
|
||||
}
|
||||
}
|
||||
lInfoMap.RUnlock()
|
||||
|
||||
sort.Slice(recs, func(i, j int) bool {
|
||||
return recs[i].uid < recs[j].uid
|
||||
})
|
||||
|
||||
log.Println("正在录制直播视频的主播:")
|
||||
for _, r := range recs {
|
||||
s := streamer{UID: r.uid, Name: getName(r.uid)}
|
||||
log.Println(s.longID() + ":" + r.recordFile)
|
||||
}
|
||||
}
|
||||
|
||||
// 通知 main() 退出程序
|
||||
func quitRun() {
|
||||
lPrintln("正在准备退出,请等待...")
|
||||
q := controlMsg{c: quit}
|
||||
mainCh <- q
|
||||
}
|
||||
|
||||
// 处理输入
|
||||
func handleInput() {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
lPrintErr("Recovering from panic in handleInput(), the error is:", err)
|
||||
lPrintErr("输入处理发生错误,尝试重启输入处理")
|
||||
time.Sleep(2 * time.Second)
|
||||
go handleInput()
|
||||
}
|
||||
}()
|
||||
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
for scanner.Scan() {
|
||||
handleAllCmd(scanner.Text())
|
||||
}
|
||||
err := scanner.Err()
|
||||
checkErr(err)
|
||||
}
|
||||
Reference in New Issue
Block a user