summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bilibili/streaming.go4
-rw-r--r--danmaku/client.go8
-rw-r--r--danmaku/dmmsg/danmu.go8
-rw-r--r--danmaku/dmmsg/util.go2
-rw-r--r--danmaku/dmpkg/auth.go6
-rw-r--r--danmaku/dmpkg/decode.go10
-rw-r--r--danmaku/dmpkg/package.go15
-rw-r--r--danmaku/dmpkg/raw.go12
-rw-r--r--recording/runner.go4
9 files changed, 37 insertions, 32 deletions
diff --git a/bilibili/streaming.go b/bilibili/streaming.go
index 005ffd6..97b8e23 100644
--- a/bilibili/streaming.go
+++ b/bilibili/streaming.go
@@ -11,7 +11,7 @@ import (
"strings"
)
-const kInitReadBytes = 4096 // 4KiB
+const InitReadBytes = 4096 // 4KiB
// CopyLiveStream read data from a livestream video stream, copy them to a writer.
func (b Bilibili) CopyLiveStream(
@@ -58,7 +58,7 @@ func (b Bilibili) CopyLiveStream(
// read some first bytes to ensure that the live is really started,
// so we don't create blank files if the live room is open
// but the live hasn't started yet
- initBytes := make([]byte, kInitReadBytes)
+ initBytes := make([]byte, InitReadBytes)
_, err = io.ReadFull(resp.Body, initBytes)
if err != nil {
b.logger.Error("Failed to read stream initial bytes: %v", err)
diff --git a/danmaku/client.go b/danmaku/client.go
index 3a1298d..b785e23 100644
--- a/danmaku/client.go
+++ b/danmaku/client.go
@@ -15,8 +15,8 @@ import (
"nhooyr.io/websocket"
)
-// Bilibili uses only binary WebSocket messages
-const kBilibiliWebSocketMessageType = websocket.MessageBinary
+// BilibiliWebSocketMessageType Bilibili uses only binary WebSocket messages
+const BilibiliWebSocketMessageType = websocket.MessageBinary
type DanmakuClient struct {
ws *websocket.Conn
@@ -34,7 +34,7 @@ type wsDatagramIO struct {
}
func (w *wsDatagramIO) Consume(data []byte) error {
- return w.ws.Write(w.ctx, kBilibiliWebSocketMessageType, data)
+ return w.ws.Write(w.ctx, BilibiliWebSocketMessageType, data)
}
func (w *wsDatagramIO) Get() (data []byte, err error) {
@@ -42,7 +42,7 @@ func (w *wsDatagramIO) Get() (data []byte, err error) {
if err != nil {
return
}
- if typ != kBilibiliWebSocketMessageType {
+ if typ != BilibiliWebSocketMessageType {
err = fmt.Errorf("invalid message type: expected a binary WebSocket message, however got %v", typ.String())
}
return
diff --git a/danmaku/dmmsg/danmu.go b/danmaku/dmmsg/danmu.go
index 2cc5dfa..f0229d2 100644
--- a/danmaku/dmmsg/danmu.go
+++ b/danmaku/dmmsg/danmu.go
@@ -23,11 +23,11 @@ func (dm DanMuMessage) String() string {
dm.SourceUser.Nickname, dm.SourceUser.UID, dm.Content)
}
-const kInvalidDanmakuJson = "invalid danmaku JSON document"
+const InvalidDanmakuJson = "invalid danmaku JSON document"
func ParseDanmakuMessage(body RawDanMuMessage) (dmm DanMuMessage, err error) {
if len(body.Info) != 16 {
- err = fmt.Errorf("%s: \"info\" length != 16", kInvalidDanmakuJson)
+ err = fmt.Errorf("%s: \"info\" length != 16", InvalidDanmakuJson)
return
}
@@ -41,14 +41,14 @@ func ParseDanmakuMessage(body RawDanMuMessage) (dmm DanMuMessage, err error) {
var ok bool
uid, ok := userInfo[0].(float64)
if !ok {
- err = fmt.Errorf("%s: uid is not a float64: %v", kInvalidDanmakuJson, userInfo[0])
+ err = fmt.Errorf("%s: uid is not a float64: %v", InvalidDanmakuJson, userInfo[0])
return
}
dmm.SourceUser.UID = int64(uid)
dmm.SourceUser.Nickname, ok = userInfo[1].(string)
if !ok {
- err = fmt.Errorf("%s: nickname is not a string: %v", kInvalidDanmakuJson, userInfo[1])
+ err = fmt.Errorf("%s: nickname is not a string: %v", InvalidDanmakuJson, userInfo[1])
return
}
return
diff --git a/danmaku/dmmsg/util.go b/danmaku/dmmsg/util.go
index 9d41ab9..d38814b 100644
--- a/danmaku/dmmsg/util.go
+++ b/danmaku/dmmsg/util.go
@@ -9,7 +9,7 @@ func castValue[T any](obj interface{}) (thing T, err error) {
casted, ok := (obj).(T)
if !ok {
err = fmt.Errorf("%s: required value is not of type \"%v\": %v",
- kInvalidDanmakuJson, reflect.TypeOf(thing).String(), obj)
+ InvalidDanmakuJson, reflect.TypeOf(thing).String(), obj)
return
}
thing = casted
diff --git a/danmaku/dmpkg/auth.go b/danmaku/dmpkg/auth.go
index c39fbd9..5caf868 100644
--- a/danmaku/dmpkg/auth.go
+++ b/danmaku/dmpkg/auth.go
@@ -23,11 +23,11 @@ type authInfo struct {
// NewAuth creates a new authentication exchange.
func NewAuth(protocol ProtocolVer, roomId common.RoomId, authKey string) (exc DanmakuExchange) {
exc, _ = NewPlainExchange(OpConnect, authInfo{
- UID: kUidGuest,
+ UID: UidGuest,
RoomId: uint64(roomId),
ProtoVer: int(protocol),
- Platform: kPlatformWeb,
- Type: kAuthTypeDefault,
+ Platform: PlatformWeb,
+ Type: AuthTypeDefault,
Key: authKey,
})
return
diff --git a/danmaku/dmpkg/decode.go b/danmaku/dmpkg/decode.go
index 7d9f796..e352fcc 100644
--- a/danmaku/dmpkg/decode.go
+++ b/danmaku/dmpkg/decode.go
@@ -7,14 +7,14 @@ import (
)
func DecodeExchange(data []byte) (exc DanmakuExchange, err error) {
- if ln := len(data); ln < kHeaderLength {
- err = fmt.Errorf("incomplete datagram: length = %v < %v", ln, kHeaderLength)
+ if ln := len(data); ln < HeaderLength {
+ err = fmt.Errorf("incomplete datagram: length = %v < %v", ln, HeaderLength)
return
}
// unpack header
var exchangeHeader DanmakuExchangeHeader
- err = struc.Unpack(bytes.NewReader(data[:kHeaderLength]), &exchangeHeader)
+ err = struc.Unpack(bytes.NewReader(data[:HeaderLength]), &exchangeHeader)
if err != nil {
err = fmt.Errorf("cannot unpack exchange header: %w", err)
return
@@ -22,9 +22,9 @@ func DecodeExchange(data []byte) (exc DanmakuExchange, err error) {
headerLength := exchangeHeader.HeaderLength
// validate header length, fail fast if not match
- if headerLength != kHeaderLength {
+ if headerLength != HeaderLength {
err = fmt.Errorf("invalid header length, "+
- "the protocol implementation might be obsolete: %v != %v", headerLength, kHeaderLength)
+ "the protocol implementation might be obsolete: %v != %v", headerLength, HeaderLength)
return
}
diff --git a/danmaku/dmpkg/package.go b/danmaku/dmpkg/package.go
index 3175a18..51c769a 100644
--- a/danmaku/dmpkg/package.go
+++ b/danmaku/dmpkg/package.go
@@ -31,8 +31,10 @@ func (e *DanmakuExchange) String() string {
e.Length, e.ProtocolVer, e.Operation, e.Body)
}
-const kHeaderLength = 16
-const kSequenceId = 1
+const (
+ HeaderLength = 16
+ SequenceId = 1
+)
type ProtocolVer uint16
@@ -47,9 +49,12 @@ const (
ProtoBrotli ProtocolVer = 3
)
-const kUidGuest = 0
-const kPlatformWeb = "web"
-const kAuthTypeDefault = 2 // magic number, not sure what does it mean
+const (
+ UidGuest = 0
+ PlatformWeb = "web"
+ // AuthTypeDefault magic number, not sure what does it mean
+ AuthTypeDefault = 2
+)
func (e *DanmakuExchange) Marshal() (data []byte, err error) {
var buffer bytes.Buffer
diff --git a/danmaku/dmpkg/raw.go b/danmaku/dmpkg/raw.go
index 17b538a..34cd2e6 100644
--- a/danmaku/dmpkg/raw.go
+++ b/danmaku/dmpkg/raw.go
@@ -6,7 +6,7 @@ import (
"math"
)
-const kMaxBodyLength = math.MaxUint32 - uint64(kHeaderLength)
+const MaxBodyLength = math.MaxUint32 - uint64(HeaderLength)
// NewPlainExchange creates a new exchange with raw body specified.
// body: a struct or a raw string
@@ -28,18 +28,18 @@ func NewPlainExchange(operation Operation, body interface{}) (exc DanmakuExchang
}
}
- length := uint64(kHeaderLength + len(bodyData))
- if length > kMaxBodyLength {
- err = fmt.Errorf("body is too large (> %d)", kMaxBodyLength)
+ length := uint64(HeaderLength + len(bodyData))
+ if length > MaxBodyLength {
+ err = fmt.Errorf("body is too large (> %d)", MaxBodyLength)
return
}
exc = DanmakuExchange{
DanmakuExchangeHeader: DanmakuExchangeHeader{
Length: uint32(length),
- HeaderLength: kHeaderLength,
+ HeaderLength: HeaderLength,
ProtocolVer: ProtoPlainJson,
Operation: operation,
- SequenceId: kSequenceId,
+ SequenceId: SequenceId,
},
Body: bodyData,
}
diff --git a/recording/runner.go b/recording/runner.go
index fe7aa21..1f2f101 100644
--- a/recording/runner.go
+++ b/recording/runner.go
@@ -28,7 +28,7 @@ type TaskResult struct {
Error error
}
-const kSpecialExtName = "partial"
+const SpecialExtName = "partial"
var errLiveEnded = common.NewRecoverableTaskError("live is ended", nil)
@@ -281,7 +281,7 @@ func record(
originalExtName := mo.TupleToResult(myurl.Url(streamSource.URL).FileExtension()).OrElse("flv")
if task.Download.UseSpecialExtNameBeforeFinishing {
- extName = kSpecialExtName
+ extName = SpecialExtName
} else {
extName = originalExtName
}