mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2025-08-09 13:11:55 +00:00
Compare commits
No commits in common. "f01fd0ca84d203005de469658d33208538d771fa" and "7cd1c78f6a9f2f92787809edc3573b030a346dd0" have entirely different histories.
f01fd0ca84
...
7cd1c78f6a
@ -5,13 +5,6 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
# [0.13.0] - 2025-06-23
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- record split and record chapter commands, see [RecordCmd](https://github.com/onyx-and-iris/gobs-cli?tab=readme-ov-file#recordcmd)
|
|
||||||
- As of OBS 30.2.0, the only file format supporting *record chapter* is Hybrid MP4.
|
|
||||||
|
|
||||||
# [0.12.1] - 2025-06-21
|
# [0.12.1] - 2025-06-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
15
README.md
15
README.md
@ -313,21 +313,6 @@ gobs-cli record directory "/home/me/obs-vids/"
|
|||||||
gobs-cli record directory "C:/Users/me/Videos"
|
gobs-cli record directory "C:/Users/me/Videos"
|
||||||
```
|
```
|
||||||
|
|
||||||
- split: Split recording.
|
|
||||||
|
|
||||||
```console
|
|
||||||
gobs-cli record split
|
|
||||||
```
|
|
||||||
|
|
||||||
- chapter: Create a chapter in the recording.
|
|
||||||
|
|
||||||
*optional*
|
|
||||||
- arg: ChapterName
|
|
||||||
|
|
||||||
```console
|
|
||||||
gobs-cli record chapter "Chapter Name"
|
|
||||||
```
|
|
||||||
|
|
||||||
### StreamCmd
|
### StreamCmd
|
||||||
|
|
||||||
- start: Start streaming.
|
- start: Start streaming.
|
||||||
|
82
record.go
82
record.go
@ -4,20 +4,17 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/andreykaipov/goobs/api/requests/config"
|
"github.com/andreykaipov/goobs/api/requests/config"
|
||||||
"github.com/andreykaipov/goobs/api/requests/record"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RecordCmd handles the recording commands.
|
// RecordCmd handles the recording commands.
|
||||||
type RecordCmd struct {
|
type RecordCmd struct {
|
||||||
Start RecordStartCmd `cmd:"" help:"Start recording." aliases:"s"`
|
Start RecordStartCmd `cmd:"" help:"Start recording." aliases:"s"`
|
||||||
Stop RecordStopCmd `cmd:"" help:"Stop recording." aliases:"st"`
|
Stop RecordStopCmd `cmd:"" help:"Stop recording." aliases:"st"`
|
||||||
Toggle RecordToggleCmd `cmd:"" help:"Toggle recording." aliases:"tg"`
|
Toggle RecordToggleCmd `cmd:"" help:"Toggle recording." aliases:"tg"`
|
||||||
Status RecordStatusCmd `cmd:"" help:"Show recording status." aliases:"ss"`
|
Status RecordStatusCmd `cmd:"" help:"Show recording status." aliases:"ss"`
|
||||||
Pause RecordPauseCmd `cmd:"" help:"Pause recording." aliases:"p"`
|
Pause RecordPauseCmd `cmd:"" help:"Pause recording." aliases:"p"`
|
||||||
Resume RecordResumeCmd `cmd:"" help:"Resume recording." aliases:"r"`
|
Resume RecordResumeCmd `cmd:"" help:"Resume recording." aliases:"r"`
|
||||||
Directory RecordDirectoryCmd `cmd:"" help:"Get/Set recording directory." aliases:"d"`
|
Directory RecordDirectoryCmd `cmd:"" help:"Get/Set recording directory." aliases:"d"`
|
||||||
Split RecordSplitCmd `cmd:"" help:"Split recording." aliases:"sp"`
|
|
||||||
Chapter RecordChapterCmd `cmd:"" help:"Create a chapter in the recording." aliases:"c"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RecordStartCmd starts the recording.
|
// RecordStartCmd starts the recording.
|
||||||
@ -190,68 +187,3 @@ func (cmd *RecordDirectoryCmd) Run(ctx *context) error {
|
|||||||
fmt.Fprintf(ctx.Out, "Recording directory set to: %s\n", ctx.Style.Highlight(cmd.RecordDirectory))
|
fmt.Fprintf(ctx.Out, "Recording directory set to: %s\n", ctx.Style.Highlight(cmd.RecordDirectory))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RecordSplitCmd splits the current recording.
|
|
||||||
type RecordSplitCmd struct{} // size = 0x0
|
|
||||||
|
|
||||||
// Run executes the command to split the recording.
|
|
||||||
func (cmd *RecordSplitCmd) Run(ctx *context) error {
|
|
||||||
status, err := ctx.Client.Record.GetRecordStatus()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !status.OutputActive {
|
|
||||||
return fmt.Errorf("recording is not in progress")
|
|
||||||
}
|
|
||||||
if status.OutputPaused {
|
|
||||||
return fmt.Errorf("recording is paused, cannot split")
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = ctx.Client.Record.SplitRecordFile()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Fprintln(ctx.Out, "Recording split successfully.")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RecordChapterCmd creates a chapter in the recording.
|
|
||||||
type RecordChapterCmd struct {
|
|
||||||
ChapterName string `arg:"" help:"Name of the chapter to create." default:""`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run executes the command to create a chapter in the recording.
|
|
||||||
func (cmd *RecordChapterCmd) Run(ctx *context) error {
|
|
||||||
status, err := ctx.Client.Record.GetRecordStatus()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !status.OutputActive {
|
|
||||||
return fmt.Errorf("recording is not in progress")
|
|
||||||
}
|
|
||||||
if status.OutputPaused {
|
|
||||||
return fmt.Errorf("recording is paused, cannot create chapter")
|
|
||||||
}
|
|
||||||
|
|
||||||
var params *record.CreateRecordChapterParams
|
|
||||||
if cmd.ChapterName == "" {
|
|
||||||
params = record.NewCreateRecordChapterParams()
|
|
||||||
} else {
|
|
||||||
params = record.NewCreateRecordChapterParams().WithChapterName(cmd.ChapterName)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = ctx.Client.Record.CreateRecordChapter(params)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if cmd.ChapterName == "" {
|
|
||||||
cmd.ChapterName = "unnamed"
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Fprintf(ctx.Out, "Chapter %s created successfully.\n", ctx.Style.Highlight(cmd.ChapterName))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user