[train-archive] Implement command to generate train.zip file
This commit is contained in:
@ -12,24 +12,29 @@ import (
|
||||
"os"
|
||||
)
|
||||
|
||||
func New(client mqtt.Client, jsonDir, imgDir string, recordTopic string) *Recorder {
|
||||
func New(client mqtt.Client, recordsDir, recordTopic string) (*Recorder, error) {
|
||||
err := os.MkdirAll(recordsDir, os.FileMode(0755))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to create %v directory: %v", recordsDir, err)
|
||||
}
|
||||
return &Recorder{
|
||||
client: client,
|
||||
jsonDir: jsonDir,
|
||||
imgDir: imgDir,
|
||||
recordsDir: recordsDir,
|
||||
recordTopic: recordTopic,
|
||||
cancel: make(chan interface{}),
|
||||
}
|
||||
}, nil
|
||||
|
||||
}
|
||||
|
||||
type Recorder struct {
|
||||
client mqtt.Client
|
||||
jsonDir, imgDir string
|
||||
recordTopic string
|
||||
cancel chan interface{}
|
||||
client mqtt.Client
|
||||
recordsDir string
|
||||
recordTopic string
|
||||
cancel chan interface{}
|
||||
}
|
||||
|
||||
var RecorNameFormat = "record_%s.json"
|
||||
|
||||
func (r *Recorder) Start() error {
|
||||
err := service.RegisterCallback(r.client, r.recordTopic, r.onRecordMsg)
|
||||
if err != nil {
|
||||
@ -51,16 +56,30 @@ func (r *Recorder) onRecordMsg(_ mqtt.Client, message mqtt.Message) {
|
||||
log.Errorf("unable to unmarshal protobuf %T: %v", msg, err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("record %s: %s\r", msg.GetRecordSet(), msg.GetFrame().GetId().GetId())
|
||||
|
||||
os.MkdirAll()
|
||||
imgName := fmt.Sprintf("%s/%s/cam-image_array_%s.jpg", r.imgDir, msg.GetRecordSet(), msg.GetFrame().GetId().GetId())
|
||||
err = ioutil.WriteFile(imgName, msg.GetFrame().GetFrame(), 0755)
|
||||
recordDir := fmt.Sprintf("%s/%s", r.recordsDir, msg.GetRecordSet())
|
||||
|
||||
imgDir := fmt.Sprintf("%s/cam", recordDir)
|
||||
imgName := fmt.Sprintf("%s/cam-image_array_%s.jpg", imgDir, msg.GetFrame().GetId().GetId())
|
||||
err = os.MkdirAll(imgDir, os.FileMode(0755))
|
||||
if err != nil {
|
||||
log.Errorf("unable to write json file %v: %v", imgName, err)
|
||||
log.Errorf("unable to create %v directory: %v", imgDir, err)
|
||||
return
|
||||
}
|
||||
err = ioutil.WriteFile(imgName, msg.GetFrame().GetFrame(), os.FileMode(0755))
|
||||
if err != nil {
|
||||
log.Errorf("unable to write img file %v: %v", imgName, err)
|
||||
return
|
||||
}
|
||||
|
||||
recordName := fmt.Sprintf("record_%s.jpg", msg.GetFrame().GetId().GetId())
|
||||
jsonDir := fmt.Sprintf("%s/", recordDir)
|
||||
recordName := fmt.Sprintf("%s/%s", jsonDir, fmt.Sprintf(RecorNameFormat, msg.GetFrame().GetId().GetId()))
|
||||
err = os.MkdirAll(jsonDir, os.FileMode(0755))
|
||||
if err != nil {
|
||||
log.Errorf("unable to create %v directory: %v", jsonDir, err)
|
||||
return
|
||||
}
|
||||
record := Record{
|
||||
UserAngle: msg.GetSteering().GetSteering(),
|
||||
CamImageArray: imgName,
|
||||
@ -70,7 +89,6 @@ func (r *Recorder) onRecordMsg(_ mqtt.Client, message mqtt.Message) {
|
||||
log.Errorf("unable to marshal json content: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(recordName, jsonBytes, 0755)
|
||||
if err != nil {
|
||||
log.Errorf("unable to write json file %v: %v", recordName, err)
|
||||
|
Reference in New Issue
Block a user