blob: 77588c53d03bb416bad46341d19d0110661adc2f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
package types
type RoomUrlInfoResponse = BaseResponse[roomUrlInfo]
type roomUrlInfo struct {
CurrentQuality int `json:"current_quality"`
AcceptQuality []string `json:"accept_quality"`
CurrentQualityNumber int `json:"current_qn"`
QualityDescription []qualityDescription `json:"quality_description"`
URLs []StreamingUrlInfo `json:"durl"`
}
type qualityDescription struct {
QualityNumber int `json:"qn"`
Description string `json:"desc"`
}
type StreamingUrlInfo struct {
URL string `json:"url"`
Length int `json:"length"`
Order int `json:"order"`
StreamType int `json:"stream_type"`
P2pType int `json:"p2p_type"`
}
type roomProfile struct {
UID int `json:"uid"`
RoomID RoomId `json:"room_id"`
ShortID int `json:"short_id"`
Attention int `json:"attention"`
Online int `json:"online"`
IsPortrait bool `json:"is_portrait"`
Description string `json:"description"`
LiveStatus int `json:"live_status"`
AreaID int `json:"area_id"`
ParentAreaID int `json:"parent_area_id"`
ParentAreaName string `json:"parent_area_name"`
OldAreaID int `json:"old_area_id"`
Background string `json:"background"`
Title string `json:"title"`
UserCover string `json:"user_cover"`
Keyframe string `json:"keyframe"`
IsStrictRoom bool `json:"is_strict_room"`
LiveTime string `json:"live_time"`
Tags string `json:"tags"`
IsAnchor int `json:"is_anchor"`
RoomSilentType string `json:"room_silent_type"`
RoomSilentLevel int `json:"room_silent_level"`
RoomSilentSecond int `json:"room_silent_second"`
AreaName string `json:"area_name"`
Pendants string `json:"pendants"`
AreaPendants string `json:"area_pendants"`
HotWords []string `json:"hot_words"`
HotWordsStatus int `json:"hot_words_status"`
Verify string `json:"verify"`
NewPendants struct {
Frame struct {
Name string `json:"name"`
Value string `json:"value"`
Position int `json:"position"`
Desc string `json:"desc"`
Area int `json:"area"`
AreaOld int `json:"area_old"`
BgColor string `json:"bg_color"`
BgPic string `json:"bg_pic"`
UseOldArea bool `json:"use_old_area"`
} `json:"frame"`
Badge struct {
Name string `json:"name"`
Position int `json:"position"`
Value string `json:"value"`
Desc string `json:"desc"`
} `json:"badge"`
MobileFrame struct {
Name string `json:"name"`
Value string `json:"value"`
Position int `json:"position"`
Desc string `json:"desc"`
Area int `json:"area"`
AreaOld int `json:"area_old"`
BgColor string `json:"bg_color"`
BgPic string `json:"bg_pic"`
UseOldArea bool `json:"use_old_area"`
} `json:"mobile_frame"`
MobileBadge interface{} `json:"mobile_badge"`
} `json:"new_pendants"`
UpSession string `json:"up_session"`
PkStatus int `json:"pk_status"`
PkID int `json:"pk_id"`
BattleID int `json:"battle_id"`
AllowChangeAreaTime int `json:"allow_change_area_time"`
AllowUploadCoverTime int `json:"allow_upload_cover_time"`
StudioInfo struct {
Status int `json:"status"`
MasterList []interface{} `json:"master_list"`
} `json:"studio_info"`
}
type RoomProfileResponse = BaseResponse[roomProfile]
type LiveStatus int
const (
Inactive LiveStatus = 0
Streaming LiveStatus = 1
Playback LiveStatus = 2
)
var liveStatusStringMap = map[LiveStatus]string{
Inactive: "inactive",
Streaming: "streaming",
Playback: "inactive (playback)",
}
type roomPlayInfo struct {
RoomID uint64 `json:"room_id"`
ShortID uint `json:"short_id"`
UID uint `json:"uid"`
IsHidden bool `json:"is_hidden"`
IsLocked bool `json:"is_locked"`
IsPortrait bool `json:"is_portrait"`
LiveStatus LiveStatus `json:"live_status"` // 0: inactive 1: streaming 2: playback
HiddenTill int `json:"hidden_till"`
LockTill int `json:"lock_till"`
Encrypted bool `json:"encrypted"`
PwdVerified bool `json:"pwd_verified"`
LiveTime int `json:"live_time"`
RoomShield int `json:"room_shield"`
AllSpecialTypes []interface{} `json:"all_special_types"`
PlayurlInfo interface{} `json:"playurl_info"`
}
type RoomPlayInfoResponse = BaseResponse[roomPlayInfo]
func (s LiveStatus) IsStreaming() bool {
return s == Streaming
}
func (s LiveStatus) String() string {
return liveStatusStringMap[s]
}
type DanmakuServerInfoResponse = BaseResponse[danmakuInfo]
type danmakuInfo struct {
Group string `json:"group"`
BusinessID int `json:"business_id"`
RefreshRowFactor float64 `json:"refresh_row_factor"`
RefreshRate int `json:"refresh_rate"`
MaxDelay int `json:"max_delay"`
Token string `json:"token"`
HostList []struct {
Host string `json:"host"`
Port int `json:"port"`
WssPort int `json:"wss_port"`
WsPort int `json:"ws_port"`
} `json:"host_list"`
}
|