schema/pubapi/streams.go

62 lines
2 KiB
Go
Raw Normal View History

2024-06-14 15:13:10 +03:00
// Response schemas for API endpoint /streams/:videoId
package pubapi
type Streams struct {
VideoFields
AudioStreams []Stream `json:"audioStreams"`
VideoStreams []Stream `json:"videoStreams"`
Dash string `json:"dash"`
Hls string `json:"hls"`
LbryId string `json:"lbryId"`
Likes uint64 `json:"likes"`
Dislikes uint32 `json:"dislikes"`
Related []Related `json:"relatedStreams"`
Thumbnail string `json:"thumbnailUrl"`
DateTime string `json:"uploadDate"`
Channel string `json:"uploader"`
ChannelSubs uint64 `json:"uploaderSubscriberCount"`
Desc string `json:"description"`
Tags []string `json:"tags"`
Category string `json:"category"`
License string `json:"license"`
Visibility string `json:"visibility"`
Live bool `json:"livestream"`
// TODO: subtitles chapters previewFrames metaInfo(?) proxyUrl(useless?)
}
type Related struct {
VideoFields
ShortDesc string `json:"shortDescription"`
Thumbnail string `json:"thumbnail"`
Channel string `json:"uploaderName"`
ApproxDate string `json:"uploadedDate"`
Timestamp uint64 `json:"uploaded"` // can be -1
Shorts bool `json:"isShort"`
Url string `json:"url"`
// TODO: is always type == "stream"? do we need it?
}
type VideoFields struct {
Title string `json:"title"`
ChannelUrl string `json:"uploaderUrl"`
Avatar string `json:"uploaderAvatar"`
Verified bool `json:"uploaderVerified"`
Views uint64 `json:"views"`
Duration uint16 `json:"duration"` // can be -1
}
type Stream struct {
Bitrate uint16 `json:"bitrate"`
Codec string `json:"codec"`
Format string `json:"format"`
Fps uint8 `json:"fps"`
Mime string `json:"mimeType"`
Quality string `json:"quality"`
Width uint16 `json:"width"`
Height uint16 `json:"height"`
Url string `json:"url"`
VideoOnly bool `json:"videoOnly"`
// TODO: indexStart,End initStart,End
}