This commit is contained in:
tamakyi
2026-09-25 13:16:54 +08:00
commit ed4e47e305
32 changed files with 9214 additions and 0 deletions
+101
View File
@@ -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)
}