in experiments/babel/main.go [243:291]
func moveFilesToAudioBucket(outputfiles []string) error {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Close()
parts := strings.Split(fmt.Sprintf("%s/%s", babelbucket, babelpath), "/")
bucketName := parts[0]
storagePath := strings.Join(parts[1:], "/")
for _, audiofile := range outputfiles {
objectName := fmt.Sprintf("%s/%s", storagePath, audiofile)
// Check if the file exists locally
if _, err := os.Stat(audiofile); os.IsNotExist(err) {
log.Printf("file %s does not exist, skipping", audiofile)
continue // Skip to the next file
}
f, err := os.Open(audiofile)
if err != nil {
log.Printf("unable to open file %s: %v", audiofile, err)
//return err
continue
}
defer f.Close()
//log.Printf("writing to %s %s", bucketName, objectName)
o := client.Bucket(bucketName).Object(objectName)
o = o.If(storage.Conditions{DoesNotExist: true})
wc := o.NewWriter(ctx)
if _, err = io.Copy(wc, f); err != nil {
return fmt.Errorf("io.Copy: %w", err)
}
if err := wc.Close(); err != nil {
return fmt.Errorf("Writer.Close: %w", err)
}
err = os.Remove(audiofile)
if err != nil {
return fmt.Errorf("os.Remove: %w", err)
}
}
return nil
}