DOME2A7KFYV4EH4RISTE5LMF6UF3U6KNNKPV6UGCKCM5PYEPOP5AC for _, l := range seg.Labels {labelSummary := LabelSummary{Filter: l.Filter,Certainty: l.Certainty,Species: l.Species,}if l.CallType != "" {labelSummary.CallType = l.CallType}if l.Comment != "" {labelSummary.Comment = l.Comment
if !input.Brief {for _, l := range seg.Labels {labelSummary := LabelSummary{Filter: l.Filter,Certainty: l.Certainty,Species: l.Species,}if l.CallType != "" {labelSummary.CallType = l.CallType}if l.Comment != "" {labelSummary.Comment = l.Comment}if l.Bookmark {labelSummary.Bookmark = true}labels = append(labels, labelSummary)
// Create segment summarysegSummary := SegmentSummary{File: relPath,StartTime: seg.StartTime,EndTime: seg.EndTime,Labels: labels,
// Create segment summary only if not briefif !input.Brief {segSummary := SegmentSummary{File: relPath,StartTime: seg.StartTime,EndTime: seg.EndTime,Labels: labels,}output.Segments = append(output.Segments, segSummary)
output.TotalSegments = len(output.Segments)
// Count segments for totalif input.Brief {// Recount from filter stats since we didn't track segmentsfor _, fs := range output.Filters {output.TotalSegments += fs.Segments}} else {output.TotalSegments = len(output.Segments)}
// Sort segments by file, then start timesort.Slice(output.Segments, func(i, j int) bool {if output.Segments[i].File != output.Segments[j].File {return output.Segments[i].File < output.Segments[j].File}return output.Segments[i].StartTime < output.Segments[j].StartTime})
// Sort segments by file, then start time (only if not brief)if !input.Brief {sort.Slice(output.Segments, func(i, j int) bool {if output.Segments[i].File != output.Segments[j].File {return output.Segments[i].File < output.Segments[j].File}return output.Segments[i].StartTime < output.Segments[j].StartTime})}
# Brief summary (stats only, no segment details)./skraak calls summarise --folder ./recordings --brief > summary.json```**Summarise output includes:**- `segments` - array of all segments with labels (omitted with `--brief`)- `data_files_read` / `data_files_skipped` - file processing status- `total_segments` - total count- `filters` - per-filter statistics (segments, species, calltypes)- `review_status` - unreviewed/confirmed/dont_know counts- `operators` / `reviewers` - unique values found