feat: add export to jsonl

This commit is contained in:
Siwoo Jeon 2025-05-08 15:58:44 +09:00
parent a739938229
commit 8be039e8cf
Signed by: migan
GPG key ID: 036E9A8C5E8E48DA

View file

@ -22,6 +22,10 @@ import (
var date time.Time = time.Now() var date time.Time = time.Now()
type jsonlData struct {
Text string `json:"text"`
}
func getDate() string { func getDate() string {
year := strconv.Itoa(date.Year()) year := strconv.Itoa(date.Year())
month := strconv.Itoa(int(date.Month())) month := strconv.Itoa(int(date.Month()))
@ -104,6 +108,31 @@ func saveFileToTXT(path, name string, data []databases.Text) error {
return nil return nil
} }
func saveFileToJSONL(path, name string, data []jsonlData) error {
var content string
for _, data := range data {
bytes, err := json.Marshal(data)
if err != nil {
return err
}
content += string(bytes) + "\n"
}
f, err := os.Create(fmt.Sprintf("%s/%s.jsonl", path, name))
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString(content)
if err != nil {
return err
}
return nil
}
func ExportData(n *commando.Node) error { func ExportData(n *commando.Node) error {
var wg sync.WaitGroup var wg sync.WaitGroup
ch := make(chan error, 3) ch := make(chan error, 3)
@ -114,8 +143,8 @@ func ExportData(n *commando.Node) error {
return err return err
} }
if fileType != "txt" && fileType != "json" { if fileType != "txt" && fileType != "json" && fileType != "jsonl" {
return fmt.Errorf("파일 형식은 txt또는 json이여야 해요") return fmt.Errorf("파일 형식은 txt또는 json또는 jsonl이여야 해요")
} }
refined, err := option.ParseBool(*n.MustGetOpt("refined"), n) refined, err := option.ParseBool(*n.MustGetOpt("refined"), n)
@ -182,13 +211,28 @@ func ExportData(n *commando.Node) error {
ch <- err ch <- err
return return
} }
} else { } else if fileType == "txt" {
fmt.Println("NOTE: 파일 형식이 'txt'인 경우 머핀 데이터만 txt형식으로 저장되고, 나머지는 json으로 저장됩니다.") fmt.Println("NOTE: 파일 형식이 'txt'인 경우 머핀 데이터만 txt형식으로 추출되고, 나머지는 json으로 추출됩니다.")
err = saveFileToTXT(path, "muffin", data) err = saveFileToTXT(path, "muffin", data)
if err != nil { if err != nil {
ch <- err ch <- err
return return
} }
} else if fileType == "jsonl" {
var newData []jsonlData
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 머핀 데이터만 jsonl형식으로 추출되고, 나머지는 json으로 추출됩니다.")
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 일부데이터만 추출 됩니다.")
for _, data := range data {
newData = append(newData, jsonlData{data.Text})
}
err = saveFileToJSONL(path, "muffin", newData)
if err != nil {
ch <- err
return
}
} }
fmt.Println("머핀 데이터 추출 완료") fmt.Println("머핀 데이터 추출 완료")