github.com/gkstretton/dark/services/goo@v0.0.0-20231114224855-2d1a2074d446/obs/source.go (about) 1 package obs 2 3 import ( 4 "fmt" 5 6 "github.com/andreykaipov/goobs/api/requests/filters" 7 "github.com/andreykaipov/goobs/api/requests/inputs" 8 "github.com/gkstretton/dark/services/goo/config" 9 "github.com/gkstretton/dark/services/goo/keyvalue" 10 "gopkg.in/yaml.v3" 11 ) 12 13 func setSessionNumber(number int, production bool) { 14 lock.Lock() 15 defer lock.Unlock() 16 if c == nil { 17 fmt.Println("cannot set obs session number because client is nil") 18 return 19 } 20 prefix := "" 21 if !production { 22 prefix = "dev" 23 } 24 25 _, err := c.Inputs.SetInputSettings(&inputs.SetInputSettingsParams{ 26 InputName: "Session Number", 27 InputSettings: map[string]interface{}{ 28 "text": fmt.Sprintf("%s#%d", prefix, number), 29 }, 30 }) 31 if err != nil { 32 fmt.Printf("error setting obs session number: %v\n", err) 33 return 34 } 35 } 36 37 func setCropConfig() { 38 lock.Lock() 39 defer lock.Unlock() 40 if c == nil { 41 fmt.Println("cannot set obs crop config because client is nil") 42 return 43 } 44 45 err := setSourceCrop("TopCam", config.CC_TOP_CAM) 46 if err != nil { 47 fmt.Printf("failed to set OBS TopCam crop settings: %v\n", err) 48 } 49 50 err = setSourceCrop("FrontCam", config.CC_FRONT_CAM) 51 if err != nil { 52 fmt.Printf("failed to set OBS FrontCam crop settings: %v\n", err) 53 } 54 } 55 56 func setSourceCrop(sourceName, cropConfigKey string) error { 57 cc := &config.CropConfig{} 58 b := keyvalue.Get(cropConfigKey) 59 if len(b) == 0 { 60 return fmt.Errorf("config key %s is empty", cropConfigKey) 61 } 62 err := yaml.Unmarshal(b, cc) 63 if err != nil { 64 return fmt.Errorf("failed to unmarshall crop config: %v", err) 65 } 66 67 settings := map[string]interface{}{ 68 "left": cc.LeftRel, 69 "top": cc.TopRel, 70 "right": cc.RightRel, 71 "bottom": cc.BottomRel, 72 } 73 fmt.Printf("setting %s in obs to settings %+v\n", sourceName, settings) 74 75 resp, err := c.Filters.SetSourceFilterSettings(&filters.SetSourceFilterSettingsParams{ 76 SourceName: sourceName, 77 FilterName: "Crop", 78 FilterSettings: settings, 79 }) 80 if err != nil { 81 return fmt.Errorf("failed to set source filter settings: %v", err) 82 } 83 fmt.Println(resp) 84 85 return nil 86 }