From 4133e0cab4b261a4c0c4d8ce8a73d3ddb9acb750 Mon Sep 17 00:00:00 2001 From: "cathy-cloud[bot]" <154095190+cathy-cloud[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 21:39:31 +0000 Subject: [PATCH] Bump OBS websocket protocol to 5.5.0 (#158) * Bump OBS websocket protocol to 5.5.0 * add undocumented croptobounds field on sceneitemtransform https://github.com/obsproject/obs-websocket/pull/1224 * assert errors for new record requests --------- Co-authored-by: cathy-cloud[bot] <154095190+cathy-cloud[bot]@users.noreply.github.com> Co-authored-by: Andrey Kaipov --- README.md | 12 +++--- .../xx_generated.outputs.recordfilechanged.go | 13 ++++++ api/events/zz_generated.events.go | 2 + .../xx_generated.createrecordchapter.go | 41 +++++++++++++++++++ .../record/xx_generated.splitrecordfile.go | 26 ++++++++++++ api/typedefs/typedefs.go | 1 + docs/request-mapping.md | 2 + internal/generate/tests/main.go | 2 + version.go | 2 +- zz_generated._test.go | 10 +++++ 10 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 api/events/xx_generated.outputs.recordfilechanged.go create mode 100644 api/requests/record/xx_generated.createrecordchapter.go create mode 100644 api/requests/record/xx_generated.splitrecordfile.go diff --git a/README.md b/README.md index f3386d28..631d6126 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ [![Build Status][build-img]][build-url] [![Go Report][goreport-img]][goreport-url] -[protocol-img]: https://img.shields.io/badge/obs--websocket-v5.4.2-blue?logo=obs-studio&style=flat-square -[protocol-url]: https://github.com/obsproject/obs-websocket/blob/5.4.2/docs/generated/protocol.md +[protocol-img]: https://img.shields.io/badge/obs--websocket-v5.5.0-blue?logo=obs-studio&style=flat-square +[protocol-url]: https://github.com/obsproject/obs-websocket/blob/5.5.0/docs/generated/protocol.md [doc-img]: https://img.shields.io/badge/pkg.go.dev-reference-blue?logo=go&logoColor=white&style=flat-square [doc-url]: https://pkg.go.dev/github.com/andreykaipov/goobs [build-img]: https://img.shields.io/github/actions/workflow/status/andreykaipov/goobs/ci.yml?logo=github&style=flat-square&branch=main @@ -66,9 +66,9 @@ The corresponding output: [//]: # (snippet-2-begin) ```console ❯ go run _examples/basic/main.go -OBS Studio version: 30.1.0 -Server protocol version: 5.4.2 -Client protocol version: 5.4.2 -Client library version: 1.2.2 +OBS Studio version: 30.2.0 +Server protocol version: 5.5.0 +Client protocol version: 5.5.0 +Client library version: 1.4.0 ``` [//]: # (snippet-2-end) diff --git a/api/events/xx_generated.outputs.recordfilechanged.go b/api/events/xx_generated.outputs.recordfilechanged.go new file mode 100644 index 00000000..a7abc978 --- /dev/null +++ b/api/events/xx_generated.outputs.recordfilechanged.go @@ -0,0 +1,13 @@ +// This file has been automatically generated. Don't edit it. + +package events + +/* +Represents the event body for the RecordFileChanged event. + +The record output has started writing to a new file. For example, when a file split happens. +*/ +type RecordFileChanged struct { + // File name that the output has begun writing to + NewOutputPath string `json:"newOutputPath,omitempty"` +} diff --git a/api/events/zz_generated.events.go b/api/events/zz_generated.events.go index 387e77bf..29fdde16 100644 --- a/api/events/zz_generated.events.go +++ b/api/events/zz_generated.events.go @@ -66,6 +66,8 @@ func GetType(name string) any { return &StreamStateChanged{} case "RecordStateChanged": return &RecordStateChanged{} + case "RecordFileChanged": + return &RecordFileChanged{} case "ReplayBufferStateChanged": return &ReplayBufferStateChanged{} case "VirtualcamStateChanged": diff --git a/api/requests/record/xx_generated.createrecordchapter.go b/api/requests/record/xx_generated.createrecordchapter.go new file mode 100644 index 00000000..2b6371d4 --- /dev/null +++ b/api/requests/record/xx_generated.createrecordchapter.go @@ -0,0 +1,41 @@ +// This file has been automatically generated. Don't edit it. + +package record + +// Represents the request body for the CreateRecordChapter request. +type CreateRecordChapterParams struct { + // Name of the new chapter + ChapterName *string `json:"chapterName,omitempty"` +} + +func NewCreateRecordChapterParams() *CreateRecordChapterParams { + return &CreateRecordChapterParams{} +} +func (o *CreateRecordChapterParams) WithChapterName(x string) *CreateRecordChapterParams { + o.ChapterName = &x + return o +} + +// Returns the associated request. +func (o *CreateRecordChapterParams) GetRequestName() string { + return "CreateRecordChapter" +} + +// Represents the response body for the CreateRecordChapter request. +type CreateRecordChapterResponse struct { + _response +} + +/* +Adds a new chapter marker to the file currently being recorded. + +Note: As of OBS 30.2.0, the only file format supporting this feature is Hybrid MP4. +*/ +func (c *Client) CreateRecordChapter(paramss ...*CreateRecordChapterParams) (*CreateRecordChapterResponse, error) { + if len(paramss) == 0 { + paramss = []*CreateRecordChapterParams{{}} + } + params := paramss[0] + data := &CreateRecordChapterResponse{} + return data, c.client.SendRequest(params, data) +} diff --git a/api/requests/record/xx_generated.splitrecordfile.go b/api/requests/record/xx_generated.splitrecordfile.go new file mode 100644 index 00000000..f908a81d --- /dev/null +++ b/api/requests/record/xx_generated.splitrecordfile.go @@ -0,0 +1,26 @@ +// This file has been automatically generated. Don't edit it. + +package record + +// Represents the request body for the SplitRecordFile request. +type SplitRecordFileParams struct{} + +// Returns the associated request. +func (o *SplitRecordFileParams) GetRequestName() string { + return "SplitRecordFile" +} + +// Represents the response body for the SplitRecordFile request. +type SplitRecordFileResponse struct { + _response +} + +// Splits the current file being recorded into a new file. +func (c *Client) SplitRecordFile(paramss ...*SplitRecordFileParams) (*SplitRecordFileResponse, error) { + if len(paramss) == 0 { + paramss = []*SplitRecordFileParams{{}} + } + params := paramss[0] + data := &SplitRecordFileResponse{} + return data, c.client.SendRequest(params, data) +} diff --git a/api/typedefs/typedefs.go b/api/typedefs/typedefs.go index 72577c50..91d12719 100644 --- a/api/typedefs/typedefs.go +++ b/api/typedefs/typedefs.go @@ -104,6 +104,7 @@ type SceneItemTransform struct { BoundsHeight float64 `json:"boundsHeight"` BoundsType string `json:"boundsType"` BoundsWidth float64 `json:"boundsWidth"` + CropToBounds bool `json:"cropToBounds"` CropBottom float64 `json:"cropBottom"` CropLeft float64 `json:"cropLeft"` CropRight float64 `json:"cropRight"` diff --git a/docs/request-mapping.md b/docs/request-mapping.md index 3a347ee5..cfce69fd 100644 --- a/docs/request-mapping.md +++ b/docs/request-mapping.md @@ -115,9 +115,11 @@ The following tables show how to make the appropriate `goobs` request for any gi ## record | obs-websocket | goobs | | --- | --- | +| CreateRecordChapter | `client.Record.CreateRecordChapter(...)` | | GetRecordStatus | `client.Record.GetRecordStatus(...)` | | PauseRecord | `client.Record.PauseRecord(...)` | | ResumeRecord | `client.Record.ResumeRecord(...)` | +| SplitRecordFile | `client.Record.SplitRecordFile(...)` | | StartRecord | `client.Record.StartRecord(...)` | | StopRecord | `client.Record.StopRecord(...)` | | ToggleRecord | `client.Record.ToggleRecord(...)` | diff --git a/internal/generate/tests/main.go b/internal/generate/tests/main.go index 546a69f9..ac27a6f5 100644 --- a/internal/generate/tests/main.go +++ b/internal/generate/tests/main.go @@ -48,6 +48,8 @@ var ( // run at the end of all others "record.ResumeRecord", "record.StopRecord", + "record.CreateRecordChapter", + "record.SplitRecordFile", } ) diff --git a/version.go b/version.go index fc51eb89..e619adf8 100644 --- a/version.go +++ b/version.go @@ -7,7 +7,7 @@ import ( const lib = "github.com/andreykaipov/goobs" -var ProtocolVersion = "5.4.2" +var ProtocolVersion = "5.5.0" var LibraryVersion = func() string { bi, ok := debug.ReadBuildInfo() diff --git a/zz_generated._test.go b/zz_generated._test.go index 809ba706..8755a885 100644 --- a/zz_generated._test.go +++ b/zz_generated._test.go @@ -693,6 +693,11 @@ func Test_record(t *testing.T) { client.Disconnect() }) + _, err = client.Record.CreateRecordChapter(&record.CreateRecordChapterParams{ChapterName: &[]string{"test"}[0]}) + if err != nil { + t.Logf("%s", err) + } + assert.Error(t, err) _, err = client.Record.GetRecordStatus(&record.GetRecordStatusParams{}) if err != nil { t.Logf("%s", err) @@ -708,6 +713,11 @@ func Test_record(t *testing.T) { t.Logf("%s", err) } assert.Error(t, err) + _, err = client.Record.SplitRecordFile(&record.SplitRecordFileParams{}) + if err != nil { + t.Logf("%s", err) + } + assert.Error(t, err) _, err = client.Record.StartRecord(&record.StartRecordParams{}) if err != nil { t.Logf("%s", err)