Compare commits

...

3 Commits

Author SHA1 Message Date
cf5da68137 add filter list fixes to 0.10.1 section 2025-06-04 14:34:09 +01:00
14d9feb43e add missing SourceName arg to filter list 2025-06-04 14:32:32 +01:00
8204d6520d filter list SourceName arg now defaults to current scene
filter list now prints defaults for unchanged values
2025-06-04 14:32:08 +01:00
3 changed files with 40 additions and 11 deletions

View File

@@ -5,13 +5,19 @@ 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/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
# [0.10.0]
# [0.10.1] - 2025-06-04
### Added
- screenshot save command, see [ScreenshotCmd](https://github.com/onyx-and-iris/gobs-cli?tab=readme-ov-file#screenshotcmd)
# [0.9.0]
### Fixed
- filter list:
- sourceName arg now defaults to current scene.
- defaults are printed for any unmodified values.
# [0.9.0] - 2025-06-02
### Added
@@ -21,7 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- version command renamed to obs-version
# [0.8.2]
# [0.8.2] - 2025-05-29
### Added

View File

@@ -513,6 +513,10 @@ gobs-cli hotkey trigger-sequence OBS_KEY_F1 --shift --ctrl
- list: List all filters.
*optional*
- args: SourceName
- defaults to current scene
```console
gobs-cli filter list
```
@@ -561,7 +565,7 @@ gobs-cli projector list-monitors
- defaults to 0
*optional*
- args: <source_name>
- args: SourceName
- defaults to current scene
```console
@@ -585,7 +589,7 @@ gobs-cli projector open --monitor-index=1 "test_group"
- --quality:
- defaults to -1
- args: <source_name> <output_path>
- args: SourceName FilePath
```console
gobs-cli screenshot save --width=2560 --height=1440 "Scene" "C:\Users\me\Videos\screenshot.png"

View File

@@ -2,6 +2,7 @@ package main
import (
"fmt"
"maps"
"sort"
"strings"
@@ -20,19 +21,27 @@ type FilterCmd struct {
// FilterListCmd provides a command to list all filters in a scene.
type FilterListCmd struct {
SourceName string `arg:"" help:"Name of the source to list filters from."`
SourceName string `arg:"" help:"Name of the source to list filters from." default:""`
}
// Run executes the command to list all filters in a scene.
func (cmd *FilterListCmd) Run(ctx *context) error {
filters, err := ctx.Client.Filters.GetSourceFilterList(
if cmd.SourceName == "" {
currentScene, err := ctx.Client.Scenes.GetCurrentProgramScene()
if err != nil {
return fmt.Errorf("failed to get current program scene: %w", err)
}
cmd.SourceName = currentScene.SceneName
}
sourceFilters, err := ctx.Client.Filters.GetSourceFilterList(
filters.NewGetSourceFilterListParams().WithSourceName(cmd.SourceName),
)
if err != nil {
return err
}
if len(filters.Filters) == 0 {
if len(sourceFilters.Filters) == 0 {
fmt.Fprintf(ctx.Out, "No filters found for source %s.\n", cmd.SourceName)
return nil
}
@@ -42,10 +51,20 @@ func (cmd *FilterListCmd) Run(ctx *context) error {
t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignCenter, table.AlignLeft)
t.SetHeaders("Filter Name", "Kind", "Enabled", "Settings")
for _, filter := range filters.Filters {
for _, filter := range sourceFilters.Filters {
defaultSettings, err := ctx.Client.Filters.GetSourceFilterDefaultSettings(
filters.NewGetSourceFilterDefaultSettingsParams().
WithFilterKind(filter.FilterKind),
)
if err != nil {
return fmt.Errorf("failed to get default settings for filter %s: %w",
filter.FilterName, err)
}
maps.Insert(defaultSettings.DefaultFilterSettings, maps.All(filter.FilterSettings))
var lines []string
for k, v := range filter.FilterSettings {
lines = append(lines, fmt.Sprintf("%s %v", k, v))
for k, v := range defaultSettings.DefaultFilterSettings {
lines = append(lines, fmt.Sprintf("%s: %v", snakeCaseToTitleCase(k), v))
}
sort.Slice(lines, func(i, j int) bool {
return strings.ToLower(lines[i]) < strings.ToLower(lines[j])