@@ -2,6 +2,7 @@ package export
22
33import (
44 "fmt"
5+ "regexp"
56 "strings"
67 "time"
78
@@ -33,6 +34,8 @@ type GenerateShortDataParams struct {
3334 DebugMode bool `json:"DebugMode"`
3435}
3536
37+ var badChars = regexp .MustCompile (`[^a-zA-Z0-9-]` )
38+
3639func validationError (msg string ) error {
3740 return temporal .NewApplicationError (msg , "ValidationError" )
3841}
@@ -57,6 +60,11 @@ func GenerateShort(ctx workflow.Context, params GenerateShortDataParams) (*Gener
5760 return nil , validationError ("InSeconds must be < OutSeconds" )
5861 }
5962
63+ outputPath , err := paths .Parse (params .OutputDirPath )
64+ if err != nil {
65+ return nil , err
66+ }
67+
6068 exportData , err := wfutils .Execute (ctx , activities .Vidispine .GetExportDataActivity , vsactivity.GetExportDataParams {
6169 VXID : params .VXID ,
6270 Languages : []string {"nor" , "deu" , "eng" },
@@ -89,7 +97,8 @@ func GenerateShort(ctx workflow.Context, params GenerateShortDataParams) (*Gener
8997 return nil , err
9098 }
9199
92- titleWithShort := exportData .Title + "_short"
100+ titleWithShort := badChars .ReplaceAllString (exportData .Title , "_" ) + "_short"
101+
93102 clip := exportData .Clips [0 ]
94103 clip .InSeconds = params .InSeconds
95104 clip .OutSeconds = params .OutSeconds
@@ -165,7 +174,7 @@ func GenerateShort(ctx workflow.Context, params GenerateShortDataParams) (*Gener
165174 }
166175 }
167176
168- shortVideoPath := tempFolder .Append (titleWithShort + "_cropped.mov" )
177+ shortVideoPath := outputPath .Append (titleWithShort + "_cropped.mov" )
169178
170179 var subtitlePaths * paths.Path
171180 if s , ok := clipResult .SubtitleFiles ["no" ]; ok {
0 commit comments