Implemented the initial Go framework
This commit is contained in:
52
internal/builtin/merge.go
Normal file
52
internal/builtin/merge.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package builtin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sort"
|
||||
|
||||
"gitea.maximumdirect.net/eric/seriatim/internal/config"
|
||||
"gitea.maximumdirect.net/eric/seriatim/internal/model"
|
||||
"gitea.maximumdirect.net/eric/seriatim/internal/report"
|
||||
)
|
||||
|
||||
type placeholderMerger struct{}
|
||||
|
||||
func (placeholderMerger) Name() string {
|
||||
return "placeholder-merger"
|
||||
}
|
||||
|
||||
func (placeholderMerger) Merge(ctx context.Context, in []model.CanonicalTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
|
||||
if err := ctx.Err(); err != nil {
|
||||
return model.MergedTranscript{}, nil, err
|
||||
}
|
||||
|
||||
segments := make([]model.Segment, 0)
|
||||
for _, transcript := range in {
|
||||
segments = append(segments, transcript.Segments...)
|
||||
}
|
||||
|
||||
sort.SliceStable(segments, func(i, j int) bool {
|
||||
left := segments[i]
|
||||
right := segments[j]
|
||||
if left.Start != right.Start {
|
||||
return left.Start < right.Start
|
||||
}
|
||||
if left.End != right.End {
|
||||
return left.End < right.End
|
||||
}
|
||||
if left.Source != right.Source {
|
||||
return left.Source < right.Source
|
||||
}
|
||||
if left.SourceSegmentIndex != right.SourceSegmentIndex {
|
||||
return left.SourceSegmentIndex < right.SourceSegmentIndex
|
||||
}
|
||||
return left.Speaker < right.Speaker
|
||||
})
|
||||
|
||||
return model.MergedTranscript{
|
||||
Segments: segments,
|
||||
OverlapGroups: nil,
|
||||
}, []report.Event{
|
||||
report.Info("merge", "placeholder-merger", "merged placeholder canonical transcript(s)"),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user