diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 36 |
1 files changed, 33 insertions, 3 deletions
@@ -17,6 +17,7 @@ const ( timeSep = "-->" metadataPath = "data/metadata.json" metadataPathCSV = "data/metadata.tsv" + segmentSize = "00:08:00" ) type Utterance struct { @@ -135,7 +136,7 @@ func oneFileRun(filepath string) []*Utterance { func dirRun(dirpath string) []*Utterance { resp := []*Utterance{} - vttFiles := getVttList(dirpath) + vttFiles := getFileList(dirpath, subExt) for _, vtt := range vttFiles { utterances := oneFileRun(vtt) resp = append(resp, utterances...) @@ -143,7 +144,7 @@ func dirRun(dirpath string) []*Utterance { return resp } -func getVttList(dirpath string) []string { +func getFileList(dirpath string, filter string) []string { resp := []string{} err := filepath.Walk(dirpath, func(path string, info os.FileInfo, err error) error { @@ -151,7 +152,7 @@ func getVttList(dirpath string) []string { fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", path, err) return err } - if strings.Contains(info.Name(), subExt) { + if strings.HasSuffix(info.Name(), filter) { resp = append(resp, path) } return nil @@ -162,9 +163,35 @@ func getVttList(dirpath string) []string { return resp } +func equalSlice(dirpath string) { + auFiles := getFileList(dirpath, "opus") + + fQueue := make(chan string, len(auFiles)) + for _, fpath := range auFiles { + fQueue <- fpath + } + + workers := 3 + for i := 0; i < workers; i++ { + go cutterQueue(fQueue, i) + } + + for { + if len(fQueue) == 0 { + fmt.Println("empty queue: work is done") + break + } + time.Sleep(1 * time.Second) + } + close(fQueue) + fmt.Println("queue closed") +} + func main() { vttFilepath := flag.String("f", "", "path to a vtt file") vttDir := flag.String("d", "", "path to a vtt dir") + sliceAudioDir := flag.String("slice-audio-dir", "", + "for equal segmentation only without subs") flag.Parse() utterances := []*Utterance{} @@ -172,6 +199,9 @@ func main() { utterances = dirRun(*vttDir) } else if vttFilepath != nil && *vttFilepath != "" { utterances = oneFileRun(*vttFilepath) + } else if sliceAudioDir != nil && *sliceAudioDir != "" { + equalSlice(*sliceAudioDir) + return } else { fmt.Println("no flags provided;") return |